1. 现象
可能大家也遇过这样的情形:使用I2C进行通信时,用示波器或者逻辑分析仪抓取I2C的波形,会看到SDA上出现小于1ms的毛刺,但是数据传输又是正常的,会比较困惑。
2. 原因
其实大家可以发现,毛刺均出现在SCL的下降沿。
出现周期性毛刺源于SDA空闲情况,默认电压为高电平。
主机发送了八个字节以后,需要放弃IIC控制权,将控制权交给从机,需要从机响应应答位。
主机放弃控制权的过程:
1.释放SDA;
2.由于SDA存在上拉电阻,此时SDA被拉高;
3.这时候从机响应了第九个时钟,开始获取SDA控制,将SDA拉低。
主从控制权交换发生在SCL的下降沿,这也符合上面抓取到的毛刺现象。
以上只是一瞬间,表现为SDA会出现毛刺,且是周期性的。
波形中出现的这种毛刺属于正常现象,没必要去刻意消除,对数据传输没有影响。