1
\$\begingroup\$

I am using a UART to communicate with RS232 on a Roving Networks RN-42 SM bluetooth module. I have the transmitter and receiver connected to a logic analyzer.

The issue that I am having is that my when i connect my uC's TX to the Roving networks RS232 RX, the logic analyzer shows that the TX line of the TX is 0'd. When I disconnect the RX of the roving networks module, it once again starts transferring data.

The images included in the links below.

Here is my transmit code:

while(1)
{
    PORTC ^= 0xFF;

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

}

No connection to TX

No connection to TX

Connection to TX

Connection to TX

\$\endgroup\$
  • 1
    \$\begingroup\$ Perhaps you are misinterpreting the "point of view" of the labeling of TX and RX on the module, with the result of connecting the two device's transmit pins together. \$\endgroup\$ – Chris Stratton Nov 8 '12 at 19:36
  • \$\begingroup\$ That is what I thought when it wasn't working but when i checked, it was indeed the TX connected to the RX. I should also mention, the bluetooth moudule is running at 3.3(V) regulated from the 5(V) on the uC. The TX of the uC goes through a resistive divider to get the appropriate 3.3(V) for the input to the RX on the bluetooth module... I don't think that should be causing any issues though \$\endgroup\$ – Edwin Nov 8 '12 at 19:41
  • \$\begingroup\$ Measure with a scope both before and after the divider, that should help you figure out what is going wrong. If you don't have the scope, drive the UART pin as a GPIO toggling every few seconds and use a meter. \$\endgroup\$ – Chris Stratton Nov 8 '12 at 20:10
  • \$\begingroup\$ seems the UART is ALWAYS being pulled high despite the input given to it... I wonder what the issues is... \$\endgroup\$ – Edwin Nov 8 '12 at 20:26
2
\$\begingroup\$

RS-232 and microcontroller logic level UART signals are not the same thing. Generally the logic level signals are inverted for one thing. The logic level line idle level is typically high. The voltage levels are also considerably different. The logic level signals are of course at normal logic levels, which are usually 0-3.3V or 0-5V. RS-232 is below -5 V for line idle (space) and above +5 V for active (mark).

This is a common problem, so there are chips that do this conversion for you. Look up "MAX232" and you will find lots of variants by different manufacturers for logic to RS-232 conversion chips.

\$\endgroup\$
  • \$\begingroup\$ I had this same issue using the standard UART from the module as well, I think I'll give the standard UART interface another shot... \$\endgroup\$ – Edwin Nov 8 '12 at 20:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.