基于I2C总线信号时序的详细分析
出处:网络整理 发布于:2025-04-27 16:53:47
I2C(Inter-Integrated Circuit)总线是一种广泛使用的同步、半双工、串行通信协议,由Philips(现NXP)设计,具有结构简单、引脚少的优点。其时序逻辑直接影响通信可靠性,以下从协议层和电气层展开分析。
1. I2C总线基础结构
两线制:
SCL(Serial Clock):时钟线,由主设备控制。
SDA(Serial Data):数据线,主从设备分时复用。
设备角色:
主设备(Master):发起通信,控制时钟。
从设备(Slave):响应主设备,地址(7位/10位)。
2. 关键时序参数详解
I2C时序由起始条件、数据位、应答位、停止条件构成,需严格满足时间规范(以标准模式100kHz为例):
(1)起始条件(START)与停止条件(STOP)
START:SCL高电平时,SDA由高→低跳变,标志通信开始。
STOP:SCL高电平时,SDA由低→高跳变,标志通信结束。
时序要求:
参数 标准模式(100kHz) 快速模式(400kHz) t??(STA)(起始建立时间) ≥4.7μs ≥0.6μs t?(STA)(起始保持时间) ≥4.0μs ≥0.6μs t??(STO)(停止建立时间) ≥4.0μs ≥0.6μs
(2)数据位传输(DATA)
规则:
SCL低电平时,SDA允许变化(发送方设置数据)。
SCL高电平时,SDA必须稳定(接收方采样数据)。
时序参数:
参数 标准模式 快速模式 t??(DAT)(数据建立时间) ≥250ns ≥100ns t?(DAT)(数据保持时间) ≥0ns(通常≥100ns) ≥0ns(通常≥50ns) t?(SDA上升时间) ≤1μs ≤300ns t?(SDA下降时间) ≤300ns ≤100ns
(3)应答(ACK)与非应答(NACK)
ACK:在第9个时钟周期,接收方拉低SDA表示应答。
NACK:SDA保持高电平表示非应答(用于终止传输或错误指示)。
时序关键点:
主设备在SCL高电平期间检测SDA状态。
从设备需在SCL上升沿前完成SDA电平设置。
3. 完整数据传输流程示例
以主设备向从设备(地址0x50)写入1字节数据(0x55)为例:
START → 发送从设备地址(0xA0,含写位0) → ACK → 发送数据0x55 → ACK → STOP。
波形关键点:
地址和数据均高位(MSB)先发。
每个字节后紧跟ACK/NACK。
4. 异常时序分析与解决
(1)时钟同步(Clock Synchronization)
问题:多主设备竞争时,SCL可能被不同设备拉低。
解决:通过“线与”逻辑实现时钟同步,SCL低电平长的设备主导通信。
(2)总线死锁(Bus Hang)
原因:从设备异常拉低SDA(如未完成操作)。
解决:主设备发送≥9个SCL脉冲强制释放总线(见I2C协议复位流程)。
(3)上升时间过长
影响:导致时序违规,通信失败。
改进:减小上拉电阻(如从4.7kΩ改为1kΩ)或降低总线电容。
5. 电气特性与设计要点
上拉电阻选择:
计算公式:Rmax=0.8473×Cbt(Cb为总线电容)。
典型值:3.3V系统常用2.2kΩ~4.7kΩ。
抗干扰措施:
6. 高阶特性扩展
时钟拉伸(Clock Stretching):
从设备拉低SCL以延长时钟周期(常见于低速从设备)。
高速模式(3.4MHz):
需使用推挽输出(如I2C over USB PD协议)。
总结:I2C时序设计
严格遵循建立/保持时间,尤其注意SCL高电平期间SDA的稳定性。
上拉电阻优化是保证信号边沿速度的关键。
多主系统需处理冲突,必要时添加仲裁逻辑。
版权与免责声明
凡本网注明“出处:老太阳集团tcy8722网站电子市场网”的所有作品,版权均属于老太阳集团tcy8722网站电子市场网,转载请必须注明老太阳集团tcy8722网站电子市场网,,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
- 简述计算机总线的分类2025/9/4 17:12:23
- 深度剖析三进线两母联供电系统设计方案2025/9/3 10:37:39
- 汇流排是什么汇流排好还是线接好2025/8/28 17:13:00
- 安森美 USB - C 电池充电器解决方案2025/8/28 15:45:10
- I2C 总线加上拉电阻的必要性2025/8/25 16:42:09