I2C
This is my study note of I2C.
总线空闲与信号起始终止
- I2C协议规定SDA和SCL都为高电平时总线空闲(not busy)。
- I2C协议规定SCL保持高电平、SDA由高变低为起始信号(start),所有命令和数据的传输必须以起始信号为首。
- I2C协议规定SCL保持高电平、SDA由低变高为终止信号(stop)。所有命令和数据的传输必须以终止信号为尾。
数据有效
1 | I2C协议规定在总线上出现起始信号start后,若SCL在高电平期间SDA保持电平不变,则SDA的状态表示有效数据(data valid)。在传输数据时SDA的改变必须只能发生在SCL为低电平期间,每一bit数据有1个时钟脉冲时长。 |
应答和非应答
- 应答
1
I2C协议规定每个被寻址设备在接收1字节数据后都必须向发送字节的设备发送应答(ACK)信号,确认的器件必须在应答时钟脉冲期间下拉SDA线,使得SDA线在应答相关时钟脉冲SCL为高电平期间稳定为低电平。
- 非应答
1
I2C协议规定与ACK信号相反的信号为非应答(not ACK)信号。在主器件从从器件中读取数据时,主器件必须在读取的最后1字节数据后在SDA总线上产生not ACK信号以示意从器件停止发送数据。not ACK信号是在SCL为高电平期间保持SDA也为高电平。
地址广播
1 | 地址广播是I2C协议规定的寻址方式。它是指主设备在产生start信号后,各个从设备开始关注总线SDA信号,此时主设备在总线上生成需接受/发送数据的从设备的地址(Address),相当于向总线上所有从设备广播了这一地址。每个从设备将总线上的地址与自己的地址相对比,不一致的退出接收,一致的继续接收,直到8bit地址数据广播完毕,仍然留下的那一个从设备就是主设备的寻址目标。 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 风声向寂!
评论
ValineDisqus