From 5d4f7529ed29255ee274b5dc671ea384f49611a7 Mon Sep 17 00:00:00 2001 From: Krzysiek Egzmont Date: Sat, 28 Oct 2023 15:35:27 +0200 Subject: [PATCH] Refactor --- board.c | 26 ++------------------------ driver/backlight.c | 28 ++++++++++++++++++++++++++++ driver/backlight.h | 1 + 3 files changed, 31 insertions(+), 24 deletions(-) diff --git a/board.c b/board.c index 0b47c9d..f4b0892 100644 --- a/board.c +++ b/board.c @@ -23,11 +23,10 @@ #include "board.h" #include "bsp/dp32g030/gpio.h" #include "bsp/dp32g030/portcon.h" -#include "bsp/dp32g030/pwmplus.h" #include "bsp/dp32g030/saradc.h" #include "bsp/dp32g030/syscon.h" #include "driver/adc.h" -//#include "driver/backlight.h" +#include "driver/backlight.h" #ifdef ENABLE_FMRADIO #include "driver/bk1080.h" #endif @@ -182,14 +181,10 @@ void BOARD_PORTCON_Init(void) // PORT B pin selection PORTCON_PORTB_SEL0 &= ~(0 - // Back light - | PORTCON_PORTB_SEL0_B6_MASK // SPI0 SSN | PORTCON_PORTB_SEL0_B7_MASK ); PORTCON_PORTB_SEL0 |= 0 - // Back light PWM - | PORTCON_PORTB_SEL0_B6_BITS_PWMP0_CH0 // SPI0 SSN | PORTCON_PORTB_SEL0_B7_BITS_SPI0_SSN ; @@ -470,23 +465,6 @@ void BOARD_PORTCON_Init(void) ; } -static void BacklightPWM_Init() -{ - // 48MHz / 94 / 1024 ~ 500Hz - PWM_PLUS0_CLKSRC |= ((94) << 16); - PWM_PLUS0_PERIOD = 1023; - - PWM_PLUS0_GEN = - PWMPLUS_GEN_CH0_OE_BITS_ENABLE | - PWMPLUS_GEN_CH0_OUTINV_BITS_ENABLE | - 0; - - PWM_PLUS0_CFG = - PWMPLUS_CFG_CNT_REP_BITS_ENABLE | - PWMPLUS_CFG_COUNTER_EN_BITS_ENABLE | - 0; -} - void BOARD_ADC_Init(void) { ADC_Config_t Config; @@ -524,7 +502,7 @@ void BOARD_Init(void) { BOARD_PORTCON_Init(); BOARD_GPIO_Init(); - BacklightPWM_Init(); + BACKLIGHT_InitHardware(); BOARD_ADC_Init(); ST7565_Init(true); #ifdef ENABLE_FMRADIO diff --git a/driver/backlight.c b/driver/backlight.c index a3e5d1c..a60cbd3 100644 --- a/driver/backlight.c +++ b/driver/backlight.c @@ -17,6 +17,7 @@ #include "backlight.h" #include "bsp/dp32g030/gpio.h" #include "bsp/dp32g030/pwmplus.h" +#include "bsp/dp32g030/portcon.h" #include "driver/gpio.h" #include "settings.h" @@ -24,6 +25,33 @@ uint16_t gBacklightCountdown = 0; bool backlightOn; +void BACKLIGHT_InitHardware() +{ + // 48MHz / 94 / 1024 ~ 500Hz + const uint32_t PWM_FREQUENCY_HZ = 500; + PWM_PLUS0_CLKSRC |= ((48000000 / 1024 / PWM_FREQUENCY_HZ) << 16); + PWM_PLUS0_PERIOD = 1023; + + PORTCON_PORTB_SEL0 &= ~(0 + // Back light + | PORTCON_PORTB_SEL0_B6_MASK + ); + PORTCON_PORTB_SEL0 |= 0 + // Back light PWM + | PORTCON_PORTB_SEL0_B6_BITS_PWMP0_CH0 + ; + + PWM_PLUS0_GEN = + PWMPLUS_GEN_CH0_OE_BITS_ENABLE | + PWMPLUS_GEN_CH0_OUTINV_BITS_ENABLE | + 0; + + PWM_PLUS0_CFG = + PWMPLUS_CFG_CNT_REP_BITS_ENABLE | + PWMPLUS_CFG_COUNTER_EN_BITS_ENABLE | + 0; +} + void BACKLIGHT_TurnOn(void) { if (gEeprom.BACKLIGHT_TIME != 0) { diff --git a/driver/backlight.h b/driver/backlight.h index c442537..303e611 100644 --- a/driver/backlight.h +++ b/driver/backlight.h @@ -23,6 +23,7 @@ extern uint16_t gBacklightCountdown; extern uint8_t gBacklightBrightness; +void BACKLIGHT_InitHardware(); void BACKLIGHT_TurnOn(); void BACKLIGHT_TurnOff(); bool BACKLIGHT_IsOn();