Tengo una placa ARM Cortex M3 personalizada que se comunica con una Raspberry Pi 4 a través de UART. Solo tres cables conectan el Pi a la MCU: Tx, Rx, GND. Cuando se apaga la fuente de alimentación de la MCU, el dispositivo no se apaga, pero consume 17 mA del pin Rx y puede llevar el riel de 3,3 V a 1,7 V, lo que es suficiente para mantener la MCU en funcionamiento, o al menos evitar que se reinicie. Presumiblemente, esto es a través de los diodos de protección cuando el suministro de 3.3V está apagado.
La Pi y la MCU funcionan con fuentes de alimentación independientes, pero están montadas en el mismo chasis y comparten una tierra. El cable UART tiene solo 10 cm de largo entre ellos.
¿Cuál es la forma correcta de aislar la energía entre estos dispositivos mientras se permite la comunicación UART? No necesito aislamiento galvánico, solo quiero evitar el reflujo de la fuente de alimentación. ¿Alguna sugerencia?
Actualmente tengo resistencias de 1 kΩ en serie con las líneas Rx y Tx, lo que evita que la MCU se encienda desde el Pi; sin embargo, todavía fluye corriente hacia el bus de 3.3 V y no sé si esto afectará negativamente los datos en serie.
(Editar: quiero enfatizar la naturaleza general de esta pregunta. Es común tener interconexiones push-pull entre dispositivos con interfaces como SPI, UART o simplemente bits GPIO. Todos estos tienen el potencial de alimentar energía a un dispositivo sin alimentación a través de los diodos de protección.)
Hay búferes que solucionarán esto (término de búsqueda: "ioff apagado parcial"). Siempre que el búfer se alimente desde el VCC de la placa Arm personalizado, bloqueará la corriente cuando el VCC esté ausente.
Pero también puedes arreglarlo con dos transistores, un PMOS como el BSS84 y un NMOS como el BSS138. Vea el esquema a continuación. Use V CC en su placa Arm personalizada para encender el BSS138. Esto, a su vez, encenderá el BSS84 para que la señal pueda pasar.
Pero cuando VCC no está presente, el BSS138 se apagará y luego el BSS84 también se apagará, y no puede fluir corriente de PI_TX a PI_TX_SW. Probablemente no se necesite R2. Probablemente ya haya algo entre VCC y GND que hará que VCC colapse.
Esta es la versión concisa de la respuesta porque estoy juzgando que su nivel de experiencia ya es bastante avanzado. Sin embargo, si lo desea, no dude en solicitar más detalles o aclaraciones en la sección de comentarios.
Si no es necesario ser frugal con el poder en el lado PI, puede cambiar R1 a 10 kohm más o menos.
simular este circuito : esquema creado con CircuitLab
La forma clásica es usar un "4050" ( ejemplo ) para amortiguar la señal entrante. Un 4050 no pasa energía de entrada a Vdd. Vdd debe conectarse a la alimentación de la placa M3. Hay muchos chips de "traductores de nivel" más modernos que también podría usar.
Tal vez coloque un búfer no inversor de tres estados en la línea TX. Como un SN74AHC1G125 o similar. Use un pullup en /OE para el Pi y bájelo activamente con la MCU.
devnull
Sólo yo
Miguel
Miguel
keith
david molony
Miguel