OpenEdv-开源电子网

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

使用探索者SD卡例程的函数初始化成功后无法读数据

[复制链接]

3

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2018-12-22
在线时间
18 小时
发表于 2018-12-24 18:34:42 | 显示全部楼层 |阅读模式
1金钱
如题,用原子哥的 sdio_sdcard.c 这个文件的初始化程序初始化SD卡成功,并返回了SD卡的属性后,却无法使用 SD_ReadDisk() 这个函数来读取数据。
debug后发现 SD_ReadDisk() 返回了0X07。
也就是 SD_START_BIT_ERR
寻找了之后发现有人也有这个问题,并给出了解决方法是
将SD卡初始化函数中的

if(errorstatus==SD_OK)errorstatus=SD_EnableWideBusOperation(SDIO_BusWide_4b);

参数 SDIO_BusWide_4b 改为 SDIO_BusWide_1b
修改后的确能够读出数据了

但是,4位总线宽总会比1位总线宽速度要快吧?
而且难以理解的是,用原子给的例程是能够用4位总线宽的模式的,但一放到我的程序里就不行。
怎么样才能用上4位的总线宽?

我的程序中关闭了所有的中断,而且只配置了系统时钟为144MHz,初始化了外置SRAM,W25Q128,24C02,LCD,USART1










正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-12-25 02:04:46 | 显示全部楼层
把SDIO的速度降低试试,比如设置12M的时钟频率
回复

使用道具 举报

3

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2018-12-22
在线时间
18 小时
 楼主| 发表于 2018-12-27 18:00:30 | 显示全部楼层
正点原子 发表于 2018-12-25 02:04
把SDIO的速度降低试试,比如设置12M的时钟频率

已经解决,重新调整系统时钟后可以使用。
回复

使用道具 举报

3

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2018-12-22
在线时间
18 小时
 楼主| 发表于 2018-12-27 18:01:20 | 显示全部楼层
调整系统时钟。
或者直接使用默认的系统时钟配置。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 22:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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