From 1017172350e65560ec27a97634bf883b8fa37506 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Sun, 27 Mar 2022 17:03:41 +0200 Subject: [PATCH] Fix MPM firmware update --- radio/src/io/multi_firmware_update.cpp | 14 +++----------- .../targets/common/arm/stm32/extmodule_driver.cpp | 11 +++++++++++ .../targets/common/arm/stm32/extmodule_driver.h | 1 + radio/src/targets/simu/module_drivers.cpp | 1 + 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/radio/src/io/multi_firmware_update.cpp b/radio/src/io/multi_firmware_update.cpp index 3366144fa..6151031cc 100644 --- a/radio/src/io/multi_firmware_update.cpp +++ b/radio/src/io/multi_firmware_update.cpp @@ -128,6 +128,7 @@ class MultiInternalUpdateDriver: public MultiFirmwareUpdateDriver }; #endif +#if defined(HARDWARE_EXTERNAL_MODULE) class MultiExternalUpdateDriver: public MultiFirmwareUpdateDriver { public: @@ -141,15 +142,7 @@ class MultiExternalUpdateDriver: public MultiFirmwareUpdateDriver void init(bool inverted) override { -#if !defined(EXTMODULE_USART) - GPIO_InitTypeDef GPIO_InitStructure; - GPIO_InitStructure.GPIO_Pin = EXTMODULE_TX_GPIO_PIN; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; - GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; - GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; - GPIO_Init(EXTMODULE_TX_GPIO, &GPIO_InitStructure); -#endif + extmoduleInitTxPin(); if (inverted) telemetryPortInvertedInit(57600); @@ -164,9 +157,7 @@ class MultiExternalUpdateDriver: public MultiFirmwareUpdateDriver void sendByte(uint8_t byte) const override { -#if defined(HARDWARE_EXTERNAL_MODULE) extmoduleSendInvertedByte(byte); -#endif } void clear() const override @@ -184,6 +175,7 @@ class MultiExternalUpdateDriver: public MultiFirmwareUpdateDriver clear(); } }; +#endif class MultiExtSportUpdateDriver: public MultiFirmwareUpdateDriver { diff --git a/radio/src/targets/common/arm/stm32/extmodule_driver.cpp b/radio/src/targets/common/arm/stm32/extmodule_driver.cpp index e877e9bdb..0e28537a4 100644 --- a/radio/src/targets/common/arm/stm32/extmodule_driver.cpp +++ b/radio/src/targets/common/arm/stm32/extmodule_driver.cpp @@ -144,6 +144,17 @@ void extmoduleSendNextFrameSoftSerial(const void* pulses, uint16_t length, bool stm32_pulse_start_dma_req(&extmoduleTimer, pulses, length, LL_TIM_OCMODE_TOGGLE, 0); } +void extmoduleInitTxPin() +{ + LL_GPIO_InitTypeDef pinInit; + LL_GPIO_StructInit(&pinInit); + pinInit.Pin = extmoduleTimer.GPIO_Pin; + pinInit.Mode = LL_GPIO_MODE_OUTPUT; + pinInit.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + pinInit.Pull = LL_GPIO_PULL_UP; + LL_GPIO_Init(extmoduleTimer.GPIOx, &pinInit); +} + // Delay based byte sending @ 57600 bps void extmoduleSendInvertedByte(uint8_t byte) { diff --git a/radio/src/targets/common/arm/stm32/extmodule_driver.h b/radio/src/targets/common/arm/stm32/extmodule_driver.h index 0146e0af1..581c8dd4e 100644 --- a/radio/src/targets/common/arm/stm32/extmodule_driver.h +++ b/radio/src/targets/common/arm/stm32/extmodule_driver.h @@ -41,4 +41,5 @@ void extmoduleSendNextFrameSoftSerial(const void* pulses, uint16_t length, bool polarity = true); // Bitbang serial +void extmoduleInitTxPin(); void extmoduleSendInvertedByte(uint8_t byte); diff --git a/radio/src/targets/simu/module_drivers.cpp b/radio/src/targets/simu/module_drivers.cpp index 39f7e9821..25e8a855d 100644 --- a/radio/src/targets/simu/module_drivers.cpp +++ b/radio/src/targets/simu/module_drivers.cpp @@ -42,6 +42,7 @@ void extmodulePpmStart(unsigned short, bool) {} void extmoduleSerialStart() {} void extmodulePxx1SerialStart() {} void extmodulePxx1PulsesStart() {} +void extmoduleInitTxPin() {} void extmoduleSendInvertedByte(uint8_t) {} void extmoduleSendNextFramePxx1(void const*, unsigned short) {} void extmoduleSendNextFrameSoftSerial(void const*, unsigned short, bool) {}