我正在开发一个目前只支持 SDSC v1 卡的嵌入式系统。由于越来越难找到小于 2 GB 的卡,我正在尝试添加对 SDHC 卡的支持。与卡的通信是通过 SPI 总线完成的。
所以这是我初始化卡的方法:
- 发送 CMD0。卡返回 0x1
- 发送 CMD8 + 0x1AA。卡返回 0x1 和 0x1AA
- 发送 ACMD41。卡返回 0x0。
之后,我阅读了MBR并发现在 0x30 LBA处有一个 FAT16 分区。但是,从该地址 (0x30*512) 读取扇区会返回重复的 0x01 0x09...
- 发送 ACMD41 时,我发送命令 id 0x69。这是对的吗?还是我应该发送 CMD55 然后发送 CMD1?
- 图1显示我需要在发送 ACMD41 后发送 CMD58 和可能的 CMD16。有必要吗?我能够在不执行它们的情况下读取有效的 MBR。