SD卡的识别问题,一些卡无法识别。
SD卡驱动在很多情况下都可以正常的识别SD卡,但是有一些卡却无法识别。
查看log,可以看到一些初始化命令无法获得响应,总是超时。
请问大家遇到过类似的问题吗?可能是哪些方面的原因呢?
[解决办法]
遇到过,主要买的是劣质卡的多。
[解决办法]
哪些命令超时
驱动初始化会发一些命令来确定卡是MMC还是SD
SD卡不支持MMC的命令,所以会没有响应
最好仔细看以下初始化到哪一步有问题
[解决办法]
这个问题,估计没有办法解决
[解决办法]
我也遇到过类似的问题,不过和驱动没有什么太大的关系。
当时是硬件部分为了过EMI测试多加了一些电容,导致在初始化过程中会有很多命令出现Timeout。
后来将电容去掉就OK了,但是中间具体原因我也不是很清楚。
如果要验证这个可以把SD卡的工作频率降低,一般情况下那些识别不了的卡也就可以识别了。
不过这个也只是验证,真正使用是不可能把频率降低的,不然读写速度会变慢。
当然也不排除SD卡本身的问题。
[解决办法]
可能的原因:
1. pcb布线长度导致时钟、数据线有一定的时差,一般卡容差大没影响,有些卡容差小就容易暴露,尤其是非品牌的劣质卡。
2. 布线、板材等造成时钟线的寄生电容过大,使边沿不够陡,就是上去慢,下来也慢,影响了时序的判断,造成无码。特别强调是:时钟线。
3. 非原装、非水货的劣质卡(能不能叫山寨卡呢)很容易出问题,不要使用。
另外,MMC和SD可以不用担心兼容性,目前大部分的cpu提供的SD相关驱动都会支持MMC和SD的,自动识别。
[解决办法]
“真的吗?识别阶段,SD 卡的 SCK 频率是区区 400 kHz。这样的低频下都不行,进入读写模式还能用吗?卡的生产商不至于没有做过基本的读写测试吧?
楼主,你的卡驱动,是 SD 协议还是 SPI 协议?”
这个跟频率是没关系的。一旦由于干扰、延时造成了时差,不管频率高还是频率低都会有影响,无非是高频时的影响更明显和强烈一点。
卡的生产商的测试肯定要做,但是用来测试的工具、仪器未必都是高端的。劣质的一般也就用电脑试一下能读写就行。专业的是要用标准的专业分析仪器测的。
SD卡是支持4bit协议和1bit的SPI协议的,自适应的。
[解决办法]
我们用的BSP检测SD卡的时候class4的卡就检测不到,读SD卡中的信息返回为0,class2的就可以,并且在最初阶段都是用的低速去读,正常情况下应该是可以读到信息的啊,大不了class4的卡不按那么高的速度工作嘛,搞不懂为什么,也在挠头呢。
[解决办法]
若SD卡里没有重要的东西就D格式化一下,可能行,U盘试过,SD卡没试过。