The shape of the bus#
A CAN bus is a single chain (a 'daisy-chain'), not a star or a loop. It must have exactly two endpoints, each capped with a 120-ohm terminating resistor. The roboRIO has one built-in terminator; the PD (PDH/PDP) contains the other. So the standard layout is:
roboRIO -> motor controller -> motor controller -> ... -> PD
with the roboRIO and the PD at the two ends.
Wiring details#
- Use 22 AWG twisted pair - twisting CANH and CANL together rejects electrical noise.
- CANH (yellow) connects to CANH, CANL (green) connects to CANL, all the way down the chain.
- At the roboRIO spring terminals, strip about 5/16 in (~8 mm).
- Keep every junction solid - a single intermittent CAN connection can knock out every downstream device.
Device IDs#
Every device on the bus needs a unique CAN ID:
- CTR devices (Talon FX/FXS, Talon SRX, Victor SPX): set IDs in Phoenix Tuner X.
- REV devices (SPARK MAX, SPARK Flex, PDH): set IDs in the REV Hardware Client.
- Defaults to remember: PDP = ID 0, PDH = ID 1.
Duplicate IDs cause erratic behavior, so plan an ID scheme (for example, drivetrain motors 1-4, arm 5-6) and label each controller.
Termination check#
With the robot off, measure resistance across the CANH/CANL pair. A healthy, properly terminated bus reads about 60 ohms (two 120-ohm resistors in parallel). If you read ~120 ohms, one terminator is missing or disconnected; if you read very high resistance, the bus is open somewhere.
Common CAN problems#
- Intermittent device dropouts - usually a loose connector or a cold crimp.
- Whole bus (or downstream segment) down - a break in the chain, or a shorted device.
- Wrong/duplicate IDs - devices fight over the same address.
- Missing termination - flaky communication at high bus traffic.
Sources#
the part worth keeping
Key takeaways
- CAN is a daisy-chain with the roboRIO and PD at the two terminated ends (120 ohms each).
- Use 22 AWG twisted pair; CANH-to-CANH (yellow) and CANL-to-CANL (green).
- A healthy bus measures ~60 ohms across CANH/CANL with the robot off.
- Give every device a unique ID via Phoenix Tuner X or REV Hardware Client (PDP=0, PDH=1).
Electrical & WiringMotor Controllers and the CAN Buslesson 3 of 3
Keep going
Take the quiz+10 XP with an accountMore in Motor Controllers and the CAN Bus
where this came from
Sources and corrections
This lesson is AI-assisted: drafted from primary sources, then reviewed and edited by hand. Errors still get through. When one is reported we fix it and write down what changed, in public, in the corrections log.
sources and further reading
- docs.wpilib.orgWPILib Power Distribution Module
clipped to this lesson
Articles that go further on this
The lesson gets you through the topic. These go wider on it, and they read in one sitting.
- 8 min readFRC CAN Bus Explained (and How to Fix Common Problems)How the FRC CAN bus works, the daisy-chain wiring with 120-ohm termination, avoiding device ID conflicts, and fixing the most common CAN failures./blogread it
- 20 min readREV Robotics for FRC: NEO Motors, Spark MAX/Flex, PDH & MAXSwerveA practical guide to the REV Robotics FRC ecosystem: NEO, NEO Vortex and NEO 550 motors, Spark MAX and Spark Flex controllers, the PDH, and MAXSwerve./blogread it
- 19 min readFRC PDH: The Power Distribution Hub Explained (Channels, Fuses & Wiring)A complete guide to the REV PDH (Power Distribution Hub): all 24 channels, breaker and fuse sizing, clean wiring, the switchable channel, CAN telemetry, and PDH vs PDP./blogread it
answer sheet
Lesson quiz
All 3 right completes the lesson. Miss one and only that question comes back, anything you already answered correctly stays banked.
0 of 3 answered
01What is required at each end of an FRC CAN bus for it to function reliably?
02Which two standard FRC devices have a 120-ohm CAN terminating resistor built in?
03What is the recommended CAN bus topology and wiring convention on an FRC robot?
Answer every question to submit.
All 35 lessons in Electrical & Wiringopenclose
01 / prerequisites
02 / control-system-components
03 / power-battery-breakers
04 / motor-controllers-can-bus
05 / connections-rules-troubleshooting
06 / worked-examples-mini-projects
- Not read yet:Mini-Project 1: A Single-Motor Test Stand from Battery to Spin
- Not read yet:Mini-Project 2: Current-Limited Drivetrain (CTRE and REV)
- Not read yet:Mini-Project 3: A Live Power-Monitoring Dashboard
- Not read yet:Mini-Project 4: A Switchable Channel for Lights and Vision
- Not read yet:Mini-Project 5: CAN Device Bring-Up with Tuner X and the Hardware Client
07 / common-mistakes-troubleshooting
08 / advanced-techniques-case-studies