这是本文档旧的修订版!
目录
I2C(Inter-IntegratedCircuit Bus)
常用标准
I2C(Inter-IntegratedCircuit Bus)最早是由PHilip半导体(现在被NXP收购)于1982年开发。 主要是用来方便微控制器与外围器件的数据传输。
目前最新的协议版本是2021版:NXP:I2C-bus specification and user manual(UM10204)
标准相关介绍见网站:I2C-Bus
版本差异
常用版本为Standard和Fast-mode (Fm),其他版本很少用,另速率最快的版本Ultra-fast mode (UFm)和其他版本差异大,主要用于LED驱动器1)。
| I2C Mode | Maximum Speed | Maximum Bus Capacitance | Drive |
| Standard | 100kbit/s | 400pF | Open drain |
| Fast-mode (Fm) | 400kbit/s | 400pF | Open drain |
| Fast-mode Plus (Fm+) | 1Mbit/s | 550pF | Open drain |
| High-speed mode (Hs) | 1.7Mbit/s | 400pF | Open drain |
| High-speed (Hs) | 3.4Mbit/s | 100pF | Open drain |
| Ultra-fast mode (UFm) | 5Mbit/s | n/a | Push-pull |
信号和连接
I2C有两个信号,单向的时钟SCL(主 > 从)和双向的数据SDA。连接拓扑如下图2)。
I2C总线允许多主机,但同一时刻只能有一个主机,通过SCL时钟同步和SDA线仲裁来决定谁是主机,其他设备则均为从机3)。
如需扩展或及中继则可以参考下图4)。
SCL/SDA内部电路如下图,写的同时可以读,以确认是否写成功,如下图:
硬件设计注意事项
上下拉电阻
除Ultra-fast mode (UFm)外,均是开漏输出,外部需要加上下拉电阻,阻值范围一般为1~10kΩ,常用为4.7kΩ5)
地址
同一I2C总线上的地址需不同,常用的为7位地址,拓展的为10位地址(不是所有的器件都支持)。
电平转换
主从器件之间是否需要电平转换6)?
1.8/3.3/5V之间的电平转换:用三极管(400KHz以下)、MOS管(1MHz以下)搭建转换电路,或直接用转换芯片(参考 Voltage Translation Buying Guide)
死锁
在通讯过程中,当从设备把SDA拉低,而此时主设备异常重启,主设备检测到SDA拉低,认为SDA被占用,同时主设备初始化SCL被拉高,从设备则一直等待SCL被拉低,从而陷入主从设备互锁的状态。
解决方案:
- 硬件:复位主设备的同时,硬件复位从设备
- 软件:主设备复位后,控制主设备的SDA和SCL,模拟正常的通讯,使得从设备释放SDA。具体步骤见mbedded: I2C Communication Protocol > Stuck I2C Buses
协议
- 起始条件:时钟信号线(SCL)为高电平时,数据线(SDA)产生一个下降沿7)。
- 停止条件:时钟信号线(SCL)为高电平时,数据线(SDA)产生一个上升沿。
- 数据有效性:当时钟信号为高电平的时候,数据线上的信号需要保持不变。
- 应答位:当主机传送8位数据结束后,主机拉高SDA,如果从机拉低SDA并在SCL高电平时保持低电平,这个信号为ACK信号(从机正确接收数据)。
- 非应答位:当主机传送8位数据结束后,主机拉高SDA,如果SDA保持高电平则该信号为NACK(数据传输出错)。
读写操作如下图8):
上述为常用的7为地址的读写,对于拓展的10位地址的读写,区别为前两个字节为10位地址(前缀11110表示这两个字节为10位地址),7位和10位对比如下图9)。
I2C、SMBus和PMBus的区别
SMBus:最初开发用于协助电池管理系统,使用I2C硬件,但增加了第二级软件,最终允许器件热插拔,而无需重新启动系统。
PMBus:扩展了SMBus,定义了一组专门用于管理功率转换器的器件命令,暴露了器件的测量电压、电流、温度等属性。
一般而言,I2C Primer、SMBus和PMBus器件可以共享总线而不会发生什么大问题。
三者之间的具体区别如下10):
测试
逻辑分析仪和示波器均可以测试I2C,软件工程师看协议推荐用逻辑分析仪,硬件工程师看信号推荐用示波器,带解码的示波器则可以兼顾软硬件工程师的需求。
单独逻辑分析仪的测试说明见DreamSourceLab:利用逻辑分析仪进行I2C总线的全面分析 “3. 逻辑分析仪准备”至“5.进阶分析”









评论