In digital hardware, a bus is a group of common wires that are used to transfer data in between components of digital systems. Buses and digital signalling formats are often standardised for communication between components, in data format, number of wires, and data rate.

A synchronous bus will operate according to a clock signal.

Circuit design

Microcontrollers will often support many bus standards, mainly SPI, I2C, and UART. When deciding which signalling standard to use, this is dependent on what functionality we need out of it.

Speed in standards refers to the transition times of the digital signals, i.e., not to the clock speed.

The medium-speed buses (SPI, I2C, UART) can begin to exhibit high-speed behaviour if their routes are very long. This can be sidestepped by setting the trace width. A big problem is interference in crosstalk, which can be avoided by applying a sufficient spacing between traces and routing them over a ground plane.

For high-speed design, an important parameter is the signal’s rise time, which will determine when termination is needed on traces, signal crosstalk, and other signal integrity problems.

List

Low speed:

  • SPI (serial peripheral interface)
  • I2C (inter-integrated circuit)
  • UART (universal asynchronous receiver-transmitter)
  • CAN bus

High speed: