Fallo en el circuito de alimentación de la tarjeta Micro SD

Descripción

Estoy diseñando un sistema en el que hay un circuito que controla la potencia aplicada a una tarjeta micro SD (activar/desactivar).

El circuito es el siguiente:

ingrese la descripción de la imagen aquí

El circuito de control de potencia lo realiza un P-MOSFET que está desactivado por defecto.

La señal MICROSD_PWR_EN está conectada a un pin de un microcontrolador configurado como drenaje abierto.

Asunto

El voltaje medido en el pin VDD de la tarjeta micro SD debe ser 0V por defecto. Sin embargo, este voltaje está cerca de +1V, que no es ni un "0" lógico ni un "1" lógico. El voltaje medido en el nodo "+3.3V" es +3.288V y el medido en la puerta de Q5 P-MOSFET es +3.285V.

¿Tienes alguna idea sobre este tema?

¿Podría estar relacionado con la diferencia de 3 mV entre la fuente y la puerta del transistor?

solución de firmware

En primer lugar, gracias a todos por sus respuestas.

Parece que resolví el problema por firmware: al configurar los GPIO de la tarjeta SD como salida de drenaje abierto y al configurarlos en "0" lógico, el voltaje en el pin VDD de la tarjeta SD ahora está cerca de 0V.

Como todos señalaron, probablemente esté relacionado con los diodos de protección de los GPIO del chip de la tarjeta SD.

Me pregunto si está siendo autoalimentado hasta cierto punto por las resistencias pull-up. Tal vez intente eliminarlos temporalmente si eso es lo suficientemente fácil y, si ese es el caso, conéctelos después del FET.
Google 'diodos de protección'. Pero creo que cambiar el poder como este puede provocar la pérdida de datos. ¿Qué sucede si cambia la alimentación mientras la tarjeta está escribiendo datos internamente? ¿Puedes simplemente manipular la línea _DETECT en su lugar?
@markrages En mi sistema, solo hay accesos de lectura a la tarjeta SD. Por lo tanto, no hay ningún caso en el que se puedan perder datos. La razón para usar este control de energía es asegurarse al inicio del sistema de que la tarjeta está en un estado correcto al forzar un apagado y luego un encendido. He visto tarjetas SD que estaban en un estado desconocido después del inicio del sistema y quiero evitar esto.

Respuestas (2)

El +1V residual que está viendo se debe a la polarización de los otros pines de señal de la tarjeta uSD. La corriente pasa desde niveles altos en los pines de E/S del microcontrolador conectados en la interfaz SDIO o a través de las resistencias de 47K que tiene en estas líneas al chip controlador en la tarjeta uSD. Desde allí, pasa a través de la red de protección de entrada en estos pines al pin VDD de la tarjeta uSD donde lo ve aparecer en el nivel de 1V.

Puede corregir esta situación siguiendo los pasos a continuación:

1) Conecte el lado de la línea de suministro de las resistencias pullup al VDD conmutado de la tarjeta uSD.

2) Cada vez que el firmware del microcontrolador establece la señal MICROSD_PWR_EN alta para desactivar la alimentación de la tarjeta, establezca todos los pines de salida de la interfaz SDIO en un nivel bajo enviando valores de 0 bits a sus bits de registro de puerto. Tenga en cuenta que en algunos casos en los que SDIO está habilitado para un periférico integrado dedicado en el microcontrolador, puede ser necesario volver a configurar estos pines de salida en modo GPIO para permitir que el FW obtenga el control de los pines.

3) Para cualquier señal que sea entrada al microcontrolador desde la interfaz SDIO, debe hacer arreglos para que pasen a un nivel bajo siempre que el microcontrolador configure la señal MICROSD_PWR_EN alta. Esto se puede hacer de una de dos maneras. Puede cambiar la resistencia pullup de 47K a un pulldown en estas líneas específicas. De lo contrario, los pines de entrada podrían volver a programarse en modo GPIO y luego configurarse como salidas a un nivel bajo. Esto último puede ser más fácil ya que los pines de E/S se manejan igual que los pines de salida.

En el momento en que el microcontrolador va a volver a habilitar la alimentación de uSD configurando la señal MICROSD_PWR_EN baja, el firmware se escribirá para volver a configurar todos los pines de la interfaz SDIO a su modo de funcionamiento normal.

Es muy probable que lo que esté midiendo sea la corriente de fuga de las líneas de imagen y las resistencias pull-up que producen un pequeño voltaje en los otros pines y que, debido a los diodos internos en la tarjeta SD, se esté filtrando al pin de alimentación.

Probablemente esté midiendo ese voltaje con un voltímetro de alta impedancia. Intente poner 100k ohmios desde el pin Vdd a tierra. ¿Reduce este voltaje que mide?

También es probable que la fuga a través del FET sea significativa con estas impedancias altas.

He puesto una resistencia de 100K entre el pin VDD de la tarjeta SD y tierra, el voltaje medido es mayor que antes (+2.45V).