Tarjeta SDHC de Sandisk ¿Respondiendo con un comando ilegal a CMD8 por SPI?

1

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).

  1. Para 100 ciclos de reloj: MOSI = 1; CS = 1
  2. Próximos 48 ciclos de reloj: CMD0 se envía a través de MOSI con CS = 0: 0x400000000095
  3. Próximos 8 ciclos de reloj: lea la línea MISO: 0x01
  4. Próximos 48 ciclos de reloj: CMD8 se envía a través de MOSI: 0x48000001AA0F
  5. 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?

    
pregunta EmilyOskett

1 respuesta

2

Según el algoritmo de cálculo de CRC7 , CRC de 48000001AA debe ser 87 (43 * 2 + 1) y no 0F . La configuración incorrecta de CRC7 es la causa del error de comando no válido.

    
respondido por el Anonymous

Lea otras preguntas en las etiquetas