IIC 踩过的坑

读取IT8563WE时,读取第一次正确,第二次错误,第三次正确,第四次错误。。。。。。

IIC 踩过的坑_第1张图片

看到读取成功之后,SDA信号没有被正确拉高,电平大概只有一半。

再次读取,主机设置读模式时,从机会发送NACK,会将电平拉高。这样第三次读取时,SDA和SCL数据信号线都是高电平。

 

注意:当第一次读取完毕,SDA没有被完全拉高是,直接将VCC接入SDA脚,SDA仍然不能恢复电平最高,应该是IT8563WE的问题。

 

临时解决办法:

读取成功后,再次读取,在主机设置读模式时,从机会发送NACK,会将电平拉高

IIC 踩过的坑_第2张图片

过一段时间再次修改找到根本原因

读取最后一个字节应该是NACk的回包

IIC 踩过的坑_第3张图片

原来代码

IIC 踩过的坑_第4张图片

修改之后

IIC 踩过的坑_第5张图片

读过程

IIC 踩过的坑_第6张图片

波形图,发送NACK后,再发送STOP,电平恢复高电平

IIC 踩过的坑_第7张图片

 

开源地址:

https://github.com/strongercjd/STM32F207VCT6

 

点击查看本文所在的专辑,STM32F207教程

 

关注公众号,第一时间收到文章更新。评论区不能及时看到,需要交流可以到公众号沟通

你可能感兴趣的:(STM32F207教程,STM32)