探索者F407原子IIC例程中应答函数的疑问

2019-07-20 23:44发布

如题,在看探索者stm32F407原子的IIC的例程中,对如下红 {MOD}方框中的这个函数有些疑惑,还请各位帮忙解疑。谢谢。
1.jpg
我想不明白的是,应答信号是由接收器产生的。那么应该是接收器发出应答信号。
可是在myiic.h的文件中,定义的是PB9是SDA_IN()和SDA_OUT().
[mw_shl_code=applescript,true]//IO方向设置
#define SDA_IN()  {GPIOB->MODER&=~(3<<(9*2));GPIOB->MODER|=0<<9*2;}        //PB9输入模式
#define SDA_OUT() {GPIOB->MODER&=~(3<<(9*2));GPIOB->MODER|=1<<9*2;} //PB9输出模式[/mw_shl_code]
所以,按照我的理解,如上图红 {MOD}方框中的这个地方,应该是SDA_IN()才对吧
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
jiutianshenjian
1楼-- · 2019-07-21 03:45
本帖最后由 jiutianshenjian 于 2016-1-27 11:04 编辑

对这个in和out没怎么看懂。应该就是gpio的输入和输出模式吧?

1.这两个都是主机作为接收时发出给从机的应答,既然是发出,当然是out。

2.如果主机发送数据,从机接收,则由从机向主机发ack,此时就是主机等ack进来,那就得是in吧?就是那个waitack函数了。
小笨蛋
2楼-- · 2019-07-21 07:00
产生应答,主机发送ACK是不是输出拉低SDA,如果是NACK,是不是应该拉高SDA,是不是也是输出?
huaiqiao
3楼-- · 2019-07-21 08:30
 精彩回答 2  元偷偷看……
jiutianshenjian
4楼-- · 2019-07-21 10:08
huaiqiao 发表于 2016-2-22 09:43
不好意思,这么久才回复您消息(之前有些事情给耽搁了)。您看我的截图,ACK,NACK应该是由接收器发出的 ...

对。接收的发。
那两个接收器都是master,也就是arm。是out没问题啊。
huaiqiao
5楼-- · 2019-07-21 10:09
jiutianshenjian 发表于 2016-2-22 11:39
对。接收的发。
那两个接收器都是master,也就是arm。是out没问题啊。

哦哦,我想通了。是接收器发,我以为这个SDA_OUT()和SDA_IN()的主体只能是发送器呢。sorry。

一周热门 更多>