From 9a51ff8f0ea34029689257f37cf1e9386361e8fe Mon Sep 17 00:00:00 2001 From: Xy2019 <46518305+Xy2019@users.noreply.github.com> Date: Thu, 9 Mar 2023 22:43:06 -0800 Subject: [PATCH] fix(el18): Power-on backlight before screen content (#3206) Also relevant to NV14 --- .../common/arm/stm32/f4/system_stm32f4xx.c | 3 +++ radio/src/targets/nv14/backlight_driver.cpp | 15 ++++++++++++++- radio/src/targets/nv14/board.h | 1 + radio/src/targets/nv14/bootloader/boot_menu.cpp | 2 ++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/radio/src/targets/common/arm/stm32/f4/system_stm32f4xx.c b/radio/src/targets/common/arm/stm32/f4/system_stm32f4xx.c index 10805d908..890a57e2e 100644 --- a/radio/src/targets/common/arm/stm32/f4/system_stm32f4xx.c +++ b/radio/src/targets/common/arm/stm32/f4/system_stm32f4xx.c @@ -214,6 +214,9 @@ static void SetSysClock(void); */ void SystemInit(void) { +#if defined(PCBFLYSKY) + backlightLowInit(); +#endif /* FPU settings ------------------------------------------------------------*/ #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ diff --git a/radio/src/targets/nv14/backlight_driver.cpp b/radio/src/targets/nv14/backlight_driver.cpp index 8794e744e..9a154f549 100644 --- a/radio/src/targets/nv14/backlight_driver.cpp +++ b/radio/src/targets/nv14/backlight_driver.cpp @@ -24,6 +24,19 @@ #include "globals.h" +void backlightLowInit( void ) +{ + RCC_AHB1PeriphClockCmd(BACKLIGHT_RCC_AHB1Periph, ENABLE); + GPIO_InitTypeDef GPIO_InitStructure; + GPIO_InitStructure.GPIO_Pin = BACKLIGHT_GPIO_PIN; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; + GPIO_Init(BACKLIGHT_GPIO, &GPIO_InitStructure); + GPIO_WriteBit( BACKLIGHT_GPIO, BACKLIGHT_GPIO_PIN, Bit_RESET ); +} + void backlightInit() { // PIN init @@ -41,7 +54,7 @@ void backlightInit() BACKLIGHT_TIMER->PSC = BACKLIGHT_TIMER_FREQ / 1000000 - 1; // 10kHz (same as FrOS) BACKLIGHT_TIMER->CCMR1 = TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1PE; // PWM mode 1 BACKLIGHT_TIMER->CCER = TIM_CCER_CC1E | TIM_CCER_CC1NE; - BACKLIGHT_TIMER->CCR1 = 100; // 100% on init + BACKLIGHT_TIMER->CCR1 = 0; BACKLIGHT_TIMER->EGR = TIM_EGR_UG; BACKLIGHT_TIMER->CR1 |= TIM_CR1_CEN; // Counter enable BACKLIGHT_TIMER->BDTR |= TIM_BDTR_MOE; diff --git a/radio/src/targets/nv14/board.h b/radio/src/targets/nv14/board.h index 19c7736e5..3f1e5b6e0 100644 --- a/radio/src/targets/nv14/board.h +++ b/radio/src/targets/nv14/board.h @@ -430,6 +430,7 @@ void lcdOn(); #define BACKLIGHT_LEVEL_MIN 1 extern bool boardBacklightOn; +void backlightLowInit( void ); void backlightInit(); void backlightEnable(uint8_t dutyCycle); void backlightFullOn(); diff --git a/radio/src/targets/nv14/bootloader/boot_menu.cpp b/radio/src/targets/nv14/bootloader/boot_menu.cpp index 9e4646ef9..7a71f16de 100644 --- a/radio/src/targets/nv14/bootloader/boot_menu.cpp +++ b/radio/src/targets/nv14/bootloader/boot_menu.cpp @@ -68,6 +68,8 @@ static bool rfUsbAccess = false; void bootloaderInitScreen() { lcdInitDisplayDriver(); + backlightInit(); + backlightEnable(100); } static void bootloaderDrawTitle(const char* text)