IIC总线的应答信号问题

[复制链接]
查看11 | 回复3 | 2017-11-28 08:55:31 | 显示全部楼层 |阅读模式
1、首先IIC通信要分清主机与从机的关系,在主机对从机进行写操作时,一般是在传送完一个数据之后单片机就进入检测应答信号状态:先将两个脚置位SDA=1;SCL=1;然后在一定时间内不断检测SDA脚的电平状态,比如说你弄个循环for(i=255;i>0;i--){..;if(...)break;...}进行不断判断,当SDA的电平为低时就跳出循环,说明此时从机已经ACK,就可说明是I2C器件拉低;如果为高时,则一直判断完整个循环,到最后还为高时,就说明没有应答。2、写应答和读应答肯定有所区别的。写应答是在你读从机数据期间,当你接收到一个数据时,可以应答的(想继续通信就应答),就将SDA复位(拉低),不想应答(想结束通信时)就置位(SDA=1)。读应答则...
回复

使用道具 举报

千问 | 2017-11-28 08:55:31 | 显示全部楼层
下面的回答分别对应着上面的问题:1.SCL=1期间变化的。SCL=1期间,如果有应答,拉为底,单片机检测到应答信号,如果本来就是低,那怎么知道应答后总线上的0是I2C器件拉低的呢。2.这是两个独立的过程。检测应答信号是为了看看从机是否准备好工作了。当然这个工作包括发送或者接受...
回复

使用道具 举报

千问 | 2017-11-28 08:55:31 | 显示全部楼层
应答是电平置为高,相当于握手信号。主机默认有应该机制,默认就可以,不需要显式调用。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行