RS-485 Polarity
RS-485 comprises two signals, one that 'tracks' the UART logic levels (high voltage == 1, low voltage == 0). The other signal does the opposite. The meaning of these two signals has been polluted by chip and box vendors, which leads to a lot of confusion. A lot of further confusion arises when one considers the UART logic levels vs signal levels and labels. This article attempts to resolve the status without adding to the confusion
Our terminology:
Our Terminology | Description | Data (UART) Representation |
---|---|---|
A | Tracking UART value | A is high when UART emitting 1, A is low when UART emitting 0 |
B | Non-tracking | B is low when UART emitting 1, B is high when UART emitting 0 |
Labeling found in the field
Comment | Tracking | Non-tracking | Class | Manufacturer examples |
---|---|---|---|---|
Our terminology | A | B | Nominal | BITS |
Non-inverting | Inverting | |||
+ | - | Symbol | BACnet Specification | |
+ | - | Symbol | FT-Click, BASRouter LX | |
B+ | A- | MBS UBR-01 Mk II | ||
U+ | U- | Wikipedia | ||
B | A | Wikipedia. See, what a fiasco | ||
A+ | B- | Waveshare USB to RS-485 | ||
TI convention | A | B | TI Polarity Conventions |
TI has a very definitive document, but one that has to be read carefully in terms of terminology. Read this document with the following table in mind. Note, according to TI (and our opinion), the Wikipedia article on bus states is WRONG ! :
UART bit | Logic level | A-B (T+ - T-) result | Legacy | RS-485 state | RS-485 A volt | RS-485 B volt |
---|---|---|---|---|---|---|
1 | high | A > B | Mark/Idle | On (0) | high | low |
0 | low | A < B | Space | Off (1) | low | high |