Electronic – CAN bus with star configuration/long stubs

buscanpcbwiring

I am assisting in the development of a machine, and have been tasked with achieving high speed CAN (as close to 1 Mbit/s as possible) in a star configuration. The restrictions are: each arm is approximately 2.5 meters long; there are 8 arms, probably increasing later to 16, each with a single node at the end; only a single CAN cable can run out/along each arm, meaning daisy-chaining won't work; there will be one central node which will communicate with all 8 others.

If I implement a very short bus (in the order of centimeters) with very long connections to the nodes branching off it, will that work? Alternatively, could I simply connect all 8 together near the central node and terminate at 2 of the other nodes (making what would essentially be a 5m bus)? The central node will be connected to a PCB at the centre, which will act as a junction of sorts.

EDIT: After further research, I found recommendations that stubs be kept to 0.5m or shorter, which is problematic. My current thought is now to have on the PCB one bus and 8-16 transceivers (not including the central one). Each of the 8 transceivers would then be connected to a separate bus, which would be run out along an arm to the node there. I could simplify to 4-8 transceivers, each reaching 2 arms, which would become the 2 ends of that bus, but this could cause problems if one of the arms were to be removed/shut down.

Best Answer

Try a termination on the end of EACH of the 2.5 meter branches, like this

schematic

simulate this circuit – Schematic created using CircuitLab

You likely will need to alter the 47pF. Over 16 branches, this is 750pF, well under the 2,200pF I computed as the maximum C_can_buss_all_causes. Larger branch C (47 -> 56 -> 68 -> 82 -> 100pF) become better at dampening, and provide a cleaner data-eye, but SMALLER amplitude. Thus you need to experiment; maybe install TRIMMER caps (10pF -100pF)on your PCBs.

The max length is 2 branches * 2.5 meters each or 5 meters. The STAR reflection time is (assuming 30 nanoseconds round trip for each branch) 2 branches * 30nS or 60nanoSecond; this is twice as fast as the 130 nanosecond RC timeconstant I computed in the top TEXT in the diagram.