IIC 无ACK

2019-07-15 22:57发布

用verilog编写E2PROM AT24C1024的读写程序,写入数据时,正常,有ACK回复。但是在读时,第一次start 后写设备地址和寄存器地址,有回复ACK;再产生start后改变方向,设备地址最后一位改成1后,不回复ACK。请教各位有可能是什么原因?
读时第二次start后写设备地址 读时第二次start后写设备地址
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
suna123
2019-07-16 03:36
因为SDA如果是输出额话,Pin脚是开楼状态,如果不给0的话,因为有上拉所以肯定是High,所以如果要变Low,必须给Low电平。
而读状态,首先发送Slave地址,Slave收到后回给Master一个ACK作为应答,接来下就是读数据了,此时Master-Trans转为Master-Receive,Slave-Receive转为Slave-Send,所以这个Byte的ACK是Master给的。Slave不会给ACK的。
详细去查查飞利浦的THE I 2C-BUS SPECIFICATION文件

一周热门 更多>