打印
[STM32F1]

SDIO使用的GPIO的模式设置疑问

[复制链接]
1211|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者
通信一班选准双向。

使用特权

评论回复
5
starv|  楼主 | 2019-12-2 09:30 | 只看该作者
xinpian101 发表于 2019-11-29 21:22
通信一班选准双向。

按本人目前的理解是的, 可是看网上大部分代码,在利用STM32F1的片上外设如USART, SDIO等进行双向通信时,都是选择的AF_OUT_PP, 即复用推挽输出, 但好像也没有人反馈说这样的设置有问题, 造成实验失败等情况; 不知道是否此处的复用推挽输出是否和我理解的不一样呢

使用特权

评论回复
6
wowu| | 2019-12-11 13:54 | 只看该作者
我一般就是普通的输入输出

使用特权

评论回复
7
wakayi| | 2019-12-11 13:56 | 只看该作者
不用推挽输出

使用特权

评论回复
8
renzheshengui| | 2019-12-11 13:56 | 只看该作者
我一般就是默认的配置

使用特权

评论回复
9
paotangsan| | 2019-12-11 13:58 | 只看该作者
用cube生成代码

使用特权

评论回复
10
labasi| | 2019-12-11 14:01 | 只看该作者
没想这么深入过

使用特权

评论回复
11
keaibukelian| | 2019-12-11 14:03 | 只看该作者
需要区分这些模式的差异

使用特权

评论回复
12
tzgok| | 2019-12-12 07:23 | 只看该作者
SD最好用GPIO自己模拟控制SD的时序和协议。。1,方便移值到其他MCU,2,出问题容易定位,,3,方便精减和优化。。。。除非为了高速读写,否则还不如自己IO模拟控制。

使用特权

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

本版积分规则

2

主题

41

帖子

1

粉丝