我在嵌入式设计中使用microSD卡.该卡通过SPI接口连接到微控制器.它适用于我之前使用的所有卡,但现在我的新卡不会初始化.该卡是Transcend 2 GB microSD卡(TS2GUSD).
发送初始时钟串以切换到SPI模式后,我执行以下操作:
CMD0(参数0,CRC 0x95) - >响应0x01 - >确定
CMD8(参数0x000001AA,CRC 0x87) - >响应0x01 0x000001AA - >表示它是SDC V2 +卡,支持2.7 V - 3.6 V的电压范围 - > OK
然后我应该发送ACMD41命令,但是当发送必须在CMD41之前的CMD55(参数0,CRC 0)时,我得到响应0x05 - >非法命令.我也尝试发送CMD1(用于MMC卡),但它提供了类似的非法命令响应.该代码适用于我的Sandisk 2 GB microSD卡.
我该如何解决这个问题?
Ron*_*Ron 16
我似乎找到了这个问题.当我为CMD55计算正确的CRC并发送它而不是伪CRC时,接受该命令(结果0x01).如果你看一下7.2.2节中的物理层规范,它明确地说:
默认情况下,SPI接口在CRC OFF模式下初始化.(命令CMD0和CMD8除外).
这一系列的Transcend卡似乎并非如此,因此违反了规范.同样在CRC错误的情况下,回复应该是0x09而不是0x05.我试图用CMD59明确关闭CRC校验,但这似乎没有帮助.
=>为(所有?)命令计算正确的CRC使卡工作.
我与Transcend有关此事的支持.如果我学到了一些有用的东西,我会在这里知道.
请注意,之前我使用过其他2 GB的Transcend卡,但它们是在台湾制造的,而新的是在韩国制造的(并且似乎是三星卡(MMAGR02GUDCA)).
| 归档时间: | 
 | 
| 查看次数: | 35949 次 | 
| 最近记录: |