I2C为什么要接上拉电阻?
因为它是开漏输出 。
为什么是开漏输出?
I2C协议支持多个主设备与多个从设备在一条总线上 , 如果不用开漏输出 , 而用推挽输出 , 会出现主设备之间短路的情况 。 所以总线一般会使用开漏输出 。
【it芯片|【知识分享】I2C为什么要用开漏输出和上拉电阻?】为什么要接上拉电阻?
接上拉电阻是因为I2C通信需要输出高电平的能力 。 一般开漏输出无法输出高电平 , 如果在漏极接上拉电阻 , 则可以进行电平转换 。
I2C由两条总线SDA和SCL组成 。 连接到总线的器件的输出级必须是漏极开路 , 都通过上拉电阻连接到电源 , 这样才能够实现“线与”功能 。 当总线空闲时 , 这两条线路都是高电平 。
上拉电阻阻值怎么确定?
一般IO端口的驱动能力在2mA~4mA量级 。
阻值不能过小:
功耗问题 。 如果上拉阻值过小 , VDD灌入端口的电流将较大 , 功耗会很大 , 导致端口输出的低电平值增大(I2C协议规定 , 端口输出低电平的最高允许值为0.4V) 。 故通常上拉电阻应选取不低于1K的电阻(当VDD=3V时 , 灌入电流不超过3mA) 。
阻值不能过大:
速度问题 。 它取决于上拉电阻和线上电容形成的RC延时 , RC延时越大 , 波形越偏离方波趋向于正弦波 , 数据读写正确的概率就越低 , 所以上拉电阻不能过大 。
I2C总线上的负载电容不能超过400pF 。 当I2C总线上器件逐渐增多时 , 总线负载电容也相应增加 。 当总的负载电容大于400pF时 , 就不能可靠的工作 。 这也是I2C的局限性 。
建议上拉电阻可选用1.5K , 2.2K , 4.7K 。
I2C总线基本操作
根据I2C总线规范 , 总线空闲时两根线都必须为高 。 假设主设备A需要启动I2C , 他需要在SCL高电平时 , 将SDA由高电平转换为低电平作为启动信号 。
主设备A在把SDA拉高后 , 它需要再检查一下SDA的电平 。 为什么? 因为线与 , 如果主设备A拉高SDA时 , 已经有其他主设备将SDA拉低了 , 由于 1 & 0 = 0 那么主设备A在检查SDA电平时 会发现不是高电平 , 而是低电平 。 说明其他主设备抢占总线的时间比它早 , 主设备A只能放弃占用总线 。 如果SDA是高电平 , 说明主设备A可以占用总线 , 然后主设备A将SDA拉低 , 开始通信 。
因此 , 模拟I2C一定要将GPIO端口设置为开漏输出并加上拉电阻 。
|本文转载自网络 , 如涉及作品内容、版权和其它问题 , 请于联系工作人员 , 我们将在第一时间和您对接删除处理!
- 与饿了么的独家合作到期后,星巴克与美团开展外卖配送合作|最前线 | 饿了么
- 芯片|中国芯片自主让全球不安?美媒:不能让中国立规矩
- 郑州通报9例新增确诊病例和无症状感染者活动轨迹
- 本文转自:大众网大众网·海报新闻记者 赵洪栋 济南报道1月18日下午|房子再大也不怕没WiFi 济南首个FTTR全光智慧社区来了
- 小米科技|获赔3000万!小米科技诉深圳小米,入选知识产权惩罚性赔偿典型案例
- 本文转自:上游新闻全球影响力最大的电子产品展2022 CES展于2022年1月5日-8日...|仙籁Silent Angel首次亮相2022国际CES展
- 本文转自:全国能源信息平台【能源人都在看|光子回收?突破光伏理论效率极限新思路,提高钙钛矿电池光电转化率
- 小米科技|高配折叠屏旗舰手机退场,12GB+512GB+67W快充,官方直降4000元
- 近日|欧拉全新车型闪电猫量产版谍照曝光最快5月上市
- 经典微小说:鱼的味道