Problemas de tiempo de inicialización de SPI SDHC

2

Tengo una tarjeta SD HC Wi-Fi de 16 GB de Transcend. Intento inicializar la tarjeta a través de SPI utilizando un Arduino Uno, enviando

  

CMD0, arg: 0, CRC: 0x95

     

respuesta: 0xFF

pero la respuesta esperada es:

  

0x01

Cuando intento el mismo proceso con una tarjeta SD de 2 GB (sin SDHC), la respuesta es:

  

0x01

como se esperaba. Por lo tanto, el proceso de inicialización en sí no puede ser el problema.

Aquí puede ver los tiempos de la tarjeta SD de 2 GB analizada con un analizador lógico:

AquípuedeverlostiemposdelatarjetaSDHCanalizadosporunanalizadorlógico:

Lo extraño de esto es que la tarjeta SD actúa como se espera usando:

  

Modo 0 (CPHA = 0, CPOL = 0)

Por lo tanto, el valor MISO siempre es estable en el borde ascendente como esperaba: ( Utilizando MMC / SDC )

Por otro lado, la tarjeta SDHC no se comporta de esta manera, y esta podría ser la razón por la que falla el proceso de inicialización. La tarjeta SDHC parece funcionar en Modo 1, por lo que el valor MISO siempre es estable en el borde descendente .

¿Por qué la tarjeta SDHC no se está ejecutando en modo 0, como también lo espero?

Actualización: Estoy usando el sdfatlib que está esperando los 74 ciclos de reloj requeridos.

  

// debe proporcionar un mínimo de 74 ciclos de reloj con CS alto.

     

para (uint8_t i = 0; i < 10; i ++) spiSend (0XFF);

Y también el comportamiento registrado muestra que hay más de 74 ciclos de reloj hasta que CS se establece en bajo para enviar el comando de inicio.

  

Pulsos: 79 (arriba: 79, abajo: 80)   

    
pregunta der_die_das_jojo

0 respuestas

Lea otras preguntas en las etiquetas