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 |