|
1
17
我似乎发现了这个问题。当我为CMD55计算正确的CRC并发送该CRC而不是伪CRC时,该命令被接受(结果0x01)。如果你看 the physical layer specification 第7.2.2节明确规定: 这一系列超越卡似乎并非如此,因此违反了规范。此外,在CRC错误的情况下,回复应为0x09而不是0x05。我曾尝试使用CMD59显式关闭CRC检查,但似乎没有帮助。 =>为(all?)命令计算正确的CRC使卡工作。
请注意,我以前使用过其他2GB超越卡,但它们是在台湾制造的,而新的是在韩国制造的(似乎是三星卡(MMAGR02GUDCA))。 |
|
|
2
2
我几乎有同样的问题。发送ACMD41时,我发送了CMD55,后面跟着CMD41。CMD55的响应为0x01,指示空闲状态并运行初始化过程(我认为这是正常的)。CMD41将以0x05响应,表示命令非法。事实证明,我的特定卡在默认情况下执行CRC检查,即使是在SPI模式下,也会将CRC错误误报为非法命令(即,它不符合SD规范)。当我计算正确的CRC时,它工作得很好。以下是我使用的CRC7计算代码,它对我来说运行良好: https://github.com/hazelnusse/crc7
|
|
|
3
2
你说你用过
|
|
|
4
1
CMD58还可以帮助您检查是否提供了正确的电压水平(有时插座存在接触问题)。 |
|
|
5
1
仅使用芯片选择(0)发送CMD0不会在SPI模式下初始化卡。这仅设置SPI模式。 在ACMD41返回“已接受”之前,卡不会初始化。默认情况下,CRC处于关闭状态。 |
|
|
6
0
在CMD55(0xFF发送+接收)之后和CMD41之前插入几个虚拟SPI周期。
注意:我意识到我参加聚会已经很晚了,但我希望这会对将来的人有所帮助。 |