Invirtiendo la entrada y salida de un UART

3

Estoy hablando con un sensor que usa RS232 y el UART de un mbed. Sin embargo, he notado que los bits enviados desde y hacia el sensor son el complemento exacto de lo que deberían ser. Lo que mi mbed ve como un 1, el sensor ve como un 0, y viceversa. No puedo cambiar el sensor, ni tampoco quiero cambiar nada del hardware. ¿Cómo puedo invertir la entrada y la salida del UART del mbed? El mbed usa un procesador Cortex M3.

EDIT: perdón por cualquier confusión. Toda la línea está invertida. Eso significa que los bits de inicio y parada también se invierten. El primer bit del mensaje es afortunadamente un 0 (leído como 1), y el procesador lo interpreta como mi bit de inicio. Esto hace que todo el cuadro se desplace en un bit. Afortunadamente, el procesador está ignorando los errores de trama.

    
pregunta Hannesh

1 respuesta

2

Hay un chip controlador RS232 en la placa, esto estará invirtiendo los niveles de voltaje.

Por lo general, un UART del microcontrolador esperará señales de nivel TTL alto activas. Un 0 está codificado como 0v, un 1 como VCC (generalmente 3.3v y / o 5v).

El RS232 PHY está diseñado para señalizar cables largos. Es activo bajo y codifica 1 como -3v a -25v y 0 como + 3v a + 25v.

Si el microcontrolador tolera estos voltajes en los pines de entrada y su UART se implementa en el software, puede voltear cada bit de entrada / salida (incluidos los bits de inicio y parada). Pero, el soporte de hardware para esto es raro.

Si su microcontrolador no es tolerante (y el mbed no lo es), podría dañarlo conectándolo.

La mejor solución es interceptar las señales activas de niveles TTL altos en la placa y enviarlas directamente a su microcontrolador, evitando por completo el chip del controlador RS232.

Encuentre el chip del controlador RS232 e identifique sus líneas TX y RX. Si conoce el número de pieza, busque la hoja de datos y luego encuentre los pines en el chip. Si no conoce el número de pieza, use un osciloscopio (o un comprobador de continuidad, un LED o un timbre) para identificar los pines (envíe datos desde cada extremo y busque la línea de datos correspondiente).

Una vez que haya identificado los pines, suelde los cables directamente a su mbed, evitando el chip del controlador RS232, estos deberían aparecer ahora en niveles TTL, alto activo.

    
respondido por el Toby Jaffey

Lea otras preguntas en las etiquetas