关于FATfs和SD卡的读写DMA的问题

2019-07-20 06:57发布

现在要用将2048字节倍数的数据通过fatfs系统和SDIO存入SD卡内的txt文件中,实现读写就可以,SDIO有DMA,想问一下官方给的fatfs例程代码中SD卡初始化中有
errorstatus=SD_SetDeviceMode(SD_DMA_MODE);        //DMA模式,想用DMA的话只要打开这个就行了,还是说还要把DMA的SDIO通道和数据流配置一下才能用?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
龙行tianxia123
1楼-- · 2019-07-21 04:46
正点原子 发表于 2018-1-31 01:57
你原来的初始化,放哪里了?

我发现原因是SD卡数据总线宽度一直是1。我用ACMD6去设置数据总线宽度为4,但是一直不成功。什么原因?
正点原子
2楼-- · 2019-07-21 06:16
 精彩回答 2  元偷偷看……
正点原子
3楼-- · 2019-07-21 10:04
你试试在初始化SD卡的时候,禁止中断(禁止任务调度),初始化完成以后,再开启,试试看。
Jong
4楼-- · 2019-07-21 15:37
正点原子 发表于 2018-1-6 01:46
只要开这个,剩下的,代码自动处理了

原子哥,你好 ,分别用DMA模式和查询模式测试  10K字节的数据写入,写入时间都是43ms左右,不应该是DMA模式下更快而且快的明显吗?
qiousanxi
5楼-- · 2019-07-21 20:43
 精彩回答 2  元偷偷看……
Jong
6楼-- · 2019-07-22 01:50
qiousanxi 发表于 2018-8-1 11:30
DMA 不一定快, 但肯定减轻CPU 负担

我的初衷是 想采用DMA模式写入SD卡,这样可以腾出时间让cpu做其他事情。但是结果是DMA模式和查询模式下 执行  写入10K字节 语句耗费的时间一样。因为在dma模式下,有这样的语句:while(((DMA2->LISR&(1<<27))==RESET)&&timeout)timeout--;//等待传输完成。

一周热门 更多>