This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F280039C: CAN Communication Without a Transceiver

Part Number: TMS320F280039C


Hi,

Is it possible to communicate two TMS320F280039C MCUs over CAN without using a transceiver? i.e. connecting MCU1_CAN_TX to MCU2_CAN_RX (or MCU2_CAN_TX?) and vice versa

  • Hi Ronald,

    If you are doing this for debug purposes to check that communication  works between microcontrollers for short distance like a few inches, this is OK.  The intent of CAN is for it to be used in communication between circuits that are far apart (few meters to tens of meters) in a noisy environment that is why it is the communication protocol that is used in automotive applications.  The transceiver, with its differential signaling capability reduces noise, hence it makes CAN communication very robust over longer distances.

    Regards,

    Joseph

  • Just to add to what Joseph said, you can indeed do this for very short distances provided you ensure that the transmitting node can monitor its own communication. Just Google “CAN communication without transceiver” for some simple circuits. Below from www.ti.com/lit/SPRACU9:

    4.2 Why a Transceiver is Needed
    One cannot directly connect MCANTX of node-A to MCANRX of node-B and vice versa and expect successful
    CAN communication. In this case, CAN is unlike other serial interfaces like SCI or SPI. For example, SCI can be
    made to work with a RS232 transceiver or through a direct connection (SCITX of one node to SCIRX of another
    node and vice versa). However, CAN bus needs a CAN transceiver for the following reason: In addition to
    converting the single-ended CAN signal for differential transmission, the transceiver also loops back the CANTX
    pin to the CANRX pin of a node. This is because a CAN node needs to be able to monitor its own transmission.
    Why?
    • This has to do with the ACK requirement mandated by the CAN protocol. When a node transmits a frame
    on the CAN bus, it expects an ACK from at least one other node on the network. For the ACK phase, the
    transmitter puts out a 1 and expects to read back a 0.
    • During arbitration, a node with a higher-priority MSGID needs to be able to override a 1 with a 0. Here again,
    the transmitter needs to be able to read back the transmitted data. When a node puts out a 1 and reads back
    a 0 during the arbitration phase, it loses arbitration.