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
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).
Keep going
Take the quiz · +10 XP with an accountMore in Motor Controllers and the CAN Bus
Sources & 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 — publicly, in the corrections log.
Sources and further reading
Read next
Articles on this, for competition day
The lesson covers how it works. These cover what to do when it breaks.
- 8 min read
FRC 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.
Read - 20 min read
REV Robotics for FRC: NEO Motors, Spark MAX/Flex, PDH & MAXSwerve
A 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.
Read - 19 min read
FRC 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.
Read
Lesson quiz
RequiredAll 3 right completes the lesson. Miss one and only that question comes back — anything you already answered correctly stays banked.
0 of 3 answered
01.What is required at each end of an FRC CAN bus for it to function reliably?
02.Which two standard FRC devices have a 120-ohm CAN terminating resistor built in?
03.What is the recommended CAN bus topology and wiring convention on an FRC robot?
Answer every question to submit.
All 35 lessons in Electrical & Wiring
- Not started:Mini-Project 1: A Single-Motor Test Stand from Battery to Spin
- Not started:Mini-Project 2: Current-Limited Drivetrain (CTRE and REV)
- Not started:Mini-Project 3: A Live Power-Monitoring Dashboard
- Not started:Mini-Project 4: A Switchable Channel for Lights and Vision
- Not started:Mini-Project 5: CAN Device Bring-Up with Tuner X and the Hardware Client