在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的低电平期间完成,产生的波形就会像一个毛刺被误认为干扰。实际上这个波形的出现不用在意,可以不采取任何措施。
更多GD32 MCU相关咨询:https://www.gd32bbs.com/