OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6003|回复: 5

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

[复制链接]

12

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2014-12-26
在线时间
28 小时
发表于 2016-1-26 23:18:55 | 显示全部楼层 |阅读模式
1金钱
如题,在看探索者stm32F407原子的IIC的例程中,对如下红色方框中的这个函数有些疑惑,还请各位帮忙解疑。谢谢。
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]
所以,按照我的理解,如上图红色方框中的这个地方,应该是SDA_IN()才对吧

最佳答案

查看完整内容[请看2#楼]

对这个in和out没怎么看懂。应该就是gpio的输入和输出模式吧? 1.这两个都是主机作为接收时发出给从机的应答,既然是发出,当然是out。 2.如果主机发送数据,从机接收,则由从机向主机发ack,此时就是主机等ack进来,那就得是in吧?就是那个waitack函数了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
发表于 2016-1-26 23:18:56 | 显示全部楼层
本帖最后由 jiutianshenjian 于 2016-1-27 11:04 编辑

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

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

2.如果主机发送数据,从机接收,则由从机向主机发ack,此时就是主机等ack进来,那就得是in吧?就是那个waitack函数了。
小小蜗牛
回复

使用道具 举报

7

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2013-9-12
在线时间
3 小时
发表于 2016-1-27 13:02:11 | 显示全部楼层
产生应答,主机发送ACK是不是输出拉低SDA,如果是NACK,是不是应该拉高SDA,是不是也是输出?
回复

使用道具 举报

12

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2014-12-26
在线时间
28 小时
 楼主| 发表于 2016-2-22 09:43:01 | 显示全部楼层
jiutianshenjian 发表于 2016-1-26 23:18
对这个in和out没怎么看懂。应该就是gpio的输入和输出模式吧?

1.这两个都是主机作为接收时发出给从机的 ...

不好意思,这么久才回复您消息(之前有些事情给耽搁了)。您看我的截图,ACK,NACK应该是由接收器发出的,对吧?
那么是接收器发出的话,这个我的红色的方框中的SDA_OUT() 就不理解了。我上传附件(整个工程,您看看)。
实验24 IIC实验.rar (506.05 KB, 下载次数: 601)
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
发表于 2016-2-22 11:39:50 | 显示全部楼层
huaiqiao 发表于 2016-2-22 09:43
不好意思,这么久才回复您消息(之前有些事情给耽搁了)。您看我的截图,ACK,NACK应该是由接收器发出的 ...

对。接收的发。
那两个接收器都是master,也就是arm。是out没问题啊。
小小蜗牛
回复

使用道具 举报

12

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2014-12-26
在线时间
28 小时
 楼主| 发表于 2016-2-22 18:39:51 | 显示全部楼层
jiutianshenjian 发表于 2016-2-22 11:39
对。接收的发。
那两个接收器都是master,也就是arm。是out没问题啊。

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

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 06:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表