📌 Pin Assignments
IMU (QMI8658) — I2C-0 SDA=GPIO6, SCL=GPIO7, INT=GPIO3
CAN (SN65HVD230) — TX/RX TBD; confirm in esp32/balance/src/config.h
UART0 GPIO43/44 — CH343G USB bridge (debug + flash)
UART1 TBD — Inter-board @ 460800 baud → ESP32-S3 IO
LCD SPI — GC9A01 1.28″ round 240×240 (onboard, fixed pins)
Power — 5V USB input; 3.3V LDO for logic + sensors
🔌 CAN Bus Topology
Orin → CANable 2.0 → CANH/CANL (500 kbps)
BALANCE: SN65HVD230 on CAN bus
VESC Left: ID 0x44 (68) | VESC Right: ID 0x38 (56)
120 Ω termination at each bus end
📡 Inter-Board Protocol
UART @ 460800 baud, 8N1
Frame: [0xAA][LEN][TYPE][PAYLOAD][CRC8]
Types: see esp32/shared/protocol.h
⚡ Safety
Motors NEVER spin on power-on — ARM required
RC kill switch checked every loop
CAN watchdog: 500 ms → RC-only mode
ESTOP: CAN 0x303 + 0xE5 → all motors off