Skip to content

System Context

The Bridge has two sides. On one side it speaks CAN with the Superordinate Controller. On the other side it speaks UART with two Motor Controller Boards. The Motor Controller Boards are third-party products with a UART interface only, which is why the Bridge exists. The Bridge shares the CAN bus with other subsystems, such as battery management and distance sensors, but exchanges no messages with them.

C4 Context Diagram

Provided APIs

See specs/technical_design/APIs/provided/ for machine-readable specifications.

Spec File Protocol Description
APIs/provided/drive.path.txt CAN (Classic 2.0B, 29 bit) Messages of the Drive, specified at the mono-repo root

The debug output on USB serial is free text and not a specified API.

Consumed APIs

See specs/technical_design/APIs/consumed/ for machine-readable specifications.

External System Protocol Spec Location Notes
Motor Controller Board UART, binary frames APIs/consumed/hoverboard-uart-protocol.url.txt Drive commands, odometry, status and state frames

Infrastructure

Concern Decision
Deployment target STM32G0B1CCT6 microcontroller, bare metal without an operating system
CAN FDCAN2 (PB0, PB1), transceiver on the board, 120 Ω termination at the connector
UART to the boards Board 1: USART2 (PA2 TX, PA3 RX), board 2: USART3 (PA5 TX, PB11 RX), 115200 8N1
Debug output USB serial to a notebook or the Superordinate Controller; diagnosis only, not part of the control path
Firmware update Serial wire debug (SWD)
Build CMake with the ARM GCC cross-compiler, host-side tests with the native compiler
CI/CD GitLab CI