Using the CAN subsystem with the RoboRIO

Using CAN with the RoboRIO has many advantages over previous connection methods between the robot controller and peripheral devices.

  1. CAN connections are through a single wire that is daisy-chained between all the devices so home run wiring isn't required.
  2. Since this is protocol-based signaling the devices can be smart and accept higher level commands besides start, stop and set speed.
  3. Devices can report status back to the robot controller making it possible to have much better control algorithms with devices that use CAN.

There are a number of CAN devices supported in the FRC control system:

  1. CAN speed controllers
  2. The Power Distribution Panel (PDP)
  3. The Pneumatics Control Module (PCM)

The devices are typically connected to the RoboRIO CAN bus using twisted pair wiring.

CAN bus topology and termination

The CAN bus must be terminated at each end of the bus, that is bridged with a termination resistor of 120 ohms. Conveniently both the RoboRIO (start of bus) and the PDP board can supply termination. So a CAN bus that starts at the RoboRIO, goes through several devices, and ends at the PDP board (with the termination jumper installed) will provide the correct termination. Nothing else has to be done.

If you wish to terminate your bus somewhere other than the PDP, the PDP terminator jumper must be moved to disable the PDP terminator and a user provided 120 Ohm resistor must be placed at the end of the bus.

0 Report Errors

Use this form to report any errors with the documentation. For help with WPILib, please use the FIRST Forums at For reporting WPILib bugs, please submit an issue on GitHub at