120742915 发表于 2017-3-23 17:15:30

stm32f4+freertos+SDIO

本帖最后由 120742915 于 2017-3-23 17:22 编辑

在下用freerots+sdio驱动tf卡,出了不少问题
1.读取数据经常卡死
解决方式:由4位模式改为1位模式。稳定性倒是上去了,但公司要求速度,于是找另外的方式,发现sd_diskio.c里面没有使用dma传输,
      于是改为dma传输,稳定性和速度都看似解决了。

2.大数据操作出错
现象:问题1说了,问题看似解决了,但实际还有问题,加入以512个数据长度进行操作很稳定,数据也没错误,但如果超过512进行操作就会
      偶尔出问题,这个偶尔是只也有正确的,也有不正确的,并且不正确始终就是那几个不正确,且每次都一样。
      如果我改回1位非dma方式就没有错误。也就是说问题应该出在dma上,这下完全不知道怎么解决了。
                              

请看上图(部分数据),读取少了两个数据,但最后结果长度是一样的,因为在后面某个地方又会添加两个数据,那两个数据并不是丢的这两个数据。

哪位高手有遇到过没,帮帮忙,不胜感激

混森蓝兽 发表于 2017-3-23 18:10:09

不懂帮顶

草民星空 发表于 2017-3-24 08:58:45


不懂帮顶

hpdell 发表于 2017-3-24 09:57:11

st官网应该有历程吧,你可以参考一下看看

彬果果 发表于 2017-3-26 16:18:47

我没上系统也出现了类似的情况,求解啊

xmshao 发表于 2017-3-27 17:24:55

如果是大容量卡的话,只支持BLOCK 读写操作,且块大小固定为512B。
相关函数也是基于这个约定写的。

120742915 发表于 2017-3-29 16:22:57

xmshao 发表于 2017-3-27 17:24
如果是大容量卡的话,只支持BLOCK 读写操作,且块大小固定为512B。
相关函数也是基于这个约定写的。 ...

是dma模式限制的?
为何用非dma方式却又是正常的?

drjloveyou 发表于 2017-4-10 17:17:25

也遇到和你相似的问题。似乎512字节dma操作,容易有概率在512倍数的地方丢失数据。
页: [1]
查看完整版本: stm32f4+freertos+SDIO