Problemas de comunicación UART

Estoy usando un UART para comunicarme con RS232 en un módulo bluetooth Roving Networks RN-42 SM. Tengo el transmisor y el receptor conectados a un analizador lógico.

El problema que tengo es que cuando conecto el TX de mi uC a las redes Roving RS232 RX, el analizador lógico muestra que la línea TX del TX es 0'd. Cuando desconecto el RX del módulo de redes itinerantes, nuevamente comienza a transferir datos.

Las imágenes incluidas en los enlaces a continuación.

Aquí está mi código de transmisión:

while(1)
{
    PORTC ^= 0xFF;

    transmitStr((unsigned char *)CMDMODE);
    _delay_ms(1000);

}

Sin conexión a TX

Sin conexión a TX

Conexión a TX

Conexión a TX

Quizás esté malinterpretando el "punto de vista" del etiquetado de TX y RX en el módulo, con el resultado de conectar los pines de transmisión de los dos dispositivos.
Eso es lo que pensé cuando no funcionaba, pero cuando lo comprobé, de hecho era el TX conectado al RX. También debo mencionar que el módulo bluetooth funciona a 3.3 (V) regulado desde el 5 (V) en el uC. El TX del uC pasa a través de un divisor resistivo para obtener los 3,3 (V) apropiados para la entrada al RX en el módulo bluetooth... Sin embargo, no creo que eso deba causar ningún problema.
Mida con un visor tanto antes como después del divisor, eso debería ayudarlo a descubrir qué es lo que está fallando. Si no tiene el alcance, conduzca el pin UART como un GPIO alternando cada pocos segundos y use un medidor.
parece que el UART SIEMPRE se eleva a pesar de la entrada que se le da ... Me pregunto cuál es el problema ...

Respuestas (1)

RS-232 y las señales UART de nivel lógico del microcontrolador no son lo mismo. Generalmente, las señales de nivel lógico se invierten por una razón. El nivel de inactividad de la línea de nivel lógico suele ser alto. Los niveles de voltaje también son considerablemente diferentes. Las señales de nivel lógico están, por supuesto, en niveles lógicos normales, que suelen ser 0-3,3 V o 0-5 V. RS-232 está por debajo de -5 V para línea inactiva (espacio) y por encima de +5 V para activo (marca).

Este es un problema común, por lo que hay chips que hacen esta conversión por usted. Busque "MAX232" y encontrará muchas variantes de diferentes fabricantes para chips de conversión de lógica a RS-232.

También tuve este mismo problema al usar el UART estándar del módulo, creo que le daré otra oportunidad a la interfaz UART estándar...