Cómo detectar la inserción de la tarjeta SD sin una corriente de fuga

5

Estoy usando un SoC TI CC1111 para leer / escribir un SD microSDHC tarjeta, con un conector de tarjeta Amphenol . El pin de detección de tarjeta (CD) de la toma se conecta a tierra cuando no hay ninguna tarjeta presente. Cuando se inserta una tarjeta, la conexión se interrumpe. (Esto parece contradecir la hoja de datos, pero es lo que me dice mi multímetro).

Una forma de detectar la inserción de la tarjeta sería conectar un pin GPIO al pin CD. Por defecto, los pines del CC1111 están configurados con una resistencia interna de pull-up. Si una tarjeta estuviera presente, leería la lógica alta y, de lo contrario, el pin se tiraría a tierra. Pero me preocupa que esto pueda generar una corriente excesiva, y por supuesto, advierte la hoja de datos (pág. 90):

Unused I/O pins should have a defined level and not be left floating. One way to do 
this is to leave the pin unconnected and configure the pin as a general purpose I/O 
input with pull-up resistor. This is the default state of all pins after reset except 
for P1_0 and P1_1 ... Alternatively the pin can be configured as a general 
purpose I/O output. In both cases the pin should not be connected directly to VDD or
GND in order to avoid excessive power consumption.

Pregunta 1 : ¿dónde se consume la energía? ¿Está solo en la resistencia interna de pull-up? La hoja de datos dice que los pull-ups internos son 20k, por lo que con 3.3 V eso es aproximadamente 0.17 mA. ¿De eso están hablando? ¿O quizás la advertencia de "consumo excesivo de energía" solo se aplica cuando el pin está configurado como salida?

Qustion 2 : ¿Cuál es la forma correcta de detectar la inserción / extracción de la tarjeta sin desperdiciar energía?

Y no, todavía no he medido el sorteo actual, pero lo haré.

    
pregunta David

1 respuesta

5

Estoy bastante seguro de que la advertencia de la hoja de datos está ahí para cubrir el caso en el que un pin está vinculado directamente a Vcc o Gnd, pero luego el firmware configura ese pin como salida e intenta conducirlo al estado opuesto (ya sea porque de un error o un cambio de firmware posterior).

Si realmente desea jugar de forma segura, coloque una resistencia de valor relativamente bajo (por ejemplo, 1K) entre el contacto del zócalo de la tarjeta y el pin GPIO. Cuando el pin GPIO se usa como entrada, esta resistencia forma un divisor de voltaje junto con la recuperación interna que todavía permite que el pin se lea como "0". Sin embargo, si el pin GPIO se configura inadvertidamente como salida y se activa, sirve para limitar el flujo de corriente a unos pocos mA.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas