永发信息网

IIC总线的应答信号怎样理解

答案:2  悬赏:0  手机版
解决时间 2021-11-09 04:48
  • 提问者网友:椧運幽默
  • 2021-11-08 09:44
IIC总线的应答信号怎样理解
最佳答案
  • 五星知识达人网友:渊鱼
  • 2021-11-08 10:35
1、首先IIC通信要分清主机与从机的关系,在主机对从机进行写操作时,一般是在传送完一个数据之后单片机就进入检测应答信号状态:先将两个脚置位
SDA=1;SCL=1;然后在一定时间内不断检测SDA脚的电平状态,比如说你弄个循环for(i=255;i>0;i--){..;
if(...)break;...}进行不断判断,当SDA的电平为低时就跳出循环,说明此时从机已经ACK,就可说明是I2C器件拉低;如果为高时,则
一直判断完整个循环,到最后还为高时,就说明没有应答。
  2、写应答和读应答肯定有所区别的。写应答是在你读从机数据期间,当你接收到一个数据时,
可以应答的(想继续通信就应答),就将SDA复位(拉低),不想应答(想结束通信时)就置位(SDA=1)。读应答则在主机写数据给从机期间,每当从机接
收到一个数据就会应答一下(将数据SDA线拉低),主机将不断检测SDA线的电平,主机就是凭SDA的电平状态才知道从机是否已经正确地接收了主机发送的
数据。
全部回答
  • 1楼网友:孤独的牧羊人
  • 2021-11-08 10:54
这个是为了后续通信能继续下去的一个机制。
凡是接收数据或命令方,都要给一个应答位,发送方只有收到应答位后才继续发送。只有一个特殊情况不用应答位,就是主机(给时钟信号的一方)作为接收方时,在收到最后一个字节信息时可以不用应答。
由于IIC的数据线一定有一个上拉电阻,如果通信中能收到应答位,一定是接收方把数据线强制拉低,所以在开始学习IIC通信时,能收到方的应答位,是成功的第一步。追问如果主机(给时钟信号的一方)作为接收方时,在短时间内没接到应答呢追答那就说明通信有问题,后面的通信应该结束。
出现这种情况不外是硬件线路有问题,或者软件出了问题。但常见的是软件有问题,如地址码不对,通信的格式与对方不符等。

参考资料:北航:《PIC16F系列单片机C程序设计与PROTEUS仿真》

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯