Estoy tratando de conectar una tarjeta micro-SD a un controlador PIC32. En este momento estoy golpeando el protocolo SPI para comunicarme con la tarjeta. (En un futuro próximo usaré los pines apropiados para usar SPI real, pero por ahora tengo que usar esta solución). En pocas palabras: puedo inicializar la tarjeta y obtener respuestas correctas para todos los comandos, pero cuando intento emitir el comando cmd 17, responde con 0x01 (inactivo) en lugar de 0x00 (listo) y las lecturas posteriores devuelven 0xFF . El token 0xFE nunca llega. He probado muchos sectores diferentes como argumento para cmd 17, pero eso no hace una diferencia.
Estos son los comandos y respuestas:
>> (0) 40 00 00 00 00 95
<< (0) 01
>> (8) 48 00 00 01 AA 87
<< (8) 01 00 00 01 AA
>> (55) 77 00 00 00 00 65
<< (55) 01
>> (41) 69 40 00 00 00 77
<< (41) 01
>> (58) 7A 00 00 00 00 FD
<< (58) 01 40 FF 80 00
>> (16) 50 00 00 02 00 15
<< (16) 01
>> (17) 51 00 00 00 00 55
<< (17) 01
Todos me quedan bien, excepto el último. (Por cierto, siempre estoy usando el CRC correcto, aunque soy consciente de que no es necesario)
La tarjeta funciona con 3.3V. El voltaje no cae al acceder a la tarjeta. Todas las líneas, excepto el clk, tienen una resistencia de extracción de 100k.
¿Cuál podría ser la razón por la que cmd 17 no da la respuesta correcta?
Edición: la frecuencia del reloj es de aproximadamente 145 kHz. Recuerda que es bitbanged. ¿Podría esto influir en el comando de lectura?