Estoy usando un TI 74HC4052E para multiplexar un UART TTL en un Microchip PIC32MX695F512 microcontrolador.
El comportamiento esperado es que las señales TX y RX pasen a través de los conmutadores no afectados; Lamentablemente esto no es lo que está pasando.
Estoy trabajando desde una placa de desarrollo y el PIC tiene mayúsculas de bypass y todo ese jazz, y el UART está configurado correctamente. Funciona correctamente cuando está conectado directamente a un adaptador serial USB y GT de FTDI.
Aquí hay un esquema simplificado:
Los pines RB15 / RB1 están configurados como salidas con búfer, no con drenaje abierto. La funcionalidad analógica en esos pines está deshabilitada. No tengo pullups / pulldowns en las salidas B0 / B1.
Un vistazo a los registros periféricos:
TRISB = 01111111 1111101 (0x7FFD)
AD1PCFG = 10000001 0000010 (0x8102)
ODCB = 00000000 00000000 (0x0000)
Editar: Noté que el pin U5TX es RB14 y, como se muestra, está configurado como entrada. Estoy bastante seguro de que habilitar el periférico anula los bits TRIS, pero seguí adelante y lo forcé a la salida digital. También me aseguré de que la funcionalidad analógica en ese pin estaba desactivada. Ninguno de estos cambios rectificó la situación.
El programa repite lo siguiente: selecciona A / B0, genera datos, selecciona A1 / B1, genera datos.
Cuando coloco CH2 del alcance en el pin de salida B0 (pin 1), esto es lo que veo:
CH1(Amarillo)-Pindesondeoentrada3
CH2(Azul)-ProbarsalidaB0
Laseñalestáinvertidaincorrectamente.Tambiénpuedevercuandoelinterruptorseapaga,indicadoporlaseñaldedecaimiento(lentamente),quenosevebien.
LapruebaB1(pin5)dacomoresultadolosiguiente:
CH1 (Amarillo) - Pin de sondeo entrada 3
CH2 (Azul) - Probar salida B1
Ahora la polaridad de la señal es correcta, pero aún veo esa decadencia de aspecto ridículo. Realmente no creo que deba tomar ~ 400µs para encender / apagar.
Cuando selecciono A0 / B0 manualmente conectando las señales de control directamente a GND, la señal B0 ya no se invierte, pero nuevamente, ya no está cambiando, por lo que es difícil decir si esto significa algo.
Intenté usar otro '4052 y obtuve los mismos resultados. El chip tiene buenas conexiones de alimentación y tierra, no creo que se esté alimentando a través de ningún diodo de protección interno o algo así de raro. Tengo la sensación de que los pines GPIO de PIC influyen de alguna manera en este comportamiento a través de las líneas de selección S0 / S1, aunque no sé por qué ese sería el caso.
Leí la hoja de datos un par de veces, pero debo faltar algo que explique lo que estoy viendo.
¿Qué estoy haciendo mal aquí?