現在、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 を読み取ることができました。