在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的低电平期间完成,产生的波形就会像一个毛刺被误认为干扰。实际上这个波形的出现不用在意,可以不采取任何措施。
-
单片机
+关注
关注
6068文章
45037浏览量
652429 -
mcu
+关注
关注
146文章
18031浏览量
369308 -
嵌入式
+关注
关注
5158文章
19735浏览量
318729 -
I2C
+关注
关注
28文章
1541浏览量
128177 -
GD32
+关注
关注
7文章
422浏览量
25669
发布评论请先 登录
I2C在MM32F032/MM32F0140系列MCU上的实现

MCU实现I2C通信

I2C接口配置ES7243录音芯片,MCU(STM32)收不到I2C ACK的问题

硬件I2C与模拟I2C

MSP MCU I2C入门指南
I2C通信没反应怎么办?

如何提高I2C调试效率?

评论