首页/文章/ 详情

I2C上升沿过长与上拉电阻

1年前浏览3114

    关于I2C,对于硬件工程师来说,属于低速信号,一般也不会有什么问题,最常见的问题也就是在测试信号质量时发现I2C的上升沿过缓,不符合I2C的标准,那么一般如何解决呢?


    先看下图信号要求(来自I2C标准协议)

    如上图,I2C分为标准模式和快速模式

    标准模式通信速率最大是100Khz,上升沿最大是1000nsbus电容最大400pF

    快速模式通信速率最大是400kHz,上升沿最大是300nsbus电容最大400pF

    I2C 总线上数据的传输速率在标准模式下可达 100kbit/s 在快速模式下可达 400kbit/s 


    上拉电阻取值范围来龙去脉

    1I2C上拉电阻的下限有一个计算公式:

    Rmin{Vdd(max)-0.4V}/3mA  (根据协议,vdd为电源的最大值,Vmax=1.1*Vdd3mA为驱动最大电流为3mA

    在电源为1.8V时:Rmin=527Ω

    在电源为3.3V时:Rmin=1.07K

    在电源为5V时:Rmin=1.7K

 

    2、那上拉电阻的上限如何确定呢?

    首先我们需要明白上升沿的时间是如何来的。I2C的总线结构如下图,是一个漏极开路的结构。也就是说SDA/SCL由低电平变到高电平,是通过关闭MOS管,通过Rp上拉到电源。

 

    而I2C总线上接入设备时,肯定是会引入电容的,接的设备越多,引入的电容也越多。所以输出高电平的过程,实际上是一个RC充电的电路,如下图,电源Vdd通过上拉电阻Rp对负载电容Cb充电的过程。

    电平有0.1Vdd充到0.9Vdd(上升沿)的时间计算公式

    Tr= RC*Ln[(Vdd-0.1Vdd)/(Vdd-0.9Vdd)]

    Tr=2.2RC

    标准模式:由Tr<1000ns R<1000ns/2.2C

    快速模式:由Tr<300ns R<300ns/2.2C

    不同电路,C的值肯定是不同的,所以要根据实测信号上升沿来确定。

    注意:协议中最大电阻与负载电容的曲线,对应Tr是很宽松的,应是取的Tr0.3Vdd上升到0.7Vdd的时间(协议中低电平门限0.3Vdd,高电平门限0.7Vdd),可能与上述公式有些出入,上述公式取的是0.1Vdd上升到0.9Vdd

 

    综上所述,如果我们发现I2C的上升沿过缓,可以通过减小上拉电阻Rp来实现,但不应小于对应的Rmin;或者降低总线电容(减少总线上的设备数量);最后还可以通过增加器件来实现(详见I2C标准协议第41页)


    I2C协议原文件分享如下: 见附件

 

    


来源:硬件工程师炼成之路

附件

免费 I2C协议原文件.txt
电源电路通信SCL
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-04-29
最近编辑:1年前
获赞 22粉丝 44文章 179课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈