La tarjeta SD de repente deja de responder a CMD0 (RESET/SPI)

Un dispositivo que había estado probando durante más de dos meses de repente comenzó a dar FR_DISK_ERR (estoy usando FAT-FS de Elm Chan) [Enlace] . Cuando intenté depurar, el comando (CMD0) que debe registrarse para configurar la tarjeta SD en modo SPI (como se describe en la hoja de especificaciones de la tarjeta SD - SDcard.org [enlace] ) devolvió 0xFF y no 0x01, es decir, falló. Mi pregunta es:

*Si CMD0 falla, ¿significa que el controlador de la tarjeta SD no funciona?

*¿Seguirá funcionando en modo SDIO incluso si CMD0 falla? (No pude probarlo porque mi uC no es compatible con SDIO)

*¿Puede un sistema operativo (Linux, Windows, Mac) formatear esta tarjeta SD para que vuelva a funcionar? Si es así, ¿cómo lo hace?

El FAT-FS de Chan no tiene ningún método para resolver si tenemos un FR_DISK_ERR, por lo que necesito encontrar una manera de resolver esto de forma remota.

Pruebe con dos tarjetas diferentes y confirme con un analizador lógico lo que realmente sucede en el bus. He experimentado varias fallas en la tarjeta SD.
Probé con dos tarjetas diferentes. Funcionaron, excepto este. También probé esta tarjeta SD en otro dispositivo, tengo el mismo problema con el segundo dispositivo y falla la tarjeta SD. ¿Cómo se corrompe así una tarjeta? ¿Cómo deja de responder el uC de la tarjeta?
Incluso gparted (Linux) no puede reconocer la tarjeta SD. Recibo un error "error de entrada/salida durante la lectura en /dev/sdb".
Solo tira esta tarjeta. La tarjeta también puede ser falsificada bunniestudios.com/blog/?page_id=1022 o esta simplemente tuvo menos suerte (una vez maté una tarjeta Samsung en una raspberry pi en un año sin escribir nada).
@filo, tengo una tarjeta SD que no responde a CMD9, que es para obtener el registro de CSD. Pero este comando falla (tiempo de espera). ¿Puede deberse a que la tarjeta solo es compatible con SDIO (CMD9 no es compatible con SDIO)?
No, todas las tarjetas SD son compatibles con SPI. ¿Estás enviando dos bytes ficticios entre comandos? ¿Envió ~80 relojes antes de comenzar algo con la tarjeta?
Sí, justo antes de enviar CMD0, enviamos 74 bytes ficticios. Pero solo enviamos un byte ficticio antes de cada comando. Estoy usando un controlador hecho por Ya Dan, powermcu.com, funcionó para todos los demás dispositivos, por lo que el controlador está en buenas condiciones. Puede que sea la tarjeta SD.

Respuestas (1)

Si CMD0 falla, es que los pines SPI/SDIO no están conectados correctamente (verifique sus conexiones) o el controlador no está funcionando. En mi caso, el controlador no funcionaba. Intenté usarlo en mi PC con Linux, incluso gparted no pudo detectarlo. Todavía no estoy seguro de por qué CMD9 falló, he intentado contactar al fabricante, veamos qué responde a eso. Y eso responde a mi propia pregunta.