首页 > 代码库 > GPIO模拟IIC接口信号质量分析

GPIO模拟IIC接口信号质量分析

信号质量有问题的波形001:

技术分享

信号质量有问题的波形002:

技术分享

从上图可以看出,GPIO口模拟的I2C接口,电平都存在半高的情况。

 

技术分享

因为MFI芯片的I2C采用的GPIO口模拟I2C接口来实现的此功能,原SCL采用的GPB7(内部默认为上拉状态),因为GPIO资源的调整,SCL改为GPD12(内部默认为下拉状态),因SCL对应的GPIO口内部有下拉电阻,导致在输出为高电平时,上升沿慢的台阶出现。软件后面把GPD12的内部下拉电阻disable之后,测试的波形如上图所示,从上图可以看出SCL时钟信号已经正常。

但是SDA存在小的脉冲尖峰和ACK的半高情况。具体见图中的红色圈所示。

 

技术分享

后经软件分析,SDA小的脉冲尖峰是因为软件在SCL无效状态时,对SDA置为输入状态后,又对SDA置高处理,因硬件外部已有上拉电阻,SCL无效时,软件无需对SDA置高处理。后软件去除此部份操作后SDA小的脉冲尖峰消除了。

 

ACK半高电平,软件在停止位结束后,SCL从高到低反转一执行,马上把SDA从输出高电平改为输入状态,此时ACK就会马上生效,SDA从而直接变为低电平,剩下的半高状态,只有大约800us的时间。具体见下图。

技术分享

测试结果:软件修改后,模拟SDA和SCL信号均满足要求。

 

GPIO模拟IIC接口信号质量分析