Estaba intentando inicializar una tarjeta Micro SD de Sandisk, Alta capacidad, utilizando SPI. CMD0 devuelve 0x01, lo cual es bueno. Pero luego CMD8 devuelve 0x05 como los primeros 8 bits recibidos, lo que indica un comando ilegal, lo que no tiene sentido porque esto es SDHC.
Hice lo siguiente (el reloj está a 200 kHz. Los datos se envían primero a MSB, los datos se leen primero a MSB).
- Para 100 ciclos de reloj: MOSI = 1; CS = 1
- Próximos 48 ciclos de reloj: CMD0 se envía a través de MOSI con CS = 0: 0x400000000095
- Próximos 8 ciclos de reloj: lea la línea MISO: 0x01
- Próximos 48 ciclos de reloj: CMD8 se envía a través de MOSI: 0x48000001AA0F
- Próximos 8 ciclos de reloj: lea la línea MISO: 0x05
He intentado sustituir CMD58 por CMD8 en esos pasos, y eso devolvió un comando legal, por lo que no creo que sea un problema de tiempo. Pero no puedo pensar en una razón por la cual devolvería un error de comando ilegal para CMD8 cuando esta tarjeta es SDHC. ¿Alguien puede ayudarme con este problema?