In the RabbitCore RCM4200 User’s manual, it specifies that pull-up resistors are need on the serial port receive line if receiver chips are not used.
That seems strange – if you aren’t using receiver chips, what would you be using that didn’t actively pull the line up?
It then states that without the pull-up resistors, breaks would be generated when the line is pulled low. How would pull-up resistors help that? If they were so strong as to pull the lines up when they are pulled low by the sender, the sender wouldn’t be able to pull low for a zero.
I’m not understanding what type of circuitry for which pull-up resistors would make sense.
from the manual:
4.2.1.1 Using the Serial Ports
The receive lines on the RCM4200 serial ports do not have pull-up resistors. If you are
using the serial ports without a receiver chip (for example, for RS-422, RS-232, or RS-485
serial communication), the absence of a pull-up resistor on the receive line will likely lead
to line breaks being generated since line breaks are normally generated whenever the
receive line is pulled low. If you are operating a serial port asynchronously, you can inhibit
character assembly during breaks by setting bit 1 in the corresponding Serial Port
Extended Register to 1. Should you need line breaks, you will have to either add a pull-up
resistor on your motherboard or use a receiver that incorporates the circuits to have the
output default to the nonbreak levels.
Bit 1 of the serial port extended register:
set to 0 - Continue character assembly during break to allow timing the break condition.
set to1- Inhibit character assembly during break. One character (all zeros, with framing error) at start and one character (garbage) at completion.
You can use the following macro to set this bit (from simple3wire.c):
// RCM42xx boards have no pull-up on serial Rx lines, and we assume in this
// sample the possibility of disconnected or non-driven Rx line. This sample
// has no need of asynchronous line break recognition. By defining the
// following macro we choose the default of disabled character assembly during
// line break condition. This prevents possible spurious line break interrupts.
#define RS232_NOCHARASSYINBRK
As for pull-ups, A pull-up resistor weakly “pulls” the voltage of the wire it is connected to towards its voltage source level when the other components on the line are inactive. When all other connections on the line are inactive, they are high-impedance and act like they are disconnected. Since the other components act as though they are disconnected, the circuit acts as though it is disconnected, and the pull-up resistor brings the wire up to the high logic level. When another component on the line goes active, it will override the high logic level set by the pull-up resistor. The pull-up resistor ensures that the wire is at a defined logic level even if no active devices are connected to it.
1 Like
The final answer is that you don’t need pull-up resistors if the the input is being driven by a driver…unless that driver is open-collector.
I hooked the Rabbit up to a PIC serial port without resistors and all works fine. The PIC does NOT have open-collector outputs so it drives high and low and never lets the line float.
An open-collector driver would allow the line to float and would only drive it in the low condition. In that case, a pull-up resistor is required to keep the line from oscillating when not actively pulled low.