SDMMC驱动不正常,SD_InitializeCards返回超时错误(master)
Closed this issue · 9 comments
软件版本
- 软件已更新到最新版本
您使用的场景?
访问SD卡文件系统
您做了什么操作?
main函数中注释掉大部分任务,只留下UART_task,而SDIO_task设置与启动迁移至UART_task末尾执行,以便在SDIO_task能使用printf打印一些执行情况
您遇到了什么问题?
SD_Init中,执行SD_InitializeCards时返回超时错误
具体为其中的Send CMD9 SEND_CSD部分,发送完命令后,CmdResp2Error等待命令响应超时
(master分支表现如上,LVGL8.3分支也尝试了一下,结果类似,SD_Init返回超时,但暂时没去细测是否表现与master完全一致)
您期望的结果是怎样的?
想正常读写SD卡
1.sd卡容量多大,可能是不兼容你的卡,建议8g以下内存卡
2.线路板上拉电阻画了吗?
1.sd卡容量多大,可能是不兼容你的卡,建议8g以下内存卡 2.线路板上拉电阻画了吗?
不好意思,前面忘了写上硬件环境
卡128MByte,2.0,SDSC,上拉电阻都有
(补充一个,PE2做SD 插入检测的部分暂时屏蔽了,因为手上的板检测没接,PE2也用于其他地方了,然后卡一直插着)
尝试过一份其他的f1c100的sdmmc例程,使用的也是SDIO0,24MHz时钟源,400KHz SDIO CLK,
烧进同一块板是可以正常驱动的
应该是软件上的问题
目前我也在对比查看是为什么,好怪
前面都能正常响应其他CMD,到CMD9 SEND_CSD 的时候就一直没响应
尝试循环send cmd9,然后读STAR寄存器值直至其中的Response Index等于CMD9才跳出
但值一直读出的是是0x1906,Response Index值一直是0x3
即:
bit[16:11]: 0x3(好像是上一个执行的CMD3?(get rca)) —— Response Index
bit[8]: 卡存在 —— CARD_PRESENT 0:not present 1:present
其他位值均为默认值
(以上查自“F1C600 User Manual (Revision 1.0)” 应该F1Cxx系列都适用)
你看一下#4,是否修复了你的问题。如果正常,我就合并入master了。
测试了一下,不行,结果也是一样,发CMD9后等待响应超时了
你这边是没有看到这个现象吗?
如果是这样的话我想对比一下硬件上还有没啥差异,我这里手上的板和lichee pi的F1C100板结果是一样的
不过硬件里的立创工程那个好像立创专业版打不开不知道为什么?能重传一下吗,或者原理图PDF也行
没有,我的也是128M,很正常,可能你的卡哪里不一样吧。要不换张其他卡吧。
立创为什么打不开?打开提示什么?
没有,我的也是128M,很正常,可能你的卡哪里不一样吧。要不换张其他卡吧。 立创为什么打不开?打开提示什么?
工程可以打开了,原来需要半离线模式
我拿手上一些SD卡试了下,好像挑卡:
一张2G卡正常驱动写文件:识别为2.0,立即返回SD_OK
几张小容量卡128、256MB、512MB的都有些问题,情况如下:
识别有1.x或2.0的,有些返回超时,有一两张卡有时超时后的文件操作能正常写入文件
我换可以的先用着吧
后面看看啥时候有空再对比那个可以通读的SDMMC例程看看差异在哪再优化一下
👌
刚买了三张128 256 512试了一下, 测试全部是正常的,库应该没有问题
别用sdsc的卡