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.

  • \$\begingroup\$ Daisy chain would otherwise have solved the stub issue. Why can't you have 4 signals instead of 2 in a single cable? One observation is that 2.5 x 2 x 8 = 40m which is the recommended maximum length for 1Mbit CAN. Stub recommendations at 1Mbit are rather 0.3m, designing with a margin. \$\endgroup\$ – Lundin Apr 9 '19 at 7:00
  • \$\begingroup\$ What do you mean about having 4 signals in the one cable? How would that be laid out? \$\endgroup\$ – Isaac Middlemiss Apr 9 '19 at 21:58
  • \$\begingroup\$ CAN H in, CAN L in, CAN H out, CAN L out, signal ground, shield. \$\endgroup\$ – Lundin Apr 10 '19 at 6:28
  • \$\begingroup\$ I'm restricted to a particular cable which does not allow for both CAN in and CAN out \$\endgroup\$ – Isaac Middlemiss Apr 10 '19 at 22:36
  • \$\begingroup\$ Tough luck then, your spec doesn't add up. \$\endgroup\$ – Lundin Apr 11 '19 at 9:05

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


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.

  • \$\begingroup\$ So a single termination at the central node, rather than terminations at any of the far nodes? Why are C1 and R2 needed? \$\endgroup\$ – Isaac Middlemiss Apr 5 '19 at 2:45
  • \$\begingroup\$ Notice I wrote "Try this". No guarantees. If you have 8 taps, then the combined resistance of 8 resistors is 1,000/8 = 125 ohms. The purpose of the cap was to have edge-termination but not DC termination. However, the regular CAN bus needs TWO resistors of 120 ohms, one such resistors at the 2 ends. Here you want to use 8 "ends" but rather short. We need to ensure the ends are "lossy" to help dampen. \$\endgroup\$ – analogsystemsrf Apr 5 '19 at 7:00
  • \$\begingroup\$ Do all eight nodes transmit? or just the central node? \$\endgroup\$ – analogsystemsrf Apr 5 '19 at 7:00
  • 1
    \$\begingroup\$ Set the CAN transmitter to SLOW EDGE RATE, if you have that option. Otherwise the initial amplitude will be VERY SMALL, as if the Transmitter is loaded by 16 CAN busses (which it is, but only for 60 nanoseconds). And the CAN system monitors for amplitude, because amplitude is the health monitor, and the detection for collisions. Having many parallel loads (16 busses, each of impedance 120 ohms) will initially produce about 120/16 = 8 ohms versus 60 ohms, or only 12% of the expected amplitude. Thus SLOW EDGES are the way around this. \$\endgroup\$ – analogsystemsrf Apr 7 '19 at 22:40
  • 1
    \$\begingroup\$ Also go with a high SJW in the software to make the bus more rugged at 1Mbps. \$\endgroup\$ – Lundin Apr 10 '19 at 6:32

After some testing, it turns out that if you just go ahead and make a star configuration, effectively a zero length bus with 8 unterminated 2.5m stubs and a single central termination resistor (I couldn't see a difference between 60 and 120 ohms, though I feel 120 should theoretically be better), it will work - or it did in my case. My PCB is now essentially just an 8-way junction with a termination resistor in the middle, and everything seems to be working perfectly with unterminated nodes.


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.