comando de tarjeta SD ACMD42

3

Según las hojas de datos de la tarjeta SD, hay una resistencia de pull-up interna en la línea DAT3, y podemos usar esta línea para detectar la tarjeta. Además, se describe el comando ACMD42 que se usa para deshabilitar esta resistencia de pull-up. Sin embargo, cuando busco un código de controlador de dispositivo SD, veo que no envían este comando.

¿Enviar el comando ACMD42 es una necesidad o una recomendación? ¿Qué sucede si no enviamos este comando?

    
pregunta cagatayo

1 respuesta

2

Tiene razón en que, según la especificación, la línea DAT3 tiene varios usos.

En el modo SD es la cuarta línea de datos y en el modo SPI es la señal de selección de chip. La versión 4.10 de la especificación simplificada de la capa física dice:

  

En el encendido, esta línea tiene un 50KOhm pull up habilitado en la tarjeta.

Y continúa diciendo (énfasis mío):

  

Para la detección de la tarjeta, el host detecta que la línea está en alto. Este usuario debe ser desconectado por el usuario , durante la transferencia regular de datos, con el comando SET_CLR_CARD_DETECT (ACMD42)

Por lo tanto, la especificación establece explícitamente que ACMD42 debe usarse para desconectar la resistencia de recuperación.

¿Qué pasaría si el anfitrión no hace esto? Hay tres escenarios:

  1. En el modo SD de 1 cable, este pin (probablemente) no se usa, por lo que quizás no haga ninguna diferencia.
  2. En el modo SD de 4 cables, esta será una línea de datos, por lo que cualquier cosa que conduzca el bus tendrá que superar el tirón de 50k. Tal vez esto sería un problema a alta velocidad.
  3. En el modo SPI este es el pin de selección de chip. Es poco probable que tenga problemas para cambiarlo a las velocidades involucradas.

Solo puedo adivinar sobre el modo SD ya que esa parte de la especificación no es pública.

Tenga en cuenta que una gran cantidad de código en línea para tarjetas SD es de baja calidad. Hay varias partes de la especificación que son bastante claras acerca de lo que debe hacer un host en varios puntos. Estos se suelen simplificar en el código público. Sin embargo, este código seguirá funcionando el 90% del tiempo.

En resumen: la especificación dice que debes desconectar la resistencia, pero si no lo haces, probablemente no tendrás problemas en el modo SPI.

    
respondido por el David

Lea otras preguntas en las etiquetas