如何解决主机发送地址之后 从机没有发出ACK应答信号给主机

1,iic总线从机没有返回应答给主机

我用的一个带有iic接口电量计和我的单片机通讯,我用逻辑分析仪分析数据发现主机写一个字节数据后从机并没有返回一个ack给主机,导致我后面读取从机的数据时全部是ff,请问各位iic大神,我该怎么去查问题呢?

硬件上检查下iic设备有没有虚焊,总线有没有冲突,示波器点下scl和sda线有没有半高电平;
如果你的代码不保证是成熟的,建议示波器触发一下看看时序满不满足iic协议要求;
读出的数据是总线默认状态ff,说明设备没响应,最有可能:
地址不对;
时序不对;
速率不匹配

1、当从机不能响应从机地址时(例如它正忙于其他事而无法响应IIC总线的操作,或者这个地址没有对应的从机),在第9个SCL周期内SDA线没有拉低,即没有ACK信号。这时,主机发出一个P信号终止传输或者重新发出一个S信号开始新的传输。
2、如果从机接收器在传输过程中不能接收更多的数据时,它不会发出ACK信号。这样,主机就可以意识到这点,从而发出一个P信号终止传输或者重新发出一个S信号开始新的传输。
3、主机接收器在接收到最后一个字节后,也不会发出ACK信号。于是,从机发送器释放SDA线,以允许主机发出P信号结束传输

2,I2C通信,有时会出现主机收不到从机ACK响应的情况,这时SDA线也会被拉死(低电平),大家给支支招啊!

I2C通信,有时会出现主机收不到从机ACK响应的情况,这时SDA线也会被拉死(低电平),大家给支支招啊!-CSDN论坛

是不是时序有问题啊,你把timeout设置大点看看,再找原因

确定I2C的几个寄存器设置没有问题?

抓一下I2C的时序看一下吧,主送的时序没有问题的话,没有应答很可能是从的问题。

3,对IIC总线时序的一点理解以及ACK和NACK(NAK)

对IIC总线时序的一点理解以及ACK和NACK(NAK)_weixin_34357928的博客-CSDN博客

总结下,IIC通讯中,SDA 和 SCL 都是有主机控制的,从设备只是能够将SDA线拉低而已对于SCL线,从机是没有任何能力去控制的。从机只能被动跟随SCL。(说法待考究

 一句话:SCL是单向的,由master控制。而SDA是双向的,master可以控制,slaver也可以控制。

4,对I2C总线中ACK的理解(通俗易懂)

对I2C总线中ACK的理解 - 百度文库

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学海无涯_come on

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值