OpenEdv-开源电子网

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

阿波罗F429 SDIO DMA方式使用新的Hal库多块读写慢,请大神指点

[复制链接]

11

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-11-8
在线时间
40 小时
发表于 2020-7-30 17:34:17 | 显示全部楼层 |阅读模式
1金钱
使用DMA方式读写连续4块(SD_WriteDisk(buf,addr,4)和SD_ReadDisk(buf,addr,4));使用原子哥SD卡配套例程,读写可以很快返回OK,数据也能正确读写;因为原子哥用的HAL库比较旧了,使用了最新1.25.0的HAL库(连续几个版本的库都差不多),新的库和原子哥的库区别比较大,API也变了(应该在探索者采用HAL库时就变了)。调用HAL_SD_WriteBlocks_DMA()和HAL_SD_ReadBlocks_DMA()后调用HAL_SD_GetCardState()轮询卡是否传输完成状态(参考的探索者HAL库例程,F429例程是HAL_SD_CheckWriteOperation/HAL_SD_CheckReadOperation),很多时候都要等待好几秒钟才返回OK,如果只读1块就返回很快。在L496上使用也出现一样的现象,怀疑库的问题,请大神指点


最佳答案

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

问题解决了,必须先等待DMA完成后,才能再调用HAL_SD_GetCardState
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-11-8
在线时间
40 小时
 楼主| 发表于 2020-7-30 17:34:18 | 显示全部楼层
问题解决了,必须先等待DMA完成后,才能再调用HAL_SD_GetCardState
回复

使用道具 举报

15

主题

1061

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
3623
金钱
3623
注册时间
2019-8-14
在线时间
1054 小时
发表于 2020-7-30 19:27:22 | 显示全部楼层
帮顶~~
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-4-30 19:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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