STM32F103xxx的官方SDIO驱动移植,终于搞定了

2019-10-15 20:42发布

最近闲了就玩玩STM32的SDIO驱动去了,小有收获

之前移植的是http://www.openedv.com/posts/list/25845.htm这个版本的,发现bug特多,很不正常的那个,头大

后面移植了官方的V4.5.0这个版本,搞定了,建议大伙们想玩这个的话移植这个靠谱一点,呵呵,不过还是有个bug的,对照SD卡的相关资料也很容易找出来,主要就是在读写block函数里面要设置block大小命令CMD16,要不然很容易死在DMA检测上面(如果用DMA控制传输的话)

呵呵,发此帖庆祝一下,嘿嘿

附件是源代码,学习原子的做法,增加
SD_Error SD_ReadDisk(uint8_t *readbuff, uint32_t sector, uint16_t cnt);    //读取磁盘SD_Error SD_WriteDisk(uint8_t *writebuff, uint32_t sector, uint16_t cnt);    //写入磁盘

这两个函数,方便操作,呵呵


卡结构体中SDCardInfo.CardCapacity(卡的容量单位修改为MB)要想得到字节为单位的请将SDCardInfo.CardCapacity<<20即可















友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
49条回答
正点原子
2019-10-18 00:08
回复【14楼】Badu_Space:
---------------------------------
谢谢.cool.
这种加printf的,我遇到过几次了.
原因:
1,字节对齐问题.
2,操作不当,没有按要求操作.

具体到你这里,怀疑是不是延时的问题?
库函数因为各个都是函数,一般需要一点时间.
而寄存器,如果全部操作寄存器,不要经过那么多函数调用.
看看是不是操作上面,有没有需要注意时间的.

另外,我们的战舰版本也有SDIO,寄存器版本的,你测试下是否也有这个问题?

一周热门 更多>