打印

I2C软件模拟,MCU管脚SDA和SCL怎么定义的?

[复制链接]
6137|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wklove_1124|  楼主 | 2010-1-7 17:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SDA和SCL是定义为输入还是输出呢?
沙发
香水城| | 2010-1-7 17:48 | 只看该作者
开漏输出外加上拉。

使用特权

评论回复
板凳
wklove_1124|  楼主 | 2010-1-7 18:10 | 只看该作者
谢谢香主。

使用特权

评论回复
地板
wklove_1124|  楼主 | 2010-1-8 09:13 | 只看该作者
但是在SDA发送和接收数据时,方向不一样,那么它该怎么转换呢?
初始化定义时:
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;开漏输出
当接收数据时:
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;悬空输入

是这样的吗??

使用特权

评论回复
5
pkat| | 2010-1-8 09:45 | 只看该作者
香主,我想问个问题,能不能具体解释下开漏输出的开漏是啥意思,经常听到这个名词,但就是不理解

使用特权

评论回复
6
stealth| | 2010-1-8 16:54 | 只看该作者
但是在SDA发送和接收数据时,方向不一样,那么它该怎么转换呢?
初始化定义时:
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;开漏输出
当接收数据时:
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING ...
wklove_1124 发表于 2010-1-8 09:13

这样写也可以,但会把其他IO的状态也一起改了,而且慢。直接改寄存器吧。
GPIOx->CRH或GPIOx->CRL直接把SDA对应的那个管脚的部分改了就行。
4就是浮空输入,6就是通用开漏输出.

使用特权

评论回复
7
香水城| | 2010-1-8 18:06 | 只看该作者
SDA完成发送数据后,先输出高,然后直接读取这个端口的输入寄存器即可,不必转换方向。

在这种配置下(开漏输出),这个引脚相当于是一个准双向端口。

使用特权

评论回复
8
gxgclg| | 2010-1-8 20:09 | 只看该作者
就是说不必定义输入输出?

使用特权

评论回复
9
maxking| | 2016-6-29 21:39 | 只看该作者
香版主,你有测试过吗?我试过是不行的哦。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

18

帖子

0

粉丝