Estoy usando una tarjeta microSD en un diseño incrustado. La tarjeta está conectada a un microcontrolador utilizando la interfaz SPI. Funcionó bien para todas las tarjetas que he usado antes, pero ahora mi nueva tarjeta no se inicializará. La tarjeta es una tarjeta microSD Transcend 2 GB (TS2GUSD).Inicialización de una tarjeta microSD utilizando una interfaz SPI
Después de enviar el tren inicial del reloj para cambiar al modo SPI, hago lo siguiente:
CMD0 (Argumento 0, CRC 0x95) -> respuesta 0x01 -> OK
CMD8 (argumento 0x000001AA, CRC 0x87) -> respuesta 0x01 0x000001AA -> significa que es SDC V2 + tarjeta, el rango de voltaje de 2,7 V - 3,6 V es compatible -> OK
Entonces debería enviar el comando ACMD41, pero al enviar el CMD55 (argumento 0, CRC 0) que debe preceder a CMD41, obtengo la respuesta 0x05 -> Comando ilegal. También traté de enviar CMD1 (para tarjetas MMC), pero da una respuesta comando ilegal similar respuesta. El código funciona bien con mi tarjeta microSD Sandisk 2 GB.
¿Cómo puedo solucionar este problema?
¡agradable! ¡Bien, entiendes el problema! ... Estoy aturdido porque parece indicar que los lectores de tarjetas USB no usan comandos combinados. Puede/debe marcar su respuesta como la correcta. BTW, sandisk, transcent, etc no tienen fundiciones de semiconductores ... hacen controladores y servicios de diseño digital para sus productos (simplemente no fabrican las fichas) – jpinto3912
Tuve que esperar 48 horas para marcar mi respuesta como correcta por alguna razón. Creo que los lectores de tarjetas USB usarán la interfaz "real" de la tarjeta de memoria SD (tiene velocidades más altas). En ese modo, debe usar CRC y no hay problema. – Ron
¿Alguna vez recibió una respuesta de Transcend? Supongo que enviaste todo el último byte como ceros, haciendo que el bit final sea incorrecto. La tarjeta se conformaría a la especificación e incluso el código de error tendría sentido. (Dejé una respuesta detallando esto un poco más, en si todavía está interesado en la causa después de ... 4 años) –