¿Cómo detectar una señal serial o TTL para un PIC?

5

Tengo un PIC de Microchip con soporte UART. Si entiendo correctamente, el UART es capaz de nativamente manejar la señal serial TTL.

Estoy esperando una señal de entrada que debería ser TTL (0 / 5V), pero podría ser RS232 (+/- 13V).

  1. ¿Cuál sería la mejor manera de manejar ambas señales diferentes? ¿De todos modos para detectar automáticamente la señal (entrante)?
  2. ¿O debería tener un interruptor manual que permita la selección de la señal?

Estaba pensando en usar algo como un MAX3232, pero no estoy seguro de qué pasaría si ese IC recibe una señal TTL.

¡Gracias!

    
pregunta Roger

2 respuestas

1

Pasos simples como sigue ...

El primer paso es deshabilitar el controlador adjunto al PIC (sin dañar el equipo con un voltaje excesivo)

Luego, supervise la señal de entrada del dispositivo y detecte si son negativas Wiki RS232 Forma de onda de tensión

Luego decide qué modo debe usar el PIC. TTL es sólo positivo. RS232 tiene una buena oscilación de -V y + V alrededor de 0V. Puede ser una buena idea detectar más de -1V solo en caso de ruido, etc.

    
respondido por el Spoon
0

Ampliando la respuesta del ingeniero de pruebas:

Primero, un par de datos sobre los niveles: el estado inactivo (marca) de la línea debe ser menor que -3V (y no menor que -15) cuando un dispositivo compatible con RS232 está conectado. A la inversa, el estado inactivo de un dispositivo serie TTL debe estar entre 0 y 0,8 V.

Entonces, creo que la forma más fácil de detectar qué tipo de dispositivo está conectado es algo como lo siguiente:

simular este circuito : esquema creado usando CircuitLab

Para señales de nivel TTL, el dispositivo elevará el pin Rx de la placa a 5 V, por lo que el pin de detección del microcontrolador verá una lógica alta. Cuando se conecta un dispositivo compatible con RS232, el estado inactivo de la línea estará entre -3V y -15V. Los dos resistores forman un divisor, por lo que el pin de detección verá menos de 0.8V (cuando la entrada es -3V). D1 evita que el pin sensor pase más de unos pocos cientos de milivoltios por debajo del suelo para señales más fuertes, y el Z2 D2 protege contra entradas positivas mayores a + 5V (el estado espacial RS232).

Dependiendo de la velocidad en baudios que utilice su escáner, el circuito anterior puede incluso ser suficiente para condicionar la entrada (es decir, es posible que pueda conectar el pin RX y el pin sensor del microcontrolador a la línea etiquetada "To uController sense "La única dificultad con esto es que RS232 usa voltajes negativos para representar 1 y voltajes positivos para representar 0, que es lo opuesto a lo que se usa en TTL-land. Para solucionar esto, querrá agregar una compuerta XOR, como asi:

simular este circuito

Ahora, la línea "from uC invert" está conectada a una salida en tu micro. Cuando está alto, invierte la señal recibida y cuando baja pasa normalmente.

    
respondido por el nick g

Lea otras preguntas en las etiquetas