SDIO 1bit读写都正常,就是非常慢,4bit查询模式、DMA模式挂掉

2019-07-21 00:51发布

[mw_shl_code=c,true] 代码用的是原子F407的[/mw_shl_code] [mw_shl_code=c,true]把关闭所有中断屏蔽掉,然后直接使用,并添加到文件系统,可以读写文件,但是会漏写,写400K的文件,只写进了200多k的样子,[/mw_shl_code] [mw_shl_code=c,true]查出错误在这里发生了[/mw_shl_code] [mw_shl_code=c,true] [mw_shl_code=c,true] else if(SDIO_GetFlagStatus(SDIO_FLAG_STBITERR) != RESET) //接收起始位错误 { SDIO_ClearFlag(SDIO_FLAG_STBITERR);//清除错误标志 return SD_START_BIT_ERR; }[/mw_shl_code] 原子哥说是太快了,我又一直加大分频一直到0x18,结果还是没变化,一样的错误。

换用DMA模式,代码一直停在这里
while (DMA_GetCmdStatus(DMA2_Stream3) != DISABLE){}//等待DMA可配置


但是把初始化中的4位数据线改成1位的时候,读写都正常,就是很慢很慢[/mw_shl_code] [mw_shl_code=c,true] [/mw_shl_code] [mw_shl_code=c,true]if(errorstatus==SD_OK)errorstatus=SD_EnableWideBusOperation(SDIO_BusWide_1b);[/mw_shl_code] [mw_shl_code=c,true] [mw_shl_code=c,true]我看到貌似不少人遇到这样的问题,但是没找到解决了分享一下的,求指教。。。。[/mw_shl_code]
[/mw_shl_code] [mw_shl_code=c,true] [mw_shl_code=c,true]另外插问一下:例程SDIO DMA配置里面的DMA传输长度为啥是0,事实上用0 还是512 都没影响,为什么呢?[/mw_shl_code] [/mw_shl_code] [mw_shl_code=c,true]  DMA_InitStructure.DMA_BufferSize = bufsize;//数据传输量[/mw_shl_code] [mw_shl_code=c,true]会的大神帮下小弟 谢谢了[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。