这几天一直忙着用FPGA去模拟I2C写时序,是需要连续向不同的地址单元写入数据。但调试时遇到一个问题就是只要第一个字节能够正常写入,而后面的字节都写不进去。
分析原因:(1)Stop信号没有停止,造成不能再次正常启动;(2)Start信号没有正常启动。在网上找了好多资料没有人提到这个,后来就去读I2C的时序,发现在第一个字节写结束以后有一段时间的free time期,这段时间不能进行操作;在这个时间过了以后SCL和SDA信号线为低,如果再想启动,必须先拉为高才行
写出来供大家参考,希望大家不要犯这种错误了! |