IIC总线的应答信号问题
答案:3 悬赏:70 手机版
解决时间 2021-01-10 13:03
- 提问者网友:感性作祟
- 2021-01-09 23:37
IIC总线的应答信号问题
最佳答案
- 五星知识达人网友:罪歌
- 2021-01-10 00:41
应答是电平置为高,相当于握手信号。
主机默认有应该机制,默认就可以,不需要显式调用。
主机默认有应该机制,默认就可以,不需要显式调用。
全部回答
- 1楼网友:雾月
- 2021-01-10 01:47
下面的回答分别对应着上面的问题:
1.SCL=1期间变化的。SCL=1期间,如果有应答,拉为底,单片机检测到应答信号,如果本来就是低,那怎么知道应答后总线上的0是I2C器件拉低的呢。
2.这是两个独立的过程。
检测应答信号是为了看看从机是否准备好工作了。当然这个工作包括发送或者接受
1.SCL=1期间变化的。SCL=1期间,如果有应答,拉为底,单片机检测到应答信号,如果本来就是低,那怎么知道应答后总线上的0是I2C器件拉低的呢。
2.这是两个独立的过程。
检测应答信号是为了看看从机是否准备好工作了。当然这个工作包括发送或者接受
参考资料:C
- 2楼网友:由着我着迷
- 2021-01-10 01:31
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的电平状态才知道从机是否已经正确地接收了主机发送的数据。
2、写应答和读应答肯定有所区别的。写应答是在你读从机数据期间,当你接收到一个数据时,可以应答的(想继续通信就应答),就将SDA复位(拉低),不想应答(想结束通信时)就置位(SDA=1)。读应答则在主机写数据给从机期间,每当从机接收到一个数据就会应答一下(将数据SDA线拉低),主机将不断检测SDA线的电平,主机就是凭SDA的电平状态才知道从机是否已经正确地接收了主机发送的数据。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯