Both the digital and analog inputs are highly limited in the amount of data that can be send over them. Serial buses allow users to make use of far more-robust and higher-bandwidth communications protocols with sensors that collect large amounts of data, such as inertial measurement units (IMUs) or 2D LIDAR sensors.
Types of supported serial buses¶
The roboRIO supports four basic types of serial communications:
Additionally, the roboRIO supports communications with peripheral devices over the CAN bus. However, as the FRC CAN protocol is quite idiosyncratic, relatively few peripheral sensors support it (though it is heavily used for motor controllers).
To communicate to peripheral devices over I2C, each pin should be wired to its corresponding pin on the device. I2C allows users to wire a “chain” of slave devices to a single port, so long as those devices have separate IDs set.
The I2C bus can also be used through the MXP expansion port. The I2C bus on the MXP is independent. For example, a device on the main bus can have the same ID as a device on the MXP bus.
To communicate to peripheral devices over SPI, each pin should be wired to its corresponding pin on the device. The SPI port supports communications to up to four devices (corresponding to the Chip Select (CS) 0-3 pins on the diagram above).
The SPI bus can also be used through the MXP expansion port. The MXP port provides independent clock, and input/output lines and an additional CS.
To communicate to peripheral devices over RS-232, each pin should be wired to its corresponding pin on the device.
The RS-232 bus can also be used through the MXP expansion port.
The RoboRIO RS-232 serial port uses RS-232 signaling levels (+/- 15v). The MXP serial port uses CMOS signaling levels (+/- 3.3v).
The roboRIO has three USB ports: 1x USB-B, and 2x USB-A. These can be connected to devices with standard USB cables.
MXP expansion port¶
Several of the serial buses are also available for use through the roboRIO’s MXP expansion port. This port allows users to make use of many additional digital and analog inputs, as well as the various serial buses.
Many peripheral devices attach directly to the MXP port for convenience, requiring no wiring on the part of the user.