#pragma once /* ── ESP32-S3 BALANCE board — bd-66hx pin/config definitions ─────────────── * * Hardware change from pre-bd-66hx design: * Previously: IO43/IO44 = CAN SN65HVD230 (shared Orin+VESC bus via CANable2) * After bd-66hx: IO43/IO44 = CH343 UART0 (Orin serial comms) * IO2/IO1 = CAN SN65HVD230 rewired (VESC-only bus) * * The SN65HVD230 transceiver physical wiring must be updated from IO43/44 * to IO2/IO1 when deploying this firmware. See docs/SAUL-TEE-SYSTEM-REFERENCE.md. */ /* ── Orin serial: CH343 USB-UART bridge (1a86:55d3 = /dev/ttyACM0 on Orin) ── * Physical path: Orin USB → CH343 → GPIO 43 (TX) / GPIO 44 (RX). * NOTE: lsusb on Orin shows ONLY CH343, not ESP32 native USB (303a:xxxx). * USB Serial/JTAG is console-only — it is not the Orin↔ESP32 data path. */ #define ORIN_UART_PORT UART_NUM_0 #define ORIN_UART_BAUD 460800 #define ORIN_UART_TX_GPIO 43 /* ESP32 → CH343 RXD */ #define ORIN_UART_RX_GPIO 44 /* CH343 TXD → ESP32 */ #define ORIN_UART_RX_BUF 1024 #define ORIN_TX_QUEUE_DEPTH 16 /* ── VESC CAN TWAI (SN65HVD230 target GPIO 2/1 per bd-66hx design) ── * HARDWARE NOTE: SN65HVD230 transceiver must be physically wired to GPIO 2 * (TXD) and GPIO 1 (RXD). Old prototype wiring used GPIO 43/44 but those * pins are now committed to UART (CH343). Rewire required before CAN works. */ #define VESC_CAN_TX_GPIO 2 /* ESP32 TWAI TX → SN65HVD230 TXD */ #define VESC_CAN_RX_GPIO 1 /* SN65HVD230 RXD → ESP32 TWAI RX */ #define VESC_CAN_RX_QUEUE 32 /* VESC node IDs — matched to bd-wim1 TELEM_VESC_LEFT/RIGHT mapping */ #define VESC_ID_A 56u /* TELEM_VESC_LEFT (0x81) */ #define VESC_ID_B 68u /* TELEM_VESC_RIGHT (0x82) */ /* ── GC9A01 240×240 round display (bd-1yr8, SPI2) ── */ #define DISP_CS_GPIO 12 #define DISP_DC_GPIO 11 #define DISP_RST_GPIO 10 #define DISP_BL_GPIO 9 #define DISP_MOSI_GPIO 13 #define DISP_SCK_GPIO 14 /* ── Safety / timing ── */ #define HB_TIMEOUT_MS 500u /* heartbeat watchdog: disarm if exceeded */ #define DRIVE_TIMEOUT_MS 500u /* drive command staleness timeout */ #define TELEM_STATUS_PERIOD_MS 100u /* 10 Hz status telemetry to Orin */ #define TELEM_VESC_PERIOD_MS 100u /* 10 Hz VESC telemetry to Orin */ /* ── Drive → VESC RPM scaling ── */ #define RPM_PER_SPEED_UNIT 5 /* speed_units=1000 → 5000 ERPM */ #define RPM_PER_STEER_UNIT 3 /* steer differential scale */ /* ── Tilt cutoff ── */ #define TILT_CUTOFF_DEG 25.0f