这两天调试SDIO,头大,手里有山寨2G卡3种,16G金士顿卡1个,4G金士顿卡 1个。
网上测试了N多版本的SDIO代码,没一个能全支持的...
都不如现在的SPI版本驱动。
挑卡是最大的问题。只有4G的金士顿最好识别,其他的要嘛能读文件名(读内容出错),要嘛干脆文件名都不能读(初始化也许能过,但是不能读文件)。
测试了查询模式,DMA模式(多是4位),测试了RTT的SDIO驱动(1位),大多是能初始化通过,但是在执行SD_ReadBlock的时候,查询模式就报数据CRC错误,收到一串的0,而DMA模式则直接就是设置块大小失效。
不知道哪位有比较好的SDIO驱动,自认为稳定的,可以发上来给共享下不?先谢谢了。
或者是SDIO干脆就是STM32的另外一个鸡肋?
听说1位模式比较好,但是1位DMA和SPI区别,还真是不大...体现不了SDIO的优势啊。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
请问原子:在SD_DMA_Config()中,为什么对DMA_BufferSize的配置是Bufsize/4?这是怎么来的?我没弄明白。谢谢原子了!
---------------------------------
因为一次传输是4字节.
---------------------------------
按照您的意思,DMA_BufferSzie定义的数据量是按字节算的,比如DMA_BufferSize = 1024,意思就是一次DMA传输的数据量就是1024个字节,但是在SD卡的读操作中,根据2.0协议,定义了_align(4),所以每次操作是一下读出4个字节,因此就配置成bufsize/4,是这个意思吗?
DMA_PeripheralDataSize_Word 4个字节,DMA_BufferSize=bufsize/DMA_PeripheralDataSize_Word
一周热门 更多>