2026-01-15 6:03 AM - last edited on 2026-01-16 1:04 AM by mƎALLEm
Question moved from this post.
If I have two devices on the same PCB. say an F7 and an MP157, can the CAN_TX of one be connected to the CAN_RX or the other without a CAN transceiver? Similar to UARTs on the same PCB. Maybe series resistors would be required, or pull ups?
Solved! Go to Solution.
2026-01-16 1:03 AM - edited 2026-01-16 3:01 AM
Hello,
To answer that question:
@inky wrote:
I don't follow why the RX and TX of both chips are joined together, instead of the UART configuration. Please explain
In the CAN protocol, every node on the bus should listen continuously to what happening on the bus.
Even if there are only two nodes on the CAN bus, these mechanisms couldn't be established when a cross connection of CAN_Tx <-> CAN_Rx is adopted.
That's why RX and TX of each node are joined together in the above configuration to let the sender listen to what it is sending.
Hope it's clear now.
2026-01-15 6:17 AM
> If I have two devices on the same PCB. say an F7 and an MP157, can the CAN_TX of one be connected to the CAN_RX or the other without a CAN transceiver?
Electrically yes, but this only works for two nodes, and short distances.
Technically, this would not really be CAN. But fine for testing.
Of course you would need a GND connection as well.
Series resistors might help for signal quality, but the MCU CAN pins are standard PP outputs, no pull-ups required.
2026-01-15 6:24 AM - edited 2026-01-15 6:30 AM
Hello,
That could work with this config (I remember I tested it years ago):
CAN_Tx in open drain/common GND:
or CAN_Tx in Push-pull with common GND of all circuits:
but not recommended for high distances.
See also: https://www.mikrocontroller.net/attachment/28831/siemens_AP2921.pdf
2026-01-15 6:46 AM
And using higher bitrates (a.k.a. CAN-FD or CAN-XL) would aggravate issues.
2026-01-15 7:17 AM
@Ozone wrote:
And using higher bitrates (a.k.a. CAN-FD or CAN-XL) would aggravate issues.
Agree.
2026-01-15 7:51 AM
Thanks, I was only looking for point-to-point comms. Maybe using it for firmware updates on the F7, from the MP157, instead of a UART.
I don't follow why the RX and TX of both chips are joined together, instead of the UART configuration. Please explain
2026-01-15 8:07 AM - edited 2026-01-15 8:10 AM
That shouldn't work as the UART does: with cross connection of Tx <-> Rx. There is an arbitration and acknowledgement mechanism in CAN communication that should be kept in place that Tx <-> Rx cross connection doesn't permit.
2026-01-15 8:17 AM - edited 2026-01-15 8:18 AM
In the configurations proposed above, the arbitration and acknowledgement are seen on any Rx from all Tx of the available CAN nodes (frame broadcast) which is the case where transceivers are used.
2026-01-16 1:03 AM - edited 2026-01-16 3:01 AM
Hello,
To answer that question:
@inky wrote:
I don't follow why the RX and TX of both chips are joined together, instead of the UART configuration. Please explain
In the CAN protocol, every node on the bus should listen continuously to what happening on the bus.
Even if there are only two nodes on the CAN bus, these mechanisms couldn't be established when a cross connection of CAN_Tx <-> CAN_Rx is adopted.
That's why RX and TX of each node are joined together in the above configuration to let the sender listen to what it is sending.
Hope it's clear now.
2026-01-16 1:05 AM
Thanks guys :)