Tee confirmed physical wiring on Waveshare ESP32-S3 board: - GPIO 15 = CAN TX (SN65HVD230 TXD) - GPIO 16 = CAN RX (SN65HVD230 RXD) - GPIO 17/18 = inter-board UART to ESP32 IO Previous configs (GPIO 2/1, 43/44) were spec assumptions that didn't match the actual board wiring. GPIO 43/44 are internal to PCB, not on the header where the transceiver is connected. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
55 lines
2.3 KiB
C
55 lines
2.3 KiB
C
#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: USB Serial/JTAG (native USB, /dev/ttyACM0 on Orin) ── */
|
||
#define ORIN_UART_PORT UART_NUM_0
|
||
#define ORIN_UART_BAUD 460800
|
||
#define ORIN_UART_TX_GPIO 43 /* unused — Orin uses USB-CDC */
|
||
#define ORIN_UART_RX_GPIO 44 /* unused — Orin uses USB-CDC */
|
||
#define ORIN_UART_RX_BUF 1024
|
||
#define ORIN_TX_QUEUE_DEPTH 16
|
||
|
||
/* ── Inter-board UART (ESP32 Balance ↔ ESP32 IO) ── */
|
||
#define IO_UART_TX_GPIO 17
|
||
#define IO_UART_RX_GPIO 18
|
||
|
||
/* ── VESC CAN TWAI (SN65HVD230 on Waveshare header pins) ── */
|
||
#define VESC_CAN_TX_GPIO 15 /* GPIO15 → SN65HVD230 TXD */
|
||
#define VESC_CAN_RX_GPIO 16 /* GPIO16 ← SN65HVD230 RXD */
|
||
#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
|