Me gustaría implementar un manejo de tarjetas SD de muy bajo consumo con los procesadores MSP430. Me gustaría registrar los datos de medición en la tarjeta SD sin un sistema de archivos. Quiero encender y apagar la alimentación de la tarjeta SD para ahorrar energía. Y me gustaría llegar a la inicialización de la tarjeta SD tan rápida como pudiera.
Para inicializar la tarjeta SD utilicé la sugerencia de @vaxquis de este problema:
¿Qué es la ¿Corregir la secuencia de comandos para la inicialización de la tarjeta microSD en SPI?
Está funcionando bien, puedo inicializar la tarjeta, guardar los datos y volver a cargarlos si es necesario.
PERO, después de reiniciar la alimentación de la tarjeta SD, antes del comando ACMD41, cuando configuro la señal de selección de chip en BAJA, la tarjeta SD responderá 0x00 solo después de aprox. ~ 50-80ms. Durante ese tiempo 0x01 es la respuesta de la SD. Entonces, si sigo enviando el ACMD41 continuamente, obtuve una respuesta de 0x00 solo después de 50-80 ms. O, si configuro LOW para CS y espero 50-80ms, inmediatamente obtuve una respuesta 0x00.
Después de la inicialización, todo va bien.
¿Alguna sugerencia para mi problema?
Así que mi secuencia de inicio:
- Habilitar la tarjeta SD VCC
- espera ~ 1ms
- iniciar la inicialización (CS alto + enviar 80 reloj)
- CS LOW
- CMD0 (arg: 0, crc: 0x95) + espera respuesta R1
- CMD8 (arg: 0x000001AA, crc: 0x87) + espera respuesta de eco R1 + arg
- CMD55 (arg: 0, crc: 0x65) + respuesta de espera
- CMD41 (arg: 0x40000000, crc: 0x77) + respuesta de espera
- repita ACMD41 (CMD55 + CMD41) hasta 0x00
- CS HIGH
- ... escribe, lee datos ...
- espera ~ 1ms
- desactivar la tarjeta SD VCC
- duerme ~ 800ms
- empezar de nuevo
Si no se cambia la alimentación de la tarjeta SD, este problema no aparece.
Y estoy usando una tarjeta SDHC Ver2.0 de 8GB.