[STM32F1] SDIO使用的GPIO的模式设置疑问

[复制链接]
 楼主| starv 发表于 2019-11-28 16:43 | 显示全部楼层 |阅读模式
这几天在对照书上和网上的范例学习STM32内部的SDIO接口驱动SD卡, 看到的范例里对SDIO使用到的CMD, DATA0-DATA3这些GPIO引脚都是配置为AF_PP即复用推挽输出;
我的疑问是: 像SDIO的CMD以及DATAn引脚都是需要数据双向传输的,( 可能为STM32发送到SD卡, 可也能是SD卡响应的时候回传数据) ,那么如果这些引脚上的数据要实现双向传送, 在GPIO配置成复用推挽模式的情况下,岂不是数据只能由主机传送到SD卡, 而SD卡无法通过此GPIO口回传需要响应的数据了吗?
因为如果一个GPIO口配置成推挽模式,那么它的引脚上的状态要么是Vcc, 要么是GND, 即是这两种带有驱动能力的电平状态之一, 这显然无法实现数据的双向传送; 而如果设置成 复用开漏输出配合外部挂接的上拉电阻则可实现类似于51单片机的准双向IO口, 不知道我的理解是否有错误, 以及错在哪里, 望指正,谢谢!
不知道是我哪里理解的不对? 我的
mmuuss586 发表于 2019-11-29 09:54 | 显示全部楼层
不是推挽输出;
用CUEB生成好了
 楼主| starv 发表于 2019-11-29 14:56 | 显示全部楼层
mmuuss586 发表于 2019-11-29 09:54
不是推挽输出;
用CUEB生成好了

看了网上大部分的参数代码( 可以大家都互相抄来抄去的) ,都是将DATA引脚以及CMD引脚都设备成AF_PP模式呢,  
xinpian101 发表于 2019-11-29 21:22 | 显示全部楼层
通信一班选准双向。
 楼主| starv 发表于 2019-12-2 09:30 | 显示全部楼层
xinpian101 发表于 2019-11-29 21:22
通信一班选准双向。

按本人目前的理解是的, 可是看网上大部分代码,在利用STM32F1的片上外设如USART, SDIO等进行双向通信时,都是选择的AF_OUT_PP, 即复用推挽输出, 但好像也没有人反馈说这样的设置有问题, 造成实验失败等情况; 不知道是否此处的复用推挽输出是否和我理解的不一样呢
wowu 发表于 2019-12-11 13:54 | 显示全部楼层
我一般就是普通的输入输出
wakayi 发表于 2019-12-11 13:56 | 显示全部楼层
不用推挽输出
renzheshengui 发表于 2019-12-11 13:56 | 显示全部楼层
我一般就是默认的配置
paotangsan 发表于 2019-12-11 13:58 | 显示全部楼层
用cube生成代码
labasi 发表于 2019-12-11 14:01 | 显示全部楼层
没想这么深入过
keaibukelian 发表于 2019-12-11 14:03 | 显示全部楼层
需要区分这些模式的差异
tzgok 发表于 2019-12-12 07:23 来自手机 | 显示全部楼层
SD最好用GPIO自己模拟控制SD的时序和协议。。1,方便移值到其他MCU,2,出问题容易定位,,3,方便精减和优化。。。。除非为了高速读写,否则还不如自己IO模拟控制。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

41

帖子

1

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