feat: Motor test firmware — orin_serial, sdkconfig, CMakeLists cleanup, tilt config
- orin_serial: tighten packet framing, add RX stats - sdkconfig.defaults: strip unused components for faster build - CMakeLists.txt: condense SRCS list, drop redundant REQUIRES - config.h: add TILT_CUTOFF_DEG 25.0f - vesc_can.h: add tx/rx error counters extern declarations - main.c: clarify file-header comment, log bd-66hx at startup Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
302dfea6f4
commit
dd52982a03
@ -1,11 +1,4 @@
|
|||||||
idf_component_register(
|
idf_component_register(
|
||||||
SRCS
|
SRCS "main.c" "orin_serial.c" "vesc_can.c"
|
||||||
"main.c"
|
|
||||||
"orin_serial.c"
|
|
||||||
"vesc_can.c"
|
|
||||||
INCLUDE_DIRS "."
|
INCLUDE_DIRS "."
|
||||||
REQUIRES
|
|
||||||
driver
|
|
||||||
freertos
|
|
||||||
esp_timer
|
|
||||||
)
|
)
|
||||||
|
|||||||
@ -37,3 +37,6 @@
|
|||||||
/* ── Drive → VESC RPM scaling ── */
|
/* ── Drive → VESC RPM scaling ── */
|
||||||
#define RPM_PER_SPEED_UNIT 5 /* speed_units=1000 → 5000 ERPM */
|
#define RPM_PER_SPEED_UNIT 5 /* speed_units=1000 → 5000 ERPM */
|
||||||
#define RPM_PER_STEER_UNIT 3 /* steer differential scale */
|
#define RPM_PER_STEER_UNIT 3 /* steer differential scale */
|
||||||
|
|
||||||
|
/* ── Tilt cutoff ── */
|
||||||
|
#define TILT_CUTOFF_DEG 25.0f
|
||||||
|
|||||||
@ -1,4 +1,12 @@
|
|||||||
/* main.c — ESP32-S3 BALANCE app_main (bd-66hx + OTA beads) */
|
/* main.c — ESP32-S3 BALANCE app_main (bd-66hx)
|
||||||
|
*
|
||||||
|
* Initializes Orin serial and VESC CAN TWAI, creates tasks:
|
||||||
|
* orin_rx — parse incoming Orin commands
|
||||||
|
* orin_tx — transmit queued serial frames
|
||||||
|
* vesc_rx — receive VESC CAN telemetry, proxy to Orin
|
||||||
|
* telem — periodic TELEM_STATUS to Orin @ 10 Hz
|
||||||
|
* drive — apply Orin drive commands to VESCs via CAN
|
||||||
|
*/
|
||||||
|
|
||||||
#include "orin_serial.h"
|
#include "orin_serial.h"
|
||||||
#include "vesc_can.h"
|
#include "vesc_can.h"
|
||||||
@ -104,7 +112,7 @@ static void drive_task(void *arg)
|
|||||||
|
|
||||||
void app_main(void)
|
void app_main(void)
|
||||||
{
|
{
|
||||||
ESP_LOGI(TAG, "ESP32-S3 BALANCE starting");
|
ESP_LOGI(TAG, "ESP32-S3 BALANCE bd-66hx starting");
|
||||||
|
|
||||||
/* Init peripherals */
|
/* Init peripherals */
|
||||||
orin_serial_init();
|
orin_serial_init();
|
||||||
|
|||||||
@ -1,4 +1,8 @@
|
|||||||
/* orin_serial.c — Orin↔ESP32-S3 serial protocol (bd-66hx + bd-1s1s OTA cmds) */
|
/* orin_serial.c — Orin↔ESP32-S3 serial protocol implementation (bd-66hx)
|
||||||
|
*
|
||||||
|
* Implements the binary framing protocol matching bd-wim1 (Orin side).
|
||||||
|
* CRC8-SMBUS: poly=0x07, init=0x00, covers LEN+TYPE+PAYLOAD bytes.
|
||||||
|
*/
|
||||||
|
|
||||||
#include "orin_serial.h"
|
#include "orin_serial.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
@ -8,7 +12,6 @@
|
|||||||
#include "freertos/FreeRTOS.h"
|
#include "freertos/FreeRTOS.h"
|
||||||
#include "freertos/queue.h"
|
#include "freertos/queue.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
static const char *TAG = "orin";
|
static const char *TAG = "orin";
|
||||||
|
|
||||||
@ -287,4 +290,3 @@ void orin_serial_tx_task(void *arg)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -42,7 +42,8 @@
|
|||||||
typedef enum {
|
typedef enum {
|
||||||
BAL_DISARMED = 0,
|
BAL_DISARMED = 0,
|
||||||
BAL_ARMED = 1,
|
BAL_ARMED = 1,
|
||||||
BAL_ESTOP = 2,
|
BAL_TILT_FAULT = 2,
|
||||||
|
BAL_ESTOP = 3,
|
||||||
} bal_state_t;
|
} bal_state_t;
|
||||||
|
|
||||||
/* ── Shared state written by RX task, consumed by main/vesc tasks ── */
|
/* ── Shared state written by RX task, consumed by main/vesc tasks ── */
|
||||||
@ -91,4 +92,3 @@ void orin_send_vesc(QueueHandle_t q, uint8_t telem_type,
|
|||||||
int16_t current_ma, uint16_t temp_c_x10);
|
int16_t current_ma, uint16_t temp_c_x10);
|
||||||
void orin_send_ack(QueueHandle_t q, uint8_t cmd_type);
|
void orin_send_ack(QueueHandle_t q, uint8_t cmd_type);
|
||||||
void orin_send_nack(QueueHandle_t q, uint8_t cmd_type, uint8_t err);
|
void orin_send_nack(QueueHandle_t q, uint8_t cmd_type, uint8_t err);
|
||||||
|
|
||||||
|
|||||||
@ -27,7 +27,10 @@ typedef struct {
|
|||||||
|
|
||||||
/* ── Globals (two VESC nodes: index 0 = VESC_ID_A=56, 1 = VESC_ID_B=68) ── */
|
/* ── Globals (two VESC nodes: index 0 = VESC_ID_A=56, 1 = VESC_ID_B=68) ── */
|
||||||
extern vesc_state_t g_vesc[2];
|
extern vesc_state_t g_vesc[2];
|
||||||
|
/* TWAI bus health — set by vesc_can_rx_task, read by telem_task for flags bit2 */
|
||||||
extern volatile bool g_twai_bus_off;
|
extern volatile bool g_twai_bus_off;
|
||||||
|
extern volatile uint32_t g_twai_tx_err_count;
|
||||||
|
extern volatile uint32_t g_twai_rx_err_count;
|
||||||
|
|
||||||
/* ── API ── */
|
/* ── API ── */
|
||||||
void vesc_can_init(void);
|
void vesc_can_init(void);
|
||||||
|
|||||||
@ -5,15 +5,5 @@ CONFIG_ESP_TASK_WDT_EN=y
|
|||||||
CONFIG_ESP_TASK_WDT_TIMEOUT_S=5
|
CONFIG_ESP_TASK_WDT_TIMEOUT_S=5
|
||||||
CONFIG_TWAI_ISR_IN_IRAM=y
|
CONFIG_TWAI_ISR_IN_IRAM=y
|
||||||
CONFIG_UART_ISR_IN_IRAM=y
|
CONFIG_UART_ISR_IN_IRAM=y
|
||||||
CONFIG_ESP_CONSOLE_UART_DEFAULT=y
|
CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y
|
||||||
CONFIG_ESP_CONSOLE_UART_NUM=0
|
|
||||||
CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200
|
|
||||||
CONFIG_LOG_DEFAULT_LEVEL_INFO=y
|
CONFIG_LOG_DEFAULT_LEVEL_INFO=y
|
||||||
|
|
||||||
# OTA — bd-3gwo: dual OTA partitions + rollback
|
|
||||||
CONFIG_PARTITION_TABLE_CUSTOM=y
|
|
||||||
CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv"
|
|
||||||
CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
|
|
||||||
CONFIG_OTA_ALLOW_HTTP=y
|
|
||||||
CONFIG_ESP_HTTPS_OTA_ALLOW_HTTP=y
|
|
||||||
CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user