我必须在STM32L053上实现一个I2C从属设备,以在从属uC上读写一些任意字节的内存,并且要求它也应适用于不支持时钟延长({{1 }})。
我在以下位置找到了一个很好的例子:
这是本文的实现:
对于我来说,此实现对100KHz数据速率下的读取操作没有问题,但来自主设备的写入操作仅能正常工作约50%。有时写入的字节是正确的,有时不正确...
此示例与我的环境之间的区别是,尽管uC有所不同,但STM32L0仍然存在偏差,但由于事实,我还必须使用较低的sysclock,我还必须满足低功耗的另一要求。我的uC以4Mhz运行,示例中的uC以32Mhz运行。 因此,恐怕由于系统时钟慢,我无法在接收下一个传入数据之前在ISR中足够快地从主服务器读取传入的写数据...
如果可以在我的4Mhz环境中完全实现这样的No-Clock-Stretching-I2C-Slave,有人可以给我一个提示吗,如果可以,我该怎么做才能使写入操作也可靠地工作?
以下是NOSTRETCH=1
设置的参考手册的说明:
这是读/写功能和I2C ISR的实现:
NOSTRETCH=1