最近在做个东西,需要快速读取文件的数据取出来用,我看了下底层的代码,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,到底是个怎么回事?求解
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
void SD_DMA_Config(u32*mbuf,u32 bufsize,u32 dir)
这个函数里 DMA_InitStructure.DMA_BufferSize = 0;这一句,我把0改成bufsize。
SD_Error SD_Init(void)
这个函数里面关于设置时钟频率SDIO_CK的相关注释掉
就行了
//但是!!!!!!!!!!!!!!!!!!!!!
当我把这些有改回来,发现又并不影响了,所有到后面我都不清楚具体是什么问题就成功了
一周热门 更多>