软件i2c读多字节只能读出第一个字节

[复制链接]
847|3
 楼主| qinchxiong 发表于 2020-6-10 16:00 | 显示全部楼层 |阅读模式
1. 我用的是cypress芯片,用IO模拟软件i2c,读取单个字节没有问题,读取多个字节时,只有第一个字节是对的,后面的字节都是0
2. 波形图中左边是电脑端读i2c的波形,是没有问题的,排除硬件问题
3. 波形图中右边是单片机io模拟读i2c的波形,第一个字节对,第二个字节是0,看波形图,ACK(0)之前SDA被拉高(红色箭头处),可能slave误以为发了ACK(1)所以结束了
4. 请问那个SDA被拉高是什么原因?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
cr315 发表于 2023-12-26 16:01 | 显示全部楼层
SDA被拉高可能是起始条件设置不正确
两只袜子 发表于 2023-12-26 16:02 | 显示全部楼层
SDA被拉高可能是时序匹配问题
jcky001 发表于 2023-12-26 16:02 | 显示全部楼层
在I2C通信中,每个字节传输完毕后需要发送停止条件(P),即SDA线由低电平变为高电平,SCL线保持高电平。如果字节结束条件设置不正确或者没有正确发送,可能导致数据传输错误。请确保字节结束条件被正确发送。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

41

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部