标准:bus:i2c:start
这是本文档旧的修订版!
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)。
硬件设计注意事项
协议
- 起始条件:时钟信号线(SCL)为高电平时,数据线(SDA)产生一个下降沿4)。
- 停止条件:时钟信号线(SCL)为高电平时,数据线(SDA)产生一个上升沿。
- 数据有效性:当时钟信号为高电平的时候,数据线上的信号需要保持不变。
- 应答位:当主机传送8位数据结束后,主机拉高SDA,如果从机拉低SDA并在SCL高电平时保持低电平,这个信号为ACK信号(从机正确接收数据)。
- 非应答位:当主机传送8位数据结束后,主机拉高SDA,如果SDA保持高电平则该信号为NACK(数据传输出错)。
读写操作如下图5):
上述为常用的7为地址的读写,对于拓展的10位地址的读写,区别为前两个字节为10位地址(前缀11110表示这两个字节为10位地址),7位和10位对比如下图6)。
测试
逻辑分析仪和示波器均可以测试I2C,软件工程师看协议推荐用逻辑分析仪,硬件工程师看信号推荐用示波器,带解码的示波器则可以兼顾软硬件工程师的需求。
单独逻辑分析仪的测试说明见DreamSourceLab:利用逻辑分析仪进行I2C总线的全面分析 “3. 逻辑分析仪准备”至“5.进阶分析”
标准/bus/i2c/start.1760862076.txt.gz · 最后更改: 2025/10/19 16:21 由 hwwiki
评论