[lkml]   [2003]   [Mar]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: RS485 communication
    On Sun, Mar 16, 2003 at 10:05:31AM +0000, David Woodhouse wrote:
    > Note you don't need any separate lines for this. If someone else is
    > transmitting a zero while you are also transmitting a zero, that's fine
    > and you didn't stomp on each other. If someone else is transmitting a
    > zero while you are transmitting a one, you won and a one was
    > transmitted, and they back off. If they transmit a one while you
    > transmit a zero, then they won :)

    No - that's not how RS485 works. With a balanced line, the result
    that any one receiver will see will depend on it's position on the
    line and the relative distance to each transmitter, the resistance
    of the line, and the manufacturer/type of the RS485 transceiver.
    In other words, the state you see is indeterminent.

    Also, a correctly terminated RS485 has no way to tell if someone is
    transmitting other than yourself receiving characters since the
    termination resistors bias the line into the mark state.

    If you don't have a correctly biased RS485 line, you can end up with
    framing errors with validly transmitted data, and given the right
    data pattern, it could be an undetectable without checksums and the
    like. What's worse is that this type of error can occur each time
    you retransmit. Naturally, there are certain tricks you can pull to
    ensure that the receiver is properly synchronised before you transmit
    real data.

    Been there, seen the problem, diagnosed it, and modified embedded
    software on both master and slave ends to work around it. After
    you've dealt with equipment with 20 RS485 buses internally with up
    to 50 transceivers on a line, and around 50 RS485 buses running
    around large buildings to various sensors, you end up understanding
    some of these problems fairly well. 8/

    Russell King ( The developer of ARM Linux

    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2005-03-22 13:34    [W:0.037 / U:24.484 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site