当前位置:网站首页>I2C【2】-IIC为什么需要用开漏输出和上拉电阻bug
I2C【2】-IIC为什么需要用开漏输出和上拉电阻bug
2022-06-21 20:14:00 【大城市的小蜗牛】
项目场景:
最近在调ICM20602模块(一个六轴陀螺仪和加速度计), 使用IIC通信协议, 这个过程中遇到一个困扰我很长时间的问题。
问题描述
IIC协议正确, 但是一直读取失败。
原因分析:
最后发现因为没配置GPIO为开漏输出
推挽输出和开漏输出
推挽输出: 输出逻辑0,则N-MOS激活;输出逻辑1,则P-MOS激活。
开漏输出:在不接上拉电阻时, 输出逻辑0,则N-MOS激活;输出逻辑1,P-MOS不会激活, 不会输出高电平。在接上拉电阻时, 输出逻辑0,则N-MOS激活;输出逻辑1,P-MOS激活, 可以输出高电平。
也就是说开漏输出如果不接上拉电阻, 没有输出高电平的能力。如果需要开漏输出有输出高电平的能力需要接一个上拉电阻. 目前很多单片机GPIO可以通过软件配置上拉电阻.
左图为开漏输出(接上拉电阻), 右图为推挽输出
开漏输出的作用
防止短路: 在一些情况下(比如总线), 多个GPIO口可能会连接在同一根线上, 存在某个GPIO输出高电平, 另一个GPIO输出低电平的情况. 如果使用推挽输出, 你会发现这个GPIO的VCC和另一个GPIO的GND接在了一起, 也就是短路了(凉凉了). 如果换成开漏输出呢? VCC和GND多了个电阻, 这样电路就是安全的.所以总线一般会使用开漏输出.
线与: 开漏输出还能实现 线与 (自行百度), 减少一个与门, 简化电路.
IIC为什么用开漏输出和上拉电阻
- IIC协议支持多个主设备与多个从设备在一条总线上, 如果不用开漏输出, 而用推挽输出, 会出现主设备之间短路的情况.
- 至于为什么需要上拉电阻, 那是因为IIC通信需要输出高电平的能力.
为了实现多个主设备抢占总线时的仲裁.IIC只有两根线(SCL和SDA), 怎么判断哪个主设备占用总线(当然是先来后到了).
假设主设备A需要启动IIC, 他需要在SCL高电平时, 将SDA由高电平转换为低电平作为启动信号. 主设备A在把SDA拉高后, 它需要再检查一下SDA的电平。
为什么? 因为线与. 如果主设备A拉高SDA时, 已经有其他主设备将SDA拉低了. 由于 1 & 0 = 0 那么主设备A在检查SDA电平时, 会发现不是高电平, 而是低电平. 说明其他主设备抢占总线的时间比它早, 主设备A只能放弃占用总线. 如果是高电平, 则可以占用。
这就是开漏输出在IIC通信中的另一个作用。
SDA是高电平, 说明主设备A可以占用总线, 然后主设备A将SDA拉低, 开始通信.SDA是低电平, 说明有人已经捷足先登了, 主设备A不能占用总线, 结束通信.
因此, 模拟IIC一定要将GPIO端口设置为开漏输出并加上上拉电阻.(硬件IIC会自动配置为开漏输出)。
解决方案:
最后说一下为什么之前使用推挽输出的IIC读取RTC没有问题,这个因为上拉电阻的阻值不同,RTC的上拉电阻即使推挽输出也可以正常拉高拉低电平。这个根据上文讲述的,可以查MCU的datasheet,确认IO的PMOS和NMOS的阻抗,计算一下电压。
还有一个简单粗暴的办法,直接使用示波器看波形也可以发现问题
边栏推荐
猜你喜欢

杰理之蓝牙发射器的搜索设备的时间修改方法【篇】

7.目标检测

龙蜥社区成立云原生SIG,引入3大核心技术

Intelij idea efficient skills (I)

Improve four performance! D-wave releases next generation quantum annealing prototype

Huawei Hongmeng development lesson 3

What websites or software are available to translate English literature into Chinese?

电子招标采购商城系统:优化传统采购业务,提速企业数字化升级

六个拿来就能用的有趣网页特效

处理订单业务多面手,订货管理系统实现企业订货库存统一管理
随机推荐
Shanghai Xiangwei electromechanical Co., Ltd., a state-owned enterprise, has reached strategic cooperation with China and foreign countries and donated 200million yuan
数商云纸业集团供应商管理系统:推进企业信息化建设,全面提升供应商管理效率
C#的DataGridView中字体大小
Do you really know binary tree? (Part I)
搭建Eureka-Server集群
ADT Spec RI AF CheckRep Safety from Rep Exposure
有哪些将英文文献翻译为中文的网站或软件?
Build Eureka server cluster
In the anchoring stage of retail digitalization, more attention is paid to how to mine and transform traffic by means of Digitalization
Xr34082a high efficiency boost dc/dc regulator IC
提升方法(下)提升树
3D octave view
Fm5012d small fan integrated IC scheme
Jerry's problem of playing songs after opening four channel EQ [chapter]
杰理之做蓝牙发射的时候,回链没有声音解决方法【篇】
12.信号基础
The order management system realizes the unified management of enterprise order inventory
For in JS In function
Spark 离线开发框架设计与实现
Guangdong CDC reminds: the summer vacation is coming, so the returned college students can "return home" safely