IIC理论基础
概要
IIC 是两线串行通信协议(serial data line (SDA) serial clock line (SCL)),支持多设备于同一总线通信,每个设备拥有唯一地址来标识。
速度模式
- 标准模式:最慢的模式
- 快速模式:要求总线容值和设备兼容性能匹配
- 快速+模式:同上
下面两个稍微有些特殊:
- 高速模式:两者需协商后才能启用该模式
- 超快模式:该模式只能进行写操作,并且一些IIC功能也不可用
物理层
两线连接
开漏连接
SDA和SCL都要开漏连接,两者各自连接到一个NMOS,以便可以在需要的时候接地来拉低总线。开漏连接就是IIC能连接多个设备的原因。
协议
开始和停止
- 开始:将 SDA 和 SCL 都拉低(先拉 SDA)
- 结束:将 SDA 和 SCL 都释放为高电平(先放 SCL)
逻辑1和0
- SDA 释放高时为逻辑 1,下拉时为逻辑 0
- SCL 上升沿和下降沿采样时 SDA 的状态必须相同,否则无效(因为会被识别为开始或结束信号)
通信帧
一个帧9个bit,为了开始通信,需要发送开始信号后接设备地址(7bit or 10bit,10bit则要发两个bytes)
- 若 R/W 位为 1 则是主机要求读取从机数据,即 R,反之
- 第九比特为 ACK,由目标设备(即写入时是从机拉低,读取时是主机拉低)在 SCL 周期内拉低 SDA,表示收到数据;若SDA一直为高电平,则表明没有对应地址的设备收到请求
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Xiao's Blog!