From 0e7f980c76a9b883de5d566969e2be14f6f9d99d Mon Sep 17 00:00:00 2001 From: Jacob Dahl Date: Thu, 13 Nov 2025 08:21:18 -0900 Subject: [PATCH 01/14] v6c: neural: remove INS drivers to save flash --- boards/px4/fmu-v6c/neural.px4board | 1 - 1 file changed, 1 deletion(-) diff --git a/boards/px4/fmu-v6c/neural.px4board b/boards/px4/fmu-v6c/neural.px4board index f54d152869..4fd951d324 100644 --- a/boards/px4/fmu-v6c/neural.px4board +++ b/boards/px4/fmu-v6c/neural.px4board @@ -20,7 +20,6 @@ CONFIG_DRIVERS_HEATER=y CONFIG_DRIVERS_IMU_BOSCH_BMI055=y CONFIG_DRIVERS_IMU_BOSCH_BMI088=y CONFIG_DRIVERS_IMU_INVENSENSE_ICM42688P=y -CONFIG_COMMON_INS=y CONFIG_COMMON_LIGHT=y CONFIG_COMMON_MAGNETOMETER=y CONFIG_COMMON_OPTICAL_FLOW=y From acef86cb4d4c3994f9a33474e9138c5e4f6c7a7e Mon Sep 17 00:00:00 2001 From: esmaeelE Date: Fri, 14 Nov 2025 00:38:48 +0330 Subject: [PATCH 02/14] docs: add an extra space (#25901) --- docs/en/advanced_config/bootloader_update_from_betaflight.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/advanced_config/bootloader_update_from_betaflight.md b/docs/en/advanced_config/bootloader_update_from_betaflight.md index 8c6cd1c2ad..e2b17103db 100644 --- a/docs/en/advanced_config/bootloader_update_from_betaflight.md +++ b/docs/en/advanced_config/bootloader_update_from_betaflight.md @@ -85,7 +85,7 @@ Flight controllers that have bootloader PX4-Autopilot `make` targets, can build The list of controllers for which this applies can be obtained by running the following `make` command, and noting the `make` targets that end in `_bootloader` ``` -$make list_config_targets +$ make list_config_targets ... cuav_nora_bootloader From 6bca640caca8360baaf09e6bdbf57dff8c5368cf Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Thu, 13 Nov 2025 15:52:01 -0600 Subject: [PATCH 03/14] ci: no more uploads to flight review Signed-off-by: Ramon Roche --- .github/workflows/sitl_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sitl_tests.yml b/.github/workflows/sitl_tests.yml index 68e16bed71..813e78073b 100644 --- a/.github/workflows/sitl_tests.yml +++ b/.github/workflows/sitl_tests.yml @@ -118,7 +118,7 @@ jobs: PX4_HOME_LON: ${{matrix.config.longitude}} PX4_HOME_ALT: ${{matrix.config.altitude}} PX4_CMAKE_BUILD_TYPE: ${{matrix.config.build_type}} - run: test/mavsdk_tests/mavsdk_test_runner.py --speed-factor 10 --abort-early --model ${{matrix.config.model}} --upload test/mavsdk_tests/configs/sitl.json --verbose --force-color + run: test/mavsdk_tests/mavsdk_test_runner.py --speed-factor 10 --abort-early --model ${{matrix.config.model}} test/mavsdk_tests/configs/sitl.json --verbose --force-color timeout-minutes: 45 - name: Upload failed logs From 363242972cd1bd7d18d465d7f5ced4ca9c3cab92 Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Tue, 4 Nov 2025 11:27:26 +0100 Subject: [PATCH 04/14] process_sensor_caldata: correct pressure unit to Pascal instead of Hectopascal Barometeric pressure was changed to the SI unit Pascal instead of the non-SI unit Hectopascal/Millibar in 0c31f6389666d942d59b74cd2e107a5d3b263ea6 This script stayed unchanged and suffers from assuming `sensor_baro.pressure` is still in the old unit which would be a 100 times smaller number. --- Tools/process_sensor_caldata.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Tools/process_sensor_caldata.py b/Tools/process_sensor_caldata.py index e70ffc8878..c0c656e015 100755 --- a/Tools/process_sensor_caldata.py +++ b/Tools/process_sensor_caldata.py @@ -1656,9 +1656,9 @@ sensor_baro_0['pressure'] = median_filter(sensor_baro_0['pressure']) # fit data median_pressure = np.median(sensor_baro_0['pressure']) if noResample: - coef_baro_0_x = np.polyfit(temp_rel,100*(sensor_baro_0['pressure']-median_pressure),5) # convert from hPa to Pa + coef_baro_0_x = np.polyfit(temp_rel,(sensor_baro_0['pressure']-median_pressure),5) # pressure in Pascal else: - temperature, baro = resampleWithDeltaX(temp_rel,100*(sensor_baro_0['pressure']-median_pressure)) # convert from hPa to Pa + temperature, baro = resampleWithDeltaX(temp_rel,(sensor_baro_0['pressure']-median_pressure)) # pressure in Pascal coef_baro_0_x = np.polyfit(temperature,baro,5) baro_0_params['TC_B0_X5'] = coef_baro_0_x[0] @@ -1717,9 +1717,9 @@ if num_baros >= 2: # fit data median_pressure = np.median(sensor_baro_1['pressure']) if noResample: - coef_baro_1_x = np.polyfit(temp_rel,100*(sensor_baro_1['pressure']-median_pressure),5) # convert from hPa to Pa + coef_baro_1_x = np.polyfit(temp_rel,(sensor_baro_1['pressure']-median_pressure),5) # pressure in Pascal else: - temperature, baro = resampleWithDeltaX(temp_rel,100*(sensor_baro_1['pressure']-median_pressure)) # convert from hPa to Pa + temperature, baro = resampleWithDeltaX(temp_rel,(sensor_baro_1['pressure']-median_pressure)) # pressure in Pascal coef_baro_1_x = np.polyfit(temperature,baro,5) baro_1_params['TC_B1_X5'] = coef_baro_1_x[0] @@ -1778,9 +1778,9 @@ if num_baros >= 3: # fit data median_pressure = np.median(sensor_baro_2['pressure']) if noResample: - coef_baro_2_x = np.polyfit(temp_rel,100*(sensor_baro_2['pressure']-median_pressure),5) # convert from hPa to Pa + coef_baro_2_x = np.polyfit(temp_rel,(sensor_baro_2['pressure']-median_pressure),5) # pressure in Pascal else: - temperature, baro = resampleWithDeltaX(temp_rel,100*(sensor_baro_2['pressure']-median_pressure)) # convert from hPa to Pa + temperature, baro = resampleWithDeltaX(temp_rel,(sensor_baro_2['pressure']-median_pressure)) # pressure in Pascal coef_baro_2_x = np.polyfit(temperature,baro,5) baro_2_params['TC_B2_X5'] = coef_baro_2_x[0] @@ -1838,7 +1838,7 @@ if num_baros >= 4: # fit data median_pressure = np.median(sensor_baro_3['pressure']) - coef_baro_3_x = np.polyfit(temp_rel,100*(sensor_baro_3['pressure']-median_pressure),5) # convert from hPa to Pa + coef_baro_3_x = np.polyfit(temp_rel,(sensor_baro_3['pressure']-median_pressure),5) # pressure in Pascal baro_3_params['TC_B3_X5'] = coef_baro_3_x[0] baro_3_params['TC_B3_X4'] = coef_baro_3_x[1] baro_3_params['TC_B3_X3'] = coef_baro_3_x[2] From 05c79e23d57098f69550095b123442c335fb84f3 Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Wed, 12 Nov 2025 21:00:20 +0100 Subject: [PATCH 05/14] SensorBaroSim: correcct comment, nothing in hPa This comment was forgotten in #20057 --- src/modules/simulation/sensor_baro_sim/SensorBaroSim.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/simulation/sensor_baro_sim/SensorBaroSim.cpp b/src/modules/simulation/sensor_baro_sim/SensorBaroSim.cpp index fc70998e9a..e7dd2bd991 100644 --- a/src/modules/simulation/sensor_baro_sim/SensorBaroSim.cpp +++ b/src/modules/simulation/sensor_baro_sim/SensorBaroSim.cpp @@ -155,7 +155,7 @@ void SensorBaroSim::Run() _baro_drift_pa += _baro_drift_pa_per_sec * dt; const float absolute_pressure_noisy = absolute_pressure + abs_pressure_noise + _baro_drift_pa; - // convert to hPa + // Apply pressure offset float pressure = absolute_pressure_noisy + _sim_baro_off_p.get(); // calculate temperature in Celsius From b83f21ec6fc126988020550c1c0ab80dba45557b Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Wed, 12 Nov 2025 21:09:58 +0100 Subject: [PATCH 06/14] temperature_calibration/baro: fix pressure unit It's Pascal, not Hectopascal since 0c31f6389666d942d59b74cd2e107a5d3b263ea6 --- .../temperature_compensation/temperature_calibration/baro.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/temperature_compensation/temperature_calibration/baro.cpp b/src/modules/temperature_compensation/temperature_calibration/baro.cpp index 7cee4739df..1bc0a2f98b 100644 --- a/src/modules/temperature_compensation/temperature_calibration/baro.cpp +++ b/src/modules/temperature_compensation/temperature_calibration/baro.cpp @@ -96,7 +96,7 @@ int TemperatureCalibrationBaro::update_sensor_instance(PerSensorData &data, int data.device_id = baro_data.device_id; - data.sensor_sample_filt[0] = 100.0f * baro_data.pressure; // convert from hPA to Pa + data.sensor_sample_filt[0] = baro_data.pressure; data.sensor_sample_filt[1] = baro_data.temperature; From 7b05a00db19581a8f2fc4403153f6ffd259f4912 Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Wed, 12 Nov 2025 21:42:09 +0100 Subject: [PATCH 07/14] MS5837: correct unit conversion to Pascal --- src/drivers/barometer/ms5837/MS5837.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/drivers/barometer/ms5837/MS5837.cpp b/src/drivers/barometer/ms5837/MS5837.cpp index 933d3a1a32..4bd4d11c9a 100644 --- a/src/drivers/barometer/ms5837/MS5837.cpp +++ b/src/drivers/barometer/ms5837/MS5837.cpp @@ -332,14 +332,13 @@ int MS5837::_collect() } else { /* pressure calculation, result in Pa */ - int32_t P = (((raw * _SENS) >> 21) - _OFF) >> 13; - + int32_t pressure_pascal = ((((raw * _SENS) >> 21) - _OFF) >> 13) * 10; // publish sensor_baro_s sensor_baro{}; sensor_baro.timestamp_sample = timestamp_sample; sensor_baro.device_id = get_device_id(); - sensor_baro.pressure = P; + sensor_baro.pressure = pressure_pascal; sensor_baro.temperature = _last_temperature; sensor_baro.error_count = perf_event_count(_comms_errors); sensor_baro.timestamp = hrt_absolute_time(); From 82d8813987856c34c5fe8c7ea75ec45e1b57f232 Mon Sep 17 00:00:00 2001 From: Pernilla Date: Fri, 14 Nov 2025 16:44:05 +0100 Subject: [PATCH 08/14] ICE: switch of engine if aux is negative instead of zero (#25923) --- .../InternalCombustionEngineControl.cpp | 31 ++++++++++--------- .../InternalCombustionEngineControl.hpp | 4 +-- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/modules/internal_combustion_engine_control/InternalCombustionEngineControl.cpp b/src/modules/internal_combustion_engine_control/InternalCombustionEngineControl.cpp index 33ab49eb32..f6d575943e 100644 --- a/src/modules/internal_combustion_engine_control/InternalCombustionEngineControl.cpp +++ b/src/modules/internal_combustion_engine_control/InternalCombustionEngineControl.cpp @@ -108,26 +108,29 @@ void InternalCombustionEngineControl::Run() const hrt_abstime now = hrt_absolute_time(); - UserOnOffRequest user_request = UserOnOffRequest::Off; - switch (static_cast(_param_ice_on_source.get())) { case ICESource::ArmingState: { - if (vehicle_status.arming_state == vehicle_status_s::ARMING_STATE_ARMED) { - user_request = UserOnOffRequest::On; - } + _user_request = vehicle_status.arming_state == vehicle_status_s::ARMING_STATE_ARMED ? UserOnOffRequest::On : + UserOnOffRequest::Off; } break; case ICESource::Aux1: { if (manual_control_setpoint.aux1 > 0.5f) { - user_request = UserOnOffRequest::On; + _user_request = UserOnOffRequest::On; + + } else if (manual_control_setpoint.aux1 < -0.5f) { + _user_request = UserOnOffRequest::Off; } } break; case ICESource::Aux2: { if (manual_control_setpoint.aux2 > 0.5f) { - user_request = UserOnOffRequest::On; + _user_request = UserOnOffRequest::On; + + } else if (manual_control_setpoint.aux2 < -0.5f) { + _user_request = UserOnOffRequest::Off; } } break; @@ -137,7 +140,7 @@ void InternalCombustionEngineControl::Run() case State::Stopped: { controlEngineStop(); - if (user_request == UserOnOffRequest::On && !maximumAttemptsReached()) { + if (_user_request == UserOnOffRequest::On && !maximumAttemptsReached()) { _state = State::Starting; _state_start_time = now; @@ -148,7 +151,7 @@ void InternalCombustionEngineControl::Run() case State::Starting: { - if (user_request == UserOnOffRequest::Off) { + if (_user_request == UserOnOffRequest::Off) { _state = State::Stopped; _starting_retry_cycle = 0; PX4_INFO("ICE: Stopped"); @@ -196,7 +199,7 @@ void InternalCombustionEngineControl::Run() case State::Running: { controlEngineRunning(throttle_in); - if (user_request == UserOnOffRequest::Off) { + if (_user_request == UserOnOffRequest::Off) { _state = State::Stopped; _starting_retry_cycle = 0; PX4_INFO("ICE: Stopped"); @@ -217,7 +220,7 @@ void InternalCombustionEngineControl::Run() case State::Fault: { - if (user_request == UserOnOffRequest::Off) { + if (_user_request == UserOnOffRequest::Off) { _state = State::Stopped; _starting_retry_cycle = 0; PX4_INFO("ICE: Stopped"); @@ -243,10 +246,10 @@ void InternalCombustionEngineControl::Run() _throttle_control_slew_rate.setForcedValue(0.f); } - publishControl(now, user_request); + publishControl(now); } -void InternalCombustionEngineControl::publishControl(const hrt_abstime now, const UserOnOffRequest user_request) +void InternalCombustionEngineControl::publishControl(const hrt_abstime now) { internal_combustion_engine_control_s ice_control{}; ice_control.timestamp = now; @@ -254,7 +257,7 @@ void InternalCombustionEngineControl::publishControl(const hrt_abstime now, cons ice_control.ignition_on = _ignition_on; ice_control.starter_engine_control = _starter_engine_control; ice_control.throttle_control = _throttle_control; - ice_control.user_request = static_cast(user_request); + ice_control.user_request = static_cast(_user_request); _internal_combustion_engine_control_pub.publish(ice_control); internal_combustion_engine_status_s ice_status; diff --git a/src/modules/internal_combustion_engine_control/InternalCombustionEngineControl.hpp b/src/modules/internal_combustion_engine_control/InternalCombustionEngineControl.hpp index 01884e4967..ad9feafec6 100644 --- a/src/modules/internal_combustion_engine_control/InternalCombustionEngineControl.hpp +++ b/src/modules/internal_combustion_engine_control/InternalCombustionEngineControl.hpp @@ -102,7 +102,7 @@ private: enum class UserOnOffRequest { Off, On - }; + } _user_request{UserOnOffRequest::Off}; enum class ICESource { ArmingState, @@ -126,7 +126,7 @@ private: void controlEngineStartup(const hrt_abstime now); void controlEngineFault(); bool maximumAttemptsReached(); - void publishControl(const hrt_abstime now, const UserOnOffRequest user_request); + void publishControl(const hrt_abstime now); // Starting state specifics static constexpr float DELAY_BEFORE_RESTARTING{1.f}; From 9248238f9e07bdf1f25a5fd4cc6188b4ce0e68da Mon Sep 17 00:00:00 2001 From: Alexander Lerach Date: Fri, 14 Nov 2025 19:06:00 +0100 Subject: [PATCH 09/14] ci: fix flash-analysis sporadic fail --- .github/workflows/flash_analysis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/flash_analysis.yml b/.github/workflows/flash_analysis.yml index 143d54790c..7f126352ab 100644 --- a/.github/workflows/flash_analysis.yml +++ b/.github/workflows/flash_analysis.yml @@ -54,6 +54,7 @@ jobs: run: | make clean make distclean + make submodulesclean - name: If it's a PR checkout the base branch if: ${{ github.event.pull_request }} From f1a68b7450b6bab399629d19cf92b2b114ee1586 Mon Sep 17 00:00:00 2001 From: alexklimaj Date: Fri, 14 Nov 2025 16:19:21 -0700 Subject: [PATCH 10/14] gps: update submodule and fix M9N output rate --- src/drivers/gps/devices | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/drivers/gps/devices b/src/drivers/gps/devices index 0b9695881b..caf5158061 160000 --- a/src/drivers/gps/devices +++ b/src/drivers/gps/devices @@ -1 +1 @@ -Subproject commit 0b9695881bd1e8f830ab4538ab3acc0050019eba +Subproject commit caf5158061bd10e79c9f042abb62c86bc6f3e7a7 From 67ace35182230333b1e8e27a545c7b27c2a146bc Mon Sep 17 00:00:00 2001 From: alexklimaj Date: Fri, 14 Nov 2025 17:15:43 -0700 Subject: [PATCH 11/14] boards: ark-gps safety led open drain --- boards/ark/can-gps/src/board_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boards/ark/can-gps/src/board_config.h b/boards/ark/can-gps/src/board_config.h index 723310472f..81f0394944 100644 --- a/boards/ark/can-gps/src/board_config.h +++ b/boards/ark/can-gps/src/board_config.h @@ -47,7 +47,7 @@ #define GPIO_BTN_SAFETY /* PB15 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTB|GPIO_PIN15) /* Safety LED */ -#define GPIO_LED_SAFETY /* PA1 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTA|GPIO_PIN1) +#define GPIO_LED_SAFETY /* PA1 */ (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTA|GPIO_PIN1) /* Tone alarm output. */ #define TONE_ALARM_TIMER 2 /* timer 2 */ From 676fa8a8835eacac3548745c4cc8fe931d5c2f35 Mon Sep 17 00:00:00 2001 From: Niklas Hauser Date: Thu, 23 Oct 2025 18:05:57 +0200 Subject: [PATCH 12/14] [FMUv6s] Convert unused PPM pin to PPS input --- boards/auterion/fmu-v6s/default.px4board | 1 + boards/auterion/fmu-v6s/init/rc.board_defaults | 7 +++++++ boards/auterion/fmu-v6s/nuttx-config/nsh/defconfig | 5 ++++- boards/auterion/fmu-v6s/src/board_config.h | 13 ++++++------- boards/auterion/fmu-v6s/src/timer_config.cpp | 8 ++++++++ 5 files changed, 26 insertions(+), 8 deletions(-) diff --git a/boards/auterion/fmu-v6s/default.px4board b/boards/auterion/fmu-v6s/default.px4board index 296f2db880..bcee3cb8cb 100644 --- a/boards/auterion/fmu-v6s/default.px4board +++ b/boards/auterion/fmu-v6s/default.px4board @@ -14,6 +14,7 @@ CONFIG_COMMON_DISTANCE_SENSOR=y CONFIG_DRIVERS_DSHOT=y CONFIG_DRIVERS_GNSS_SEPTENTRIO=y CONFIG_DRIVERS_GPS=y +CONFIG_DRIVERS_PPS_CAPTURE=y CONFIG_DRIVERS_IMU_BOSCH_BMI088=y CONFIG_BMI088_ACCELEROMETER_INT2=y CONFIG_COMMON_LIGHT=y diff --git a/boards/auterion/fmu-v6s/init/rc.board_defaults b/boards/auterion/fmu-v6s/init/rc.board_defaults index 012605bee3..a5e81c9825 100644 --- a/boards/auterion/fmu-v6s/init/rc.board_defaults +++ b/boards/auterion/fmu-v6s/init/rc.board_defaults @@ -19,6 +19,13 @@ param set-default SDLOG_BACKEND 2 # 200kOhm/10kOhm voltage divider on V_BAT param set-default BAT1_V_DIV 21 +# Uncomment to use PWM9 as Analog input +# param set-default PWM_MAIN_TIM2 -2 + +# Uncomment to use PWM10 as PPS input +# param set-default PWM_MAIN_TIM3 -2 +# param set-default PWM_MAIN_FUNC10 2064 + # Skynode: use the "custom participant", IP=10.41.10.1 config for uxrce_dds_client param set-default UXRCE_DDS_PTCFG 2 param set-default UXRCE_DDS_AG_IP 170461697 diff --git a/boards/auterion/fmu-v6s/nuttx-config/nsh/defconfig b/boards/auterion/fmu-v6s/nuttx-config/nsh/defconfig index eed622209e..2fa27f6758 100644 --- a/boards/auterion/fmu-v6s/nuttx-config/nsh/defconfig +++ b/boards/auterion/fmu-v6s/nuttx-config/nsh/defconfig @@ -238,9 +238,12 @@ CONFIG_STM32H7_SPI3_DMA_BUFFER=1024 CONFIG_STM32H7_SPI4=y CONFIG_STM32H7_SPI4_DMA=y CONFIG_STM32H7_SPI4_DMA_BUFFER=4096 -CONFIG_STM32H7_TIM12=y CONFIG_STM32H7_TIM1=y +CONFIG_STM32H7_TIM2=y CONFIG_STM32H7_TIM3=y +CONFIG_STM32H7_TIM4=y +CONFIG_STM32H7_TIM5=y +CONFIG_STM32H7_TIM8=y CONFIG_STM32H7_UART4=y CONFIG_STM32H7_UART5=y CONFIG_STM32H7_UART7=y diff --git a/boards/auterion/fmu-v6s/src/board_config.h b/boards/auterion/fmu-v6s/src/board_config.h index 0b2f3c9225..4e40de72eb 100644 --- a/boards/auterion/fmu-v6s/src/board_config.h +++ b/boards/auterion/fmu-v6s/src/board_config.h @@ -135,15 +135,14 @@ /* PWM Timers */ -#define BOARD_NUM_IO_TIMERS 2 -#define DIRECT_PWM_OUTPUT_CHANNELS 8 +/* 3 for PWM outputs, 1 for input capture */ +#define BOARD_NUM_IO_TIMERS 4 +/* 9 for PWM outputs, 1 for input capture */ +#define DIRECT_PWM_OUTPUT_CHANNELS 10 /* High-resolution timer */ -#define HRT_TIMER 8 /* use timer8 for the HRT */ -#define HRT_TIMER_CHANNEL 3 /* use capture/compare channel 3 */ - -#define HRT_PPM_CHANNEL /* T8C2 */ 2 /* use capture/compare channel 1 */ -#define GPIO_PPM_IN /* PC7 */ GPIO_TIM8_CH2IN_1 +#define HRT_TIMER 4 /* use timer4 for the HRT */ +#define HRT_TIMER_CHANNEL 1 /* use capture/compare channel 1 */ /* This board provides a DMA pool and APIs */ #define BOARD_DMA_ALLOC_POOL_SIZE 5120 diff --git a/boards/auterion/fmu-v6s/src/timer_config.cpp b/boards/auterion/fmu-v6s/src/timer_config.cpp index 66311d38e2..a409137ef8 100644 --- a/boards/auterion/fmu-v6s/src/timer_config.cpp +++ b/boards/auterion/fmu-v6s/src/timer_config.cpp @@ -44,11 +44,17 @@ * TIM3_CH2 T FMU_CH6 * TIM3_CH3 T FMU_CH7 * TIM3_CH4 T FMU_CH8 + * + * TIM5_CH1 T FMU_CH9 + * + * TIM8_CH2 T FMU_CAP1 < Input Capture */ constexpr io_timers_t io_timers[MAX_IO_TIMERS] = { initIOTimer(Timer::Timer1, DMA{DMA::Index1}), initIOTimer(Timer::Timer3, DMA{DMA::Index1}), + initIOTimer(Timer::Timer5), + initIOTimer(Timer::Timer8), }; constexpr timer_io_channels_t timer_io_channels[MAX_TIMER_IO_CHANNELS] = { @@ -60,6 +66,8 @@ constexpr timer_io_channels_t timer_io_channels[MAX_TIMER_IO_CHANNELS] = { initIOTimerChannel(io_timers, {Timer::Timer3, Timer::Channel2}, {GPIO::PortB, GPIO::Pin5}), initIOTimerChannel(io_timers, {Timer::Timer3, Timer::Channel3}, {GPIO::PortB, GPIO::Pin0}), initIOTimerChannel(io_timers, {Timer::Timer3, Timer::Channel4}, {GPIO::PortC, GPIO::Pin9}), + initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel1}, {GPIO::PortA, GPIO::Pin0}), + initIOTimerChannelCapture(io_timers, {Timer::Timer8, Timer::Channel2}, {GPIO::PortC, GPIO::Pin7}), }; constexpr io_timers_channel_mapping_t io_timers_channel_mapping = From 7cf9be6e100c3ee9ca715b5557df2efd455b6c0e Mon Sep 17 00:00:00 2001 From: Niklas Hauser Date: Thu, 23 Oct 2025 18:35:07 +0200 Subject: [PATCH 13/14] [AutFMUv6x] Remove unused timer 2 --- boards/auterion/fmu-v6x/src/board_config.h | 2 +- boards/auterion/fmu-v6x/src/timer_config.cpp | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/boards/auterion/fmu-v6x/src/board_config.h b/boards/auterion/fmu-v6x/src/board_config.h index c304153abf..671a1c3e5f 100644 --- a/boards/auterion/fmu-v6x/src/board_config.h +++ b/boards/auterion/fmu-v6x/src/board_config.h @@ -471,7 +471,7 @@ #define PX4_I2C_BUS_MTD 4,5 -#define BOARD_NUM_IO_TIMERS 5 +#define BOARD_NUM_IO_TIMERS 4 /* No CDCACM driver for this board, so this is manually defined for version.c * so that the px4_board_version reports the correct board id to the companion */ diff --git a/boards/auterion/fmu-v6x/src/timer_config.cpp b/boards/auterion/fmu-v6x/src/timer_config.cpp index 928f4916f0..a1c458d9eb 100644 --- a/boards/auterion/fmu-v6x/src/timer_config.cpp +++ b/boards/auterion/fmu-v6x/src/timer_config.cpp @@ -50,8 +50,6 @@ * TIM1_CH3 T SPI2_DRDY2_ISM330_INT2 < Capture or GPIO INT * TIM1_CH1 T SPIX_SYNC > Pulse or GPIO strobe * - * TIM2_CH3 T HEATER > PWM OUT or GPIO - * * TIM14_CH1 T BUZZER_1 - Driven by other driver * TIM8_CH1_IN T FMU_PPM_INPUT - Sampled byt HRT by other driver */ @@ -61,7 +59,6 @@ constexpr io_timers_t io_timers[MAX_IO_TIMERS] = { initIOTimer(Timer::Timer4, DMA{DMA::Index1}), initIOTimer(Timer::Timer12), initIOTimer(Timer::Timer1), - initIOTimer(Timer::Timer2), }; constexpr timer_io_channels_t timer_io_channels[MAX_TIMER_IO_CHANNELS] = { From 49febef5ca10e621f95a595591087fd956dbae9a Mon Sep 17 00:00:00 2001 From: Niklas Hauser Date: Thu, 23 Oct 2025 18:45:30 +0200 Subject: [PATCH 14/14] [AutFMUv6x] Enable PPS capture driver --- boards/auterion/fmu-v6x/default.px4board | 1 + 1 file changed, 1 insertion(+) diff --git a/boards/auterion/fmu-v6x/default.px4board b/boards/auterion/fmu-v6x/default.px4board index dece24a26f..84b4cbc57e 100644 --- a/boards/auterion/fmu-v6x/default.px4board +++ b/boards/auterion/fmu-v6x/default.px4board @@ -20,6 +20,7 @@ CONFIG_DRIVERS_DSHOT=y CONFIG_DRIVERS_GNSS_SEPTENTRIO=y CONFIG_DRIVERS_GPIO_MCP23009=y CONFIG_DRIVERS_GPS=y +CONFIG_DRIVERS_PPS_CAPTURE=y CONFIG_DRIVERS_IMU_BOSCH_BMI088=y CONFIG_DRIVERS_IMU_INVENSENSE_ICM20602=y CONFIG_DRIVERS_IMU_INVENSENSE_ICM42688P=y