1
\$\begingroup\$

Will a CAN bus also work for on-board communication, without twisted pair cabling, between 2 or more microcontrollers on the same PCB board?

\$\endgroup\$
5
\$\begingroup\$

There is no need to use CAN transceivers when communication is within one PCB. However you cannot connect CAN controllers directly. You need diodes to prevent collisions. See here for explanation.

enter image description here

\$\endgroup\$
1
\$\begingroup\$

Yes

CAN is a digital bus which works at up to 1MHz. If you design the PCB with the usual precautions for a signal of that speed, it will be fine.

\$\endgroup\$
1
\$\begingroup\$

CAN lines (CAN Tx and CAN Rx) have been used in our design too to communicate with different MCU on this same mother board. CAN transceiver was also not used.

We had simplified understanding among MCUs. No arbitration was happening. It was always based on query and response.

In case you need to have more than two devices to be connected then use dedicated transceivers for all MCUs to protect the MCU and also to be fully complaint with CAN protocol.

It also helps in using standard CAN based debugging tools (in case, needed in future)

\$\endgroup\$
1
\$\begingroup\$

Yes, this can be done, and as it is quite difficult to make a robust multi-master protocol from scratch, CAN is not a bad option for this (though the error detection/recovery is a little excessive for on-board applications). I wouldn't bother using CAN transceivers though, as they are rather pointless and will introduce more problems with regards to energy consumption, minimum node spacing and stub lengths (due to the high energy being put into the transmission line). If you can configure the microcontroller outputs in open collector mode, then you can implement a system by just wiring all the TX and RX pins together onto a single wired OR logic level bus along with a suitable pull up resistor. Otherwise you'll need a series diode on the transmit pin or a discrete transistor.

\$\endgroup\$
1
  • \$\begingroup\$ @Maple have made some edits to make it clearer. \$\endgroup\$ – Jon Jul 7 '18 at 20:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.