当前位置: 首页 > news >正文

I2C学习:上拉电阻选取

一.I2C简介

I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。I2C总线在使用时,需要接上拉电阻,这是因为I2C接口是开漏输出,如图1所示。

图1 I2C开漏输出

I2C有5种速度模式:标准(100KHz)、快速(400KHz)、快速增强(1MHz)、高速(3.4MHz)以及超快速(5MHz)。不同模式,对上拉电阻阻值的要求不同,另外,上拉电压VCC不同,对上拉电阻阻值的要求也不同。

二.上拉电阻选取不当的后果

如果上拉电阻过小,会带来哪些不利影响呢?

1)  通信速度下降

上拉电阻与总线电容形成RC时间常数,影响总线的充电时间及高电平阈值。电阻越小,充电时间越长,从而影响通讯速度。如果上拉电阻过小,可能无法保证从设备在主设备完成总线动作前识别到足够高的电平,导致通讯失败。

2) 功耗增加

上拉电阻越小,总线上的电流越大,从而导致功耗增加,对一些电池供电设备不友好,会加快电池电量耗尽。

3) 保护作用减弱

上拉电阻还具有一定的保护作用,能够防止总线在高电压毛刺下的损坏。如果上拉电阻过小,这种保护作用会减弱,可能会对I2C总线上的设备造成损害。

上拉电阻阻值过大,又会如何?

上拉电阻如果过大,会造成上升沿时间变长。速度越快,要求上升沿时间越短。如果上拉电阻过大,会导致通讯失败。

那么如何选择上拉电阻呢?

三.上拉电阻计算

我们以DS3132为例,DS3132是一款RTC驱动芯片,采用I2C接口进行读写,以下是其I2C相关参数。

图2 DS3132的I2C相关参数

1) 上拉电阻最小值计算

如图1红线箭头所示,假设SCL是低电平,即MOS管导通,则有R=(VCC-VL)/IL;

其中VL定义为漏极开路或集电极开路时,有3mA下拉电流时的低电平输出电压。IL为该端口的灌电流,即IL=3mA。因此,当VCC不变,VL取最大值时,上拉电阻有最小值。

取VCC为3.3V,VLmax=0.4V,则Rmin=(3.3V-0.4V)/3mA=0.96KΩ。

注意:VLmaxVOL,而不是VIL

图3 I2C官方协议中电平标准

2)上升沿时间计算

通常,I2C电平,低于0.3VCC为低电平,高于0.7VCC为高电平。

Vt1=0.3*VCC=VCC(1-e-t1/RC),则t1=0.3566749*RC;

Vt2=0.7*VCC=VCC(1-e-t2/RC),则t2=1.2039729*RC;

上升沿时间tr =t2-t1=0.8473*RC,由此得出R= tr /(0.8473*C);

3)上拉电阻最大值计算

根据上升沿时间计算公式,得出R= tr /(0.8473*C);

其中tr取I2C挂载的所有设备中tr最小值,C为总的负载电容。

DS3132中要求快速模式下上升沿时间tr=300ns,负载电容为10pF。

  • 假设I2C总线上只挂载了DS3132一个设备,

那么Rmax= tr /(0.8473*C)=300ns/(0.8473*10pF)=35.4KΩ;

  • 如果按各速度模式最大允许的挂载量来计算,如表1所示,列出了各速度模式下的最大允许负载电容。快速模式下,C=200pF。

则Rmax= tr /(0.8473*C)=300ns/(0.8473*200pF)=1.77KΩ;

表1 各速度模式下最大允许负载电容

速度模式

标准模式

快速模式

高速模式

超快速模式

最大允许总线负载电容

400pF

200pF

100pF

120pF

小结:上拉电压决定上拉电阻的最小值,总线负载电容决定上拉电阻的最大值。

四. 参考资料

1. I²C总线上拉电阻阻值如何选择?

2. 教你精确计算 I2C 上拉电阻阻值-腾讯云开发者社区-腾讯云

3. https://www.cnblogs.com/duwenqidu/p/11043889.html


http://www.mrgr.cn/news/3730.html

相关文章:

  • 密码学之哈希算法
  • 總結熱力學_3
  • Vscode——如何实现 Ctrl+鼠标左键 跳转函数内部的方法
  • UX已死,产品重生
  • freecad遭遇网络不同无法安装插件Addon Manager: Unexpected 0 response from server
  • OpenJDK 和 OracleJDK 的区别、下载方式
  • playbook(剧本)基本应用、playbook常见语法、playbook和ansible操作的编排
  • AWS CDK测试初探:掌握Assertion测试模式
  • 【异步IO】libeventlibevlibuv的相关认识
  • 【uniapp】图片合成并导入base64
  • 基于RDMA技术的Mayastor解决方案
  • Ajax技术详解
  • python 将mysql转为csv、json导入到Doris数据库
  • 英国海外媒体通稿宣发:顶级媒体宣发
  • Java并发编程(19)—— CompletableFuture异步多线程
  • 【从Qwen2,Apple Intelligence Foundation,Gemma 2,Llama 3.1看大模型的性能提升之路】
  • 「Qt Widget中文示例指南」如何实现一个旋转框(二)
  • SQL - 事件
  • 力扣面试经典算法150题:跳跃游戏
  • 【JavaEE初阶】TCP协议