From 43aa8de22b615c1c81866d14512c4c85ea717d25 Mon Sep 17 00:00:00 2001 From: Jacob Dahl <37091262+dakejahl@users.noreply.github.com> Date: Mon, 2 Mar 2026 19:49:13 -0900 Subject: [PATCH] boards: cuav/x25-super: add multi-instance heater support (#26623) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * boards: cuav/x25-super: add multi-instance heater support Restore heater support removed in #26621 using the generic multi-instance heater driver from #26325. Defines HEATER_NUM 2 for the two IMU heater outputs (PB10, PE6). * boards: cuav/x25-super: fix heater IMU IDs and temp from hw test Update defaults per @cuav-chen2 hardware testing: - HEATER1_IMU_ID: 2818066 (SCH16T) - HEATER2_IMU_ID: 3014698 (IIM42653) - HEATER2_TEMP: 65°C * Update boards/cuav/x25-super/init/rc.board_defaults --- boards/cuav/x25-super/default.px4board | 1 + boards/cuav/x25-super/init/rc.board_defaults | 15 +++++---------- boards/cuav/x25-super/src/board_config.h | 10 +++++++++- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/boards/cuav/x25-super/default.px4board b/boards/cuav/x25-super/default.px4board index 13c9bdbf3e..b166d4d442 100644 --- a/boards/cuav/x25-super/default.px4board +++ b/boards/cuav/x25-super/default.px4board @@ -17,6 +17,7 @@ CONFIG_COMMON_DIFFERENTIAL_PRESSURE=y CONFIG_COMMON_DISTANCE_SENSOR=y CONFIG_DRIVERS_DSHOT=y CONFIG_DRIVERS_GPS=y +CONFIG_DRIVERS_HEATER=y CONFIG_DRIVERS_IMU_INVENSENSE_IIM42652=y CONFIG_DRIVERS_IMU_INVENSENSE_IIM42653=y CONFIG_DRIVERS_IMU_MURATA_SCH16T=y diff --git a/boards/cuav/x25-super/init/rc.board_defaults b/boards/cuav/x25-super/init/rc.board_defaults index e292413cfc..04ac2def5b 100644 --- a/boards/cuav/x25-super/init/rc.board_defaults +++ b/boards/cuav/x25-super/init/rc.board_defaults @@ -21,17 +21,12 @@ param set-default USB_MAV_MODE 5 param set-default UAVCAN_SUB_GPS 1 param set-default UAVCAN_SUB_BAT 1 -# Enable IMU thermal control +# IMU thermal control (multi-instance heater) param set-default SENS_EN_THERMAL 1 -param set-default SENS_IMU_TEMP 45 -param set-default SENS_TEMP_ID 5963786 - -# CUAV core board IMU thermal control -param set-default CORE_IMU_TEMP 45 -param set-default CORE_TEMP_ID 3014698 - -# TODO: replace with heater using the multi-heater defines from https://github.com/PX4/PX4-Autopilot/pull/26325 -# core_heater start +param set-default HEATER1_IMU_ID 2818066 +param set-default HEATER1_TEMP 45 +param set-default HEATER2_IMU_ID 3014698 +param set-default HEATER2_TEMP 45 # CUAV pwm voltage 3.3V/5V switch pwm_voltage_apply start diff --git a/boards/cuav/x25-super/src/board_config.h b/boards/cuav/x25-super/src/board_config.h index 68cc628805..47fc455dd9 100644 --- a/boards/cuav/x25-super/src/board_config.h +++ b/boards/cuav/x25-super/src/board_config.h @@ -170,7 +170,13 @@ #define GPIO_HW_REV_SENSE /* PH4 */ GPIO_ADC3_INP15 #define GPIO_HW_VER_SENSE /* PH3 */ GPIO_ADC3_INP14 -// TODO: add multi-heater definitions, see https://github.com/PX4/PX4-Autopilot/pull/26325 +/* HEATER */ +#define GPIO_HEATER_OUTPUT +#define HEATER_NUM 2 +#define GPIO_HEATER1_OUTPUT /* PB10 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN10) +#define HEATER1_OUTPUT_EN(on_true) px4_arch_gpiowrite(GPIO_HEATER1_OUTPUT, (on_true)) +#define GPIO_HEATER2_OUTPUT /* PE6 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTE|GPIO_PIN6) +#define HEATER2_OUTPUT_EN(on_true) px4_arch_gpiowrite(GPIO_HEATER2_OUTPUT, (on_true)) /* PE7 is nARMED * The GPIO will be set as input while not armed HW will have external HW Pull UP. @@ -395,6 +401,8 @@ GPIO_CAN2_RX, \ GPIO_CAN1_SILENT_S0, \ GPIO_CAN2_SILENT_S1, \ + GPIO_HEATER1_OUTPUT, \ + GPIO_HEATER2_OUTPUT, \ GPIO_nPOWER_IN_A, \ GPIO_nPOWER_IN_B, \ GPIO_nPOWER_IN_C, \