IIC读寄存器的时候,会发送两次从机地址。目前遇到的问题是,第一次发送从机地址,以及发送要读的寄存器地址,都收到了ACK。但是第二次发送从机地址的时候收不到ACK。这个问题,大家有遇到过吗?
用的什么主控芯片,IIC的从机是什么芯片?查看下从机的读写时序图是怎么工作的,是不是有ACK回复~
我用的一个带有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信号结束传输
你好,请问解决了吗,我也遇到同样的问题