最近闲了就玩玩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即可
---------------------------------
恩,上传了一个搞好的,你测试一下看下能不能编译过去,我试过MDK3.8和MDK4.7的,都是可以编译的
w &= 0xFF;
if (IsDBCS1(w))
{ /* Check if it is a DBC 1st byte (always false on SBCS cfg) */
b = (BYTE)p[si++]; /* Get 2nd byte */
if (!IsDBCS2(b))
return FR_INVALID_NAME; /* Reject invalid sequence */
else w = (w << 8) + b; /* Create a DBC */
}
w = ff_convert(w, 1); /* Convert ANSI/OEM to Unicode */
if (!w) return FR_INVALID_NAME; /* Reject invalid code */
#endif
-----------------------------------------------------------------------------
else w = (w << 8) + b; /* Create a DBC */
这里我 加了个else编译才通过
回复【45楼】lansing1648:
---------------------------------
你这个不是文件系统里面的代码么?这里面不用改吧我的编译的时候只是报警,不过不影响使用
---------------------------------
是的 ,有报警,语句执行不下去.这样改一下应该没问题
---------------------------------
你该了之后试下操作SD卡里面的文件什么的,看下有没什么问题。我这里有个战舰的USB测试工程,你可以试下http://www.openedv.com/posts/list/27484.htm
一周热门 更多>