怎么使用DMA来读SD卡?

2019-07-20 11:21发布

最近在做个东西,需要快速读取文件的数据取出来用,我看了下底层的代码,f_read()函数执行读取文件的流程是在该函数中调用disk_read()函数,然后调用到SD_ReadDisk()函数,再到SD_ReadBlock()函数来读取文件所指向的扇区
由于原子的程序SDIO的读写都是通过查询模式的,所以我对于DMA模式读取SD卡的理解是,只需要把模式改成DMA模式就可以
也就是改这个地方
                errorstatus=SD_SetDeviceMode(SD_DMA_MODE);        //设置为DMA模式
//                errorstatus=SD_SetDeviceMode(SD_POLLING_MODE);//设置为查询模式

但是我发现并不能实现,那DMA模式+SDIO+FATFS,到底是个怎么回事?求解
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10条回答
142zjb
2019-07-21 04:08
帅帅的于 发表于 2017-10-9 15:12
请问后面还要修改什么?谢谢

void SD_DMA_Config(u32*mbuf,u32 bufsize,u32 dir)
这个函数里 DMA_InitStructure.DMA_BufferSize = 0;这一句,我把0改成bufsize。
SD_Error SD_Init(void)
这个函数里面关于设置时钟频率SDIO_CK的相关注释掉
就行了
//但是!!!!!!!!!!!!!!!!!!!!!
当我把这些有改回来,发现又并不影响了,所有到后面我都不清楚具体是什么问题就成功了

一周热门 更多>