找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1487|回复: 7
打印 上一主题 下一主题
收起左侧

一段I2C通讯的代码看不懂,想请教一下

[复制链接]
跳转到指定楼层
楼主

为什么在程序中检查到从机应答会停止总线呀,看到这里有点蒙了

无标题.png (163.76 KB, 下载次数: 1)

程序图片

程序图片
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:878061 发表于 2024-9-7 22:15 | 只看该作者
if(MPU_IIC_Wait_Ack())中这个函数MPU_IIC_Wait_Ack()应答成功的话返回值应该是0,返回1肯定是应答失败的情况才会执行if{}里面的语句退出,并且返回1告诉调用的地方通信失败
回复

使用道具 举报

板凳
ID:59202 发表于 2024-9-7 22:31 | 只看该作者
你得把MPU_IIC_Stop函数发上来看看啊。不过据我的认识应该是主机释放数据总线,把数据线拉高,这样从机应答信号才能把数据线拉低,主机才能读到正确的应答信号
回复

使用道具 举报

地板
ID:141497 发表于 2024-9-7 22:32 | 只看该作者
没有应答,就是出现了问题,停止总线,返错误代号1.
回复

使用道具 举报

5#
ID:344848 发表于 2024-9-8 01:12 | 只看该作者
IIC属于半双工器件,任一时段主机只能和唯一指定的从机通讯。
回复

使用道具 举报

6#
ID:607298 发表于 2024-9-9 09:00 | 只看该作者
这边应该是没有应答的逻辑控制。
回复

使用道具 举报

7#
ID:722461 发表于 2024-9-10 10:08 | 只看该作者
看不太出来,需要抓波形吧
回复

使用道具 举报

8#
ID:1073939 发表于 2024-11-22 13:52 | 只看该作者
注意:MPU_Write_Byte函数iic操作成功返回0,失败返回1.
不管iic操作是否成功都要通过MPU_IIC_Stop函数释放总线。
估计MPU_IIC_Wait_Ack函数的作用是100uS内有应答返回0,无应答返回1.

楼主可能习惯把1看成成功,0看成失败,才有疑问。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表