Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronic Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Register Log in

RS485, automatic driver disable/enable signal generation

Status
Not open for further replies.

buenos

Advanced Member level 3
Joined
Oct 24, 2005
Messages
956
Helped
40
Reputation
82
Reaction score
21
Trophy points
1,298
Location
Sunnyvale, California, USA
Activity points
9,071
uart st16c550 rs485

hi

for RS485 half duplex or multidrop systems, we have to disable the TX driver when we are not transmitting. Normally it is done by the DTR or RTS signal from the UART, controlling the buffer within the transceiver.

Is there a way to generate this automatically by the UART without any software intervention? is it in the standard PC 16550 UART?
 

FvM

Super Moderator
Staff member
Joined
Jan 22, 2008
Messages
47,928
Helped
14,143
Reputation
28,545
Reaction score
12,827
Trophy points
1,393
Location
Bochum, Germany
Activity points
278,099
rs485 automatic driver enable

Some recent UARTs have an option to generate RS485 TE automatically, e.g. EXAR ST16C650, but standard 16550 doesn't. The common solution is a a timer, that enables the transmitter for defined period after a TX bit. There are basically two options:
- Using a long TE intervall (> 1 character frame). Involves a risk of collisions, if the peer responds too fast.
- A short TE intervall, just sufficient to drive the cable capacitance to the opposite level. Operation depends on meaningful dimensioned bias resistors in the termination network and isn't realiable for long cables.

An exact, frame accurate transmitter control can be achieved from an UART generated TE signal (as with said ST16C550), with a driver software generated TE (at least at low and medium speed) and by an external hardware, that is decoding the protocol (as with some RS485 repeaters).
 

buenos

Advanced Member level 3
Joined
Oct 24, 2005
Messages
956
Helped
40
Reputation
82
Reaction score
21
Trophy points
1,298
Location
Sunnyvale, California, USA
Activity points
9,071
rs485 without enable

hi

thanx.
actually I found a nice solution on the internet:
-dont disable RX during transmit operation
-enable/disable transmit by GPIO (RTS pin on superio)
-send a termination caracter as a last one in every transaction.
-enable tx before transmit starts, disable in RX-interrupt routine when termination character was received back. so not in a TX complete irq routine beceuse it is unaccurate.
-during TX mode, throw away all received data in RX-interrupt routine.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top