信号质量有问题的波形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信号均满足要求。
时间: 2024-10-09 13:57:30