I2C上拉电阻详细设计指南与案例分析
I2C上拉电阻详细设计指南与案例分析
I2C(Inter-Integrated Circuit)总线是一种广泛应用于微控制器与传感器、显示器等设备之间的串行通信总线。其上拉电阻的设计对于确保通信的稳定性和可靠性至关重要。本文将详细介绍I2C上拉电阻的设计原则、影响因素及具体应用案例,帮助工程师更好地理解和应用I2C总线技术。
I2C基础知识回顾
I2C总线是一种串行通信总线,使用多主从架构,由飞利浦公司在80年代初设计。其主要特点包括:
- 只需要两条总线(SDA和SCL)
- 没有严格的波特率要求,主设备生成总线时钟
- 所有组件之间存在简单的主/从关系,每个设备可通过唯一地址进行软件寻址
- 是真正的多主设备总线,提供仲裁和冲突检测
- 传输速度分为四种模式:标准模式(100Kbps)、快速模式(400Kbps)、高速模式(3.4Mbps)和超快速模式(5Mbps)
- 理论上支持的最大从机数为127
I2C总线硬件架构
I2C协议仅需要SDA(串行数据线)和SCL(串行时钟线)两个引脚。这两条数据线需要接上拉电阻。设备间的连接如下图所示:
I2C总线内部使用漏极开路驱动器,因此SDA和SCL可以被拉低为低电平,但不能被驱动为高电平,所以每条线上都要使用一个上拉电阻,默认情况下将其保持在高电平。
上拉电阻的值取决于多个因素,一般可以选择1.5K、2.2K或4.7K。对于5V电源,每个上拉电阻阻值至少1.53KΩ;对于3.3V电源,每个电阻阻值至少967Ω。
I2C总线上拉电阻的阻值确认
RP不宜过小,一般不低于1KΩ:如果RP阻值过小,VDD灌入端口的电流将较大,导致端口输出的低电平值增大。根据I2C协议,端口输出低电平的最高允许值为0.4V。当VDD=3V时,灌入电流不应超过3mA。
RP不宜过大,一般不高于10KΩ:端口信号的上升时间可近似用充电时间常数RPCL乘积表示。假设线上CL为20PF,对应400Kbps速率应用时,计算出的RP值为15KΩ。因此,一般应用中选取几KΩ量级的上拉电阻,如4.7KΩ。
I2C总线寄生电容
I2C总线寄生电容主要由master寄生电容、slave寄生电容和PCB走线电容组成。不同I2C通信模式对寄生电容的要求不同。
I2C总线布线与抗干扰设计
- 在手机PCB设计时,I2C信号线按通常的控制IO对待即可。
- 在特定情况下(如折叠、滑盖机型),需要特别注意信号线的保护,如等长度平行走线、两边加地线保护等。
- 上拉电阻应安置在OD输出端附近。当主从器件两端均为OD输出时,电阻放置在信号路径的中间位置。当主设备端是软件模拟时序,而从设备是OD输出时,应将电阻安置在靠近从设备的位置。
I2C总线上拉电阻对通信频率的影响
- I2C总线电平由低到高时:Vcc经过上拉电阻对I2C总线寄生电容充电,时间常数即为RC网络。
- I2C总线电平由高到低时:I2C总线的寄生电容通过MOSFET的导通电阻放电,放电速度很快。
- I2C总线的上升下降时间对比:上升时间远远大于下降时间,I2C总线的通信频率受上升时间影响最大。
I2C总线上拉电阻对VOL的影响
上拉电阻阻值越小,Rdson上的电压VOL就越大。如果VOL大于某一特定值,I2C从机就无法监测出I2C总线上的低电平。同时,上拉电阻阻值过小也会增加系统功耗。
I2C总线软件模拟中上拉电阻的应用
使用处理器的IO口模拟I2C波形时,上拉电阻阻值可以适当选的大一些。但需要注意,当Master的I2C使用的是IO软件模拟时,一定要保证该两个IO上电默认均为输入(或高阻)或者输出高电平。
I2C总线应用中上拉电阻电源问题
在部分应用中,还存在主从设备以及上拉电阻电源不一致的情况。例如,Camera模组不工作时,需要关闭模组供电VDDS,此时应该使用VDDS作为上拉电阻电源(VDDP=VDDS),这样上拉电阻电源与Slave电源即可同时关闭,切断了漏电路径。
I2C总线上拉电阻阻值计算实例
例如,在I2C Fast mode下,I2C总线电容Cb = 200pF,总线电压为Vcc = 3.3V,计算上拉电阻阻值。
通过上述分析,可以得到I2C总线上拉电阻的范围,结合系统功耗和通信速度,最终确定上拉电阻的阻值。
总结
I2C碰到的各种问题,多半是上拉电阻或者控制器时钟的问题。没上拉电阻或者上拉电阻过大,都会导致不稳定而出现寻址不到的问题。本质上来讲,I2C总线电容决定上拉电阻的最大值,I2C器件open-drain接口导通电阻决定上拉电阻的最小值。
I2C的上拉电阻选择对于所有设计I2C接口的芯片来说很重要!