0
点赞
收藏
分享

微信扫一扫

I²C那点事儿(二)

张宏涛心理 2022-02-15 阅读 46

I²C那点事儿(二)

要点注意

  1. 主要的读写时序务必注意,我们实际使用过程中比较难理解的是读时序。也就是说,主机从从机读写数据的时序。
  2. 以下就以单字节的读写进行说明,多字节和连续读写就是在单字节基础上改写状态机的问题而已。不再赘述,至于再难一点就是挂载在目前事实上的总线AMBA上的问题。这个后序的协议这个栏目会做完善的补充。

图例说明

  1. 先说整体时序,也就是SDA数据变化必须在SCL为低的时候完成。在SCL为高的时候,SDA必须保持不变。
    在这里插入图片描述

  2. 单字节写时序:
    在这里插入图片描述
    上述单字节的写其实不是难点,很好理解,先给起始位,然后给出出厂就固定的器件地址1010,(根据各个片子不一样,本文以AT24C04这颗芯片进行说明)。再给出三位片选信号,给出一个读写标志位,此处为写,因此为0,再由从机给一个应答ACK给主机,告诉主机收到了。后续也是一样的道理,给出存储器地址,再给出数据即可。这样就完成了将一个单字节数据写入到指定存储器地址。

  3. 单字节读时序
    在这里插入图片描述
    请注意单字节的读时序与写时序的不同之处。它拥有两个起始位和一个NO_ACK的不做应答位。具体含义为,先由主机给出起始位和器件地址,然后注意到此处是写操作,我们尽管是单字节读时序的说明,但第一步是需要将我们要读取的存储器地址写入器件,然后第二次再从起始位开始,此时只需要发送一个读请求,然后从机就将我们需要的存储器地址上的数据一个字节一个字节的送回主机。注意到NOACK这个信号的意思是主机发给从机的,告诉从机停止向主机发送存储器地址上的数据。

  4. 这上述两点是I2C协议初学者的易错之处,标记记录下来。

参考资料

小梅哥AC620板卡学习资料

https://www.circuitbasics.com/basics-of-the-i2c-communication-protocol/

举报

相关推荐

0 条评论