¿Por qué no puedo emitir comandos después de CMD8 a una tarjeta SDHC en modo SPI?

3

Estoy utilizando la siguiente secuencia de comandos a 250 kHz SPI para inicializar las tarjetas SD:

  • (1 ms de espera, luego 80 relojes)
  • CMD0 con argumento 0x00000000
  • CMD59 con argumento 0x00000001 (activar la verificación CRC)
  • CMD8 con argumento 0x000001AA
  • CMD55 con argumento 0x00000000 (prefijo para ACMD)
  • ACMD41 con argumento 0x40000000 (conjunto de bits HCS)

Por supuesto, repetir el CMD55-ACMD41 hasta salir del estado inactivo. Los CRC son correctos (se calculan con el algoritmo apropiado). Chip Select se lanza después de cada comando (incluso entre CMD55 y ACMD41) con ocho relojes finales.

Esta secuencia funciona bien para las tres tarjetas SDSC que tengo; Puedo leer los datos de ellos después de la finalización de la inicialización. Sin embargo, las dos tarjetas SDHC que he fallado con él.

Ambos progresan correctamente hasta que CMD55 (incluso experimentando una respuesta 0x01 R1 de CMD8), luego a CMD55 reaccionan de la siguiente manera:

  • Maxell X Series SDHC Clase 4 8 GB (S708G1249 TP2T0M2B49059): No R1 incluso después de recibir 256 bytes de material de 0xFF.

  • PQI SDHC Clase 4 4 GB (BH1013316030G): 0xC2 viene después de 5 0xFF bytes, que tiene el bit 7 establecido (un R1 no debería tener este bit establecido), de lo contrario ni siquiera tiene el bit 0 establecer (inactivo) como debería ser.

La emisión de ACMD41 después de esto en cualquiera de las tarjetas da como resultado un R1 de 0x05 (comando ilegal + inactivo). ¿Ahora que? No intenté inicializarlos con CMD1 todavía (pero como son SDHC, no deberían reaccionar a eso).

(Ambas tarjetas funcionan normalmente cuando se accede a ellas desde una PC o en una cámara digital que tengo).

Intenté emitir otros comandos; también fallan de esta manera. Así que parece que después de CMD8 la tarjeta se volvió totalmente inaccesible a pesar del R1 válido.

    
pregunta Jubatian

1 respuesta

4

Lo encontré por fin.

Tienes que leer el R7 completo de CMD8, de lo contrario, aparentemente, las tarjetas SDHC están bloqueadas de alguna manera para que ya no sean accesibles (omití accidentalmente la lectura más allá del R1).

    
respondido por el Jubatian

Lea otras preguntas en las etiquetas