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]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
qq88714082010
1楼-- · 2019-07-21 15:38
回复【7楼】正点原子:
---------------------------------
把中断开了也不行  一样的错误 
而且DMA模式不用屏蔽中断也是不行啊
qq88714082010
2楼-- · 2019-07-21 16:01
 精彩回答 2  元偷偷看……
qq88714082010
3楼-- · 2019-07-21 21:43
 精彩回答 2  元偷偷看……
qq88714082010
4楼-- · 2019-07-22 03:17
卡换了不少, 时钟改分频改0x30了,还是这里问题
正点原子
5楼-- · 2019-07-22 09:15
回复【8楼】qq88714082010:
---------------------------------
在我们开发板上跑的好好的哦
qq88714082010
6楼-- · 2019-07-22 09:16
回复【12楼】正点原子:
---------------------------------
原子哥,这个文档提到了没有检测到起始位问题,我拿你的例程对照了一下,只看出少了个延时,但事实上我加上延时还是一样,帮看看还有哪里不同么?
文档链接   http://blog.csdn.net/xuzhenglim/article/details/5632176

一周热门 更多>