Tarjeta SD Comando ACMD42

De acuerdo con las hojas de datos de la tarjeta SD, hay una resistencia 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 utiliza para desactivar esta resistencia pull-up. Sin embargo, cuando busco algún código de controlador de dispositivo SD, veo que no envían este comando.

¿Es obligatorio enviar el comando ACMD42 o es una recomendación? ¿Qué sucede si no enviamos este comando?

¿Son dos preguntas? No parecen relacionados.
mi explicación había sido eliminada por error. ¡Gracias por el aviso! @Austin

Respuestas (1)

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

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

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

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

Para la detección de tarjetas, el host detecta que la línea se eleva. Este pull-up debe ser desconectado por el usuario , durante la transferencia de datos regular, con el comando SET_CLR_CARD_DETECT (ACMD42)

Entonces, la especificación establece explícitamente que se debe usar ACMD42 para desconectar la resistencia pull-up.

¿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 tal vez no haga ninguna diferencia.
  2. En el modo SD de 4 hilos, será una línea de datos, por lo que sea lo que sea lo que esté impulsando el autobús, deberá superar la subida 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 bastante mala calidad. Hay varias partes de la especificación que son bastante claras sobre lo que debe hacer un host en varios puntos. Por lo general, estos se simplifican en el código público. Sin embargo, este código seguirá funcionando el 90% del tiempo.

Entonces, en resumen: la especificación dice que debe desconectar la resistencia, pero si no lo hace, probablemente no tendrá problemas en el modo SPI.

Estaba pensando cosas similares contigo. Tu explicación me da seguridad. ¡Gracias David!