[STM32F1]

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

[复制链接]
661|19
手机看帖
扫描二维码
随时随地手机跟帖
jlyuan|  楼主 | 2021-11-21 16:27 | 显示全部楼层 |阅读模式
这几天在对照书上和网上的范例学习STM32内部的SDIO接口驱动SD卡, 看到的范例里对SDIO使用到的CMD, DATA0-DATA3这些GPIO引脚都是配置为AF_PP即复用推挽输出;
我的疑问是: 像SDIO的CMD以及DATAn引脚都是需要数据双向传输的,( 可能为STM32发送到SD卡, 可也能是SD卡响应的时候回传数据) ,那么如果这些引脚上的数据要实现双向传送, 在GPIO配置成复用推挽模式的情况下,岂不是数据只能由主机传送到SD卡, 而SD卡无法通过此GPIO口回传需要响应的数据了吗?

使用特权

评论回复
jiahy| | 2021-11-21 16:29 | 显示全部楼层

还有什么现象?能再详细描述下吗?

使用特权

评论回复
jlyuan|  楼主 | 2021-11-21 17:00 | 显示全部楼层
因为如果一个GPIO口配置成推挽模式,那么它的引脚上的状态要么是Vcc, 要么是GND, 即是这两种带有驱动能力的电平状态之一, 这显然无法实现数据的双向传送; 而如果设置成 复用开漏输出配合外部挂接的上拉电阻则可实现类似于51单片机的准双向IO口, 不知道我的理解是否有错误, 以及错在哪里

使用特权

评论回复
juventus9554| | 2021-11-21 17:01 | 显示全部楼层
不是推挽输出;
用CUEB生成好了

使用特权

评论回复
jlyuan|  楼主 | 2021-11-21 17:03 | 显示全部楼层
看了网上大部分的参数代码( 可以大家都互相抄来抄去的) ,都是将DATA引脚以及CMD引脚都设备成AF_PP模式呢,  

使用特权

评论回复
jlyuan|  楼主 | 2021-11-21 17:06 | 显示全部楼层
本帖最后由 jlyuan 于 2021-11-21 17:10 编辑

有点头晕了

使用特权

评论回复
dengdc| | 2021-11-21 17:10 | 显示全部楼层
通信一班选准双向。

使用特权

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

使用特权

评论回复
huangchui| | 2021-11-21 17:14 | 显示全部楼层
我一般就是普通的输入输出

使用特权

评论回复
jlyuan|  楼主 | 2021-11-21 17:15 | 显示全部楼层
不用推挽输出

使用特权

评论回复
juventus9554| | 2021-11-21 17:17 | 显示全部楼层
我一般就是默认的配置

使用特权

评论回复
dengdc| | 2021-11-21 17:19 | 显示全部楼层
用cube生成代码

使用特权

评论回复
zhenykun| | 2021-11-21 17:20 | 显示全部楼层

没想这么深入过

使用特权

评论回复
jiajs| | 2021-11-21 17:23 | 显示全部楼层
需要区分这些模式的差异

使用特权

评论回复
juventus9554| | 2021-11-21 17:26 | 显示全部楼层
SD最好用GPIO自己模拟控制SD的时序和协议

使用特权

评论回复
pengf| | 2021-11-21 17:28 | 显示全部楼层
嗯,方便移值到其他MCU

使用特权

评论回复
juventus9554| | 2021-11-21 17:29 | 显示全部楼层
出问题容易定位

使用特权

评论回复
huangchui| | 2021-11-21 17:30 | 显示全部楼层
方便精减和优化

使用特权

评论回复
juventus9554| | 2021-11-21 17:31 | 显示全部楼层
除非为了高速读写,否则还不如自己IO模拟控制

使用特权

评论回复
jlyuan|  楼主 | 2021-11-21 17:32 | 显示全部楼层

嗯,我再好好缕一缕吧,有了好消息及时通知大家

使用特权

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

本版积分规则

880

主题

12030

帖子

4

粉丝