The CAN standards allow "star" configurations for low data rates over long distances. For your peace of mind, it is probably best to avoid using the star configuration if it can be avoided. With the (low) quality of the wiring I have seen in many FRC robots, a bad connection is at least as likely to be the real cause of their CAN Bus problems.
It is the high edge-rate (short rise-time and fall-time) of the signal that directly leads to reflections, not the data rate. Of course, as the data rate rises, faster edge-rates are required to maintain signal integrity. Many of the CAN transceiver chips have the ability to reduce the edge-rate to minimize reflections when running at lower data rates. Without looking at CTRE and NI's schematics, it is difficult to know if they are using such a feature.
The length of the various line lengths determines whether a reflection causes interference or not. With the rule-of-thumb signal propagation delay of 2 nsec/foot, your CAN wiring would have to be pretty long (in the order of 100 ft.) for it to have an effect on a 1 Mbps signal, longer than one could reasonably put on an FRC robot.
If one wires the CAN Bus with the PDP "at the end of the chain" then one should always have the terminations. With a star configuration (or multi-star), the PDP should still be the furthest from the RoboRio.
Quote:
Originally Posted by ratdude747
QFT. Any time termination matters (such as CAN), you've entered the wonderful world of RF where reflections and the like are real. In RF you get to throw away everything you know about electricity and circuits, aside from Kirchoff's laws. Ohm's law? Kiss it goodbye, it doesn't apply any more. Wire spacing and twist rate do matter a ton.
Generally RF rules apply if you're at high frequency (such as CAN, ethernet, or Wifi/Bluetooth) or you're over a massively long distance (such as a 10 mile power transmission line).
TLDR: Don't branch CAN wires, while it seems like it will work in reality it's asking for trouble.
|
My coworkers and I are puzzled by some your statements.