IIC通信等待ACK的时序问题

2019-07-20 04:47发布

TIM截图20180827170825.jpg
程序中IIC_SCL拉高之后,如果IIC_SDA再变的话就成了起始信号或终止信号了吧,但是图中while()循环却通过检测IIC_SDA的状态来判断是应答还是非应答,这怎么解释?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
GAOSIY
1楼-- · 2019-07-21 01:38
1208 发表于 2018-8-27 17:19
起始信号和结束信号要先有sda线输出才行,
READ_SDA置1,就一直产生停止信号,接收应答失败
...

大神,借着楼主的帖子顺便问你一个问题,也是这段代码里的,代码中SDA_IN()把IO口设置成了输入模式了,为什么下边紧接着还能用IIC_SDA=1把SDA拉高呢,这块不是很能理解
1208
2楼-- · 2019-07-21 04:44
GAOSIY 发表于 2018-10-17 21:35
大神,借着楼主的帖子顺便问你一个问题,也是这段代码里的,代码中SDA_IN()把IO口设置成了输入模式了,为 ...

这个等待应答是先将SDA设置为输入,IIC_SDA=1和IIC_SCL=1都要置高,是为了发送完数据,再将时钟线IIC_SCL再置低
GAOSIY
3楼-- · 2019-07-21 08:46
 精彩回答 2  元偷偷看……
xiao19344859
4楼-- · 2019-07-21 10:13
1208 发表于 2018-8-27 17:19
起始信号和结束信号要先有sda线输出才行,
READ_SDA置1,就一直产生停止信号,接收应答失败
...

你好,我发的一个帖子 我自己的回复被你设置了最佳回复,你是不是弄错了,还有我的问题还没有得到回复呢,这个问题我还没弄明白!!!
http://www.openedv.com/forum.php?mod=viewthread&tid=280966
1208
5楼-- · 2019-07-21 15:17
 精彩回答 2  元偷偷看……
1208
6楼-- · 2019-07-21 16:17
 精彩回答 2  元偷偷看……

一周热门 更多>