在I2C的波形中,经常会发现有这样的脉冲毛刺,会被认为是干扰或者器件不正常。

看到这个波形时,可以先数一下出现在第几个clock的位置,如果出现在第9个clock的低电平期间,就不是干扰或者器件异常导致。
在I2C的协议中,不管是地址匹配阶段还是数据读写阶段,第9个clock都是ACK和NACK位;
其中NACK为第9个SCL上升沿时SDA高电平:

ACK为第9个SCL上升沿时SDA低电平:

在地址匹配阶段由从机来回复ACK,在数据收发阶段由接受方来回复ACK。
那么I2C是双向半双工通信,SDA引脚通过主机和从机共同控制,ACK回复过程意味着发送方会在通过SDA发送了8个bit的数据后释放SDA控制权给接受方,此时如果最后一个波形数据BIT0是0,那SDA会在SCL下降沿后从拉低状态被释放,由于上拉电阻的作用SDA就会恢复到高电平,但紧接着接受方开始数据建立开启对SDA的控制权,拉低SDA引脚准备回复ACK,于是SDA信号被再次拉低。

由于整个过程是连续的,且都会在SCL第9个Clock的低电平期间完成,产生的波形就会像一个毛刺被误认为干扰。实际上这个波形的出现不用在意,可以不采取任何措施。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
单片机
+关注
关注
6078文章
45618浏览量
674979 -
mcu
+关注
关注
147文章
19223浏览量
405085 -
嵌入式
+关注
关注
5211文章
20737浏览量
338337 -
I2C
+关注
关注
28文章
1564浏览量
131887 -
GD32
+关注
关注
7文章
435浏览量
27686
发布评论请先 登录
相关推荐
热点推荐
为什么当微控制器 (MCU) 用作 I2C 从机时,I2C_SCL在接收连续数据时会出现时钟拉伸?
为什么当微控制器 (MCU) 用作 I2C 从机时,I2C_SCL在接收连续数据时会出现时钟拉伸
发表于 08-21 06:32
为什么当微控制器(MCU)用作I2C从机时,I2C_SCL连续接收数据时会出现时钟拉伸?
为什么当微控制器(MCU)用作I2C从机时,I2C_SCL连续接收数据时会出现时钟拉伸?
发表于 08-26 08:05
MCU实现I2C通信
调试过程吧。 需要做的工作小结如下:1、MCU的I2C采用IO口模拟实现;2、MCU作为I2C主设备与定时芯片RX-8025SA建立通信;
发表于 11-01 16:24
•5次下载
I2C接口配置ES7243录音芯片,MCU(STM32)收不到I2C ACK的问题
I2C接口配置ES7243录音芯片,MCU(STM32)收不到I2C ACK的问题
发表于 12-08 16:36
•10次下载
硬件I2C与模拟I2C
硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,因而效率要远高于软件模拟的I2C;一般也较为稳定,但
发表于 12-28 19:14
•83次下载
I2C通信没反应怎么办?
做硬件我们经常会遇到各种各样的问题,一些通信接口也会出现,I2C自然也不例外。假如遇到I2C没反应,那么可能会出现这种情况:“软件工程师说,我软件都已经配好了,但是就是读写不到数据,是
如何提高I2C调试效率?
一般情况下,我们想要调试这类 I2C 器件,都需要先找一块主控 MCU 板卡,用杜邦线将 I2C 器件连接到板卡上,然后编写 MCU 代码,需包含
发表于 06-08 13:00
•2465次阅读
I2C debug出现问题怎么解决
RK 平台 I2C debug 1、I2C 通信失败,出现 log: “timeout, ipd: 0x00, state: 1” 请检查硬件上拉是否给电。 2、调用
为什么MCU I2C波形中会出现的脉冲毛刺?
评论