OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5753|回复: 3

关于STM32407的SD卡实验的一些疑问,求原子哥答疑。

[复制链接]

5

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2015-1-15
在线时间
25 小时
发表于 2015-9-4 17:48:48 | 显示全部楼层 |阅读模式
5金钱
我是最近才开始看关于SD卡的知识,看的是库函数版的 实验38 SD卡实验。

看到SD卡初始化函数 SD_Init()函数中的 SD_EnableWideBusOperation(SDIO_BusWide_4b)  这个函数,感觉有点问题,所以想请原子哥答疑一下。



首先 有个宏定义  #define SDIO_BusWide_4b                     ((uint32_t)0x00000800)


然后到EnableWideBusOperation(u32 WideMode) , 这个函数中去,这个函数调用了另外一个函数, 为 SDEnWideBus(WideMode),也就是在这个
函数里面,通过发送ACMD6这个命令来 改变SD卡的 数据总线的宽度,但是这个函数的 参数 是 u8型的,所以SDIO_BusWide_4b  这个参数最后
传递到 SDEnWideBus()这个函数的时候,已经变为0了, 会导致发送ACMD6这个命令时,是不会改变SD卡的数据总线的宽度的,这个看函数的代码
就可以知道,就是,执行完这个命令,SD卡的数据总线宽度还是1位, 但是在EnableWideBusOperation()这个函数中,在调用完SDEnWideBus()函数后,
检查SD卡没有错误后, 会将STM32F407的SDIO接口的数据总线 宽度 配置为4位, 这样子会和SD卡 不匹配呀,  但是后来的实验,通过串口可以读到
数据,所以,关于这个部分, 有点迷茫, 求原子哥解答一下。

最佳答案

查看完整内容[请看2#楼]

确实,这是个bug,库函数有这个bug,寄存器正常。 你修改一下吧。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-9-4 17:48:49 | 显示全部楼层
确实,这是个bug,库函数有这个bug,寄存器正常。
你修改一下吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

5

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2015-1-15
在线时间
25 小时
 楼主| 发表于 2015-9-4 21:01:21 | 显示全部楼层
各位大神怎么看?
回复

使用道具 举报

5

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2015-1-15
在线时间
25 小时
 楼主| 发表于 2015-9-4 22:04:36 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
好的, 我看一下 寄存器版本的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 06:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表