当前位置: 首页 > 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.lryc.cn/news/429264.html

相关文章:

  • AC自动机-1
  • 注解@Service@Component@Slf4j@Data
  • 【Nodejs】六、express框架
  • 进阶 pro max
  • Agentic Security:一款针对LLM模型的模糊测试与安全检测工具
  • Spring Cloud Config 与 Spring Cloud Bus 来实现动态配置文件
  • Qt:Qt背景
  • 【数据结构】选择排序
  • 国产GD32单片机开发入门(二)GD32单片机详解
  • 8个我平时每天都会看的网站,涵盖办公、娱乐、学习等
  • Vue2——父子之间间的调用
  • xfs Vs ext4?
  • 数据结构stack (笔记)
  • SQL - 创建 表和数据库
  • 使用 Arch Linux 几个月有感 | 为什么我选择 Arch Linux ,Arch 的优缺点有什么 | 一些Linux发行版推荐
  • SQLserver中的增删改查和数据类型
  • 个人收藏个性化、实用性、可玩性在线网站持续更新,与君共享
  • win10蓝牙只能发送,无法接收
  • 【论文阅读03】用于海洋物体检测的多注意力路径聚合网络
  • Linux 进程(2)
  • [CSCCTF 2019 Qual]FlaskLight1
  • layui table表单 checkbox选中一个其它也要选中
  • 【pip镜像设置】pip使用清华镜像源安装
  • c++ 智能指针--std::shared_ptr
  • 网络工程师学习笔记(二)
  • 90.WEB渗透测试-信息收集-Google语法(4)
  • 阿里Qwen2开源大模型本地部署及调试全攻略
  • 『功能项目』移动后的光标显示【04】
  • HTML 基本语法特性与 title 标签介绍
  • CSS的:placeholder-shown伪类:精确控制输入框占位符样式