求解!!!89C51模拟的I2C通信中的应答信号和非应答信号的SDA和SCL怎么变化和理解的,好蒙啊!最好详细点
1个回答
展开全部
ACK(应答SDA=0)和NACK(非应答SDA=1)的使用猛宽实际上是取决你的通讯协议的:
1. 如果是89C51要和其他设备通讯,要看通讯设雹郑备的通讯要求,下面是接触得较多的用法:
从机给ACK表示让主机继续发送数据,NACK表示不接收了,让主机给STOP信号。
2. 如果89C51和89C51之间通讯,特别是用模拟的方式,接收和发送都是由你自己控制。你可以在通讯过程忽略ACK/NACK,写的时候,从机(SLAVE)一直接收直到主机给出STOP信号,读的时候也要先写,这时候可源知颂以写一个读的长度让从机知道。(这个可以根据需要自己制定通讯协议)
不知道你所谓的变化和理解具体是什么,所以只是简单回答如上。
1. 如果是89C51要和其他设备通讯,要看通讯设雹郑备的通讯要求,下面是接触得较多的用法:
从机给ACK表示让主机继续发送数据,NACK表示不接收了,让主机给STOP信号。
2. 如果89C51和89C51之间通讯,特别是用模拟的方式,接收和发送都是由你自己控制。你可以在通讯过程忽略ACK/NACK,写的时候,从机(SLAVE)一直接收直到主机给出STOP信号,读的时候也要先写,这时候可源知颂以写一个读的长度让从机知道。(这个可以根据需要自己制定通讯协议)
不知道你所谓的变化和理解具体是什么,所以只是简单回答如上。
追问
恩恩,我的变化是说sda和SCL的时序变化,
追答
ACK: 在SCL第9个时钟的时候让SDA=0(低电平),SDA要在SCL是低电平的时候改变,
NACK: 在SCL第9个时钟的时候让SDA=1(高电平),
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询