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
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.
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.