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

[复制链接]
7781|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;悬空输入

是这样的吗??
pkat 发表于 2010-1-8 09:45 | 显示全部楼层
香主,我想问个问题,能不能具体解释下开漏输出的开漏是啥意思,经常听到这个名词,但就是不理解
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就是通用开漏输出.
香水城 发表于 2010-1-8 18:06 | 显示全部楼层
SDA完成发送数据后,先输出高,然后直接读取这个端口的输入寄存器即可,不必转换方向。

在这种配置下(开漏输出),这个引脚相当于是一个准双向端口。
gxgclg 发表于 2010-1-8 20:09 | 显示全部楼层
就是说不必定义输入输出?
maxking 发表于 2016-6-29 21:39 | 显示全部楼层
香版主,你有测试过吗?我试过是不行的哦。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

18

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部