最近项目遇到一个问题,涉及I2C EEPROM的读操作。
有两个产品,一个Rohm的芯片,一个24LC256,它们在读操作时存在一点差异:先看LC256的说明:
再看Rohm的说明:
在Rohm的说明中,明确说明最后一个字节之后,STOP之前,必须给器件发一个SCL周期的高电平。
但是在LC256中,英语说的是“The master will not acknowledge the transfer, but does generate a Stop condition and the 24XX256 discontinues transmission ”,然后图中给的“NO ACK”,但是又给了一个“高电平”的示意?
这里应该是理解为不用这个ACK时钟周期,直接发STOP? 还是需要这个ACK时钟周期,但是需要给器件发SDA高电平,也就是NACK? (这个“No ACK”,难道就是NACK?)
我是菜鸟,哪位用过的大虾,给指导指导?
现在的问题是,以前我的设计都是针对LC256的时序的,也就是最后一个字节接收后,HOST这端直接就发了STOP。
但是这种方式,在读Rohm芯片时,就时好时坏。谢谢!!
|