新手入门
- 积分
- 7
- 金钱
- 7
- 注册时间
- 2022-6-30
- 在线时间
- 3 小时
|
2金钱
本帖最后由 TanSirOne 于 2022-11-26 16:41 编辑
STM32F407VET6 用最新CubeMX配置FATFS使用DMA传输模式,在打开两个文件的情况下时,第二次读取就会卡死
(1)打开的第二个文件未进行任何操作,仅仅是打开,第一次f_read没有问题,但是第二次就会卡死在里面
(2)不使用DMA模式可以完成全部的读取操作读取操作(写入没有试)
(3)我一次读取3000字节数据,同时数据也开启了4字节对齐(不管字节多少都会如下位置卡死)(4)具体卡死位置
if(BSP_SD_ReadBlocks_DMA((uint32_t*)buff,
(uint32_t) (sector),
count) == MSD_OK)
{
ReadStatus = 0;
/* Wait that the reading process is completed or a timeout occurs */
timeout = HAL_GetTick();
while((ReadStatus == 0) && ((HAL_GetTick() - timeout) < SD_TIMEOUT))
{
}
(5)没有任何的其他操作,仅仅是配置完读取文件,一次读取3000字节,不使用DMA没有任何问题。
(6)我不会从文件里直接修改 轮询模式和DMA模式 我每次都是重新建cubeMX文件
如果直接在sd_diskio.c文件里改相关函数名字的话,FATFS会出现错误 :fa_disk_error 和 没有文件系统的 错误;
(BSP_SD_ReadBlocks_DMA—>BSP_SD_ReadBlocks/BSP_SD_ReadBlocks->BSP_SD_ReadBlocks_DMA)
就算直接把 轮询模式的sd_diskio.c搬运过来也会出现错误。
不清楚还要修改那些地方才能更改FATFS的读取SD模式,希望高手指点!!!
|
|