From b19e840f7b13221eaa76912fe44027a19cbed772 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Mon, 20 Jan 2025 11:27:25 +0800 Subject: [PATCH] Fixed audio after rebase --- radio/src/targets/pl18/board.cpp | 47 +++++++++++++++++++++++++------- radio/src/targets/pl18/board.h | 8 ++++-- radio/src/targets/pl18/hal.h | 23 ++++++---------- 3 files changed, 51 insertions(+), 27 deletions(-) diff --git a/radio/src/targets/pl18/board.cpp b/radio/src/targets/pl18/board.cpp index 23f148d645d..584ca873b68 100644 --- a/radio/src/targets/pl18/board.cpp +++ b/radio/src/targets/pl18/board.cpp @@ -22,6 +22,7 @@ #include "stm32_adc.h" #include "stm32_gpio.h" #include "stm32_ws2812.h" +#include "stm32_spi.h" #include "hal/adc_driver.h" #include "hal/trainer_driver.h" @@ -41,6 +42,10 @@ #include "touch.h" #include "debug.h" +#if defined(AUDIO_SPI) + #include "vs1053b.h" +#endif + #if defined(FLYSKY_GIMBAL) #include "flysky_gimbal_driver.h" #endif @@ -84,6 +89,29 @@ extern "C" void flushFTL(); } #endif +#if defined(AUDIO_SPI) +stm32_spi_t audioSpi = +{ + .SPIx = AUDIO_SPI, + .SCK = AUDIO_SPI_SCK_GPIO, + .MISO = AUDIO_SPI_MISO_GPIO, + .MOSI = AUDIO_SPI_MOSI_GPIO, + .CS = AUDIO_CS_GPIO, +}; + +vs1053b_t audioConfig = +{ + .spi = &audioSpi, + .XDCS = AUDIO_XDCS_GPIO, + .DREQ = AUDIO_DREQ_GPIO, + .RST = AUDIO_RST_GPIO, + .MUTE = AUDIO_MUTE_GPIO, + .flags = AUDIO_MUTE_POL, + .mute_delay_ms = AUDIO_MUTE_DELAY, + .unmute_delay_ms = AUDIO_UNMUTE_DELAY, +}; +#endif + void delay_self(int count) { for (int i = 50000; i > 0; i--) @@ -160,6 +188,11 @@ void boardInit() pwrInit(); boardInitModulePorts(); +#if defined(AUDIO_SPI) + gpio_init(AUDIO_RST_GPIO, GPIO_OUT, GPIO_PIN_SPEED_MEDIUM); + gpio_init(AUDIO_MUTE_GPIO, GPIO_OUT, GPIO_PIN_SPEED_MEDIUM); +#endif + board_trainer_init(); battery_charge_init(); @@ -215,7 +248,11 @@ void boardInit() #if defined(RADIO_NB4P) disableVoiceChip(); #endif +#if defined(AUDIO_SPI) + vs1053b_init(&audioConfig); +#else audioInit(); +#endif monitorInit(); adcInit(&_adc_driver); hapticInit(); @@ -226,16 +263,6 @@ void boardInit() #endif lcdSetInitalFrameBuffer(lcdFront->getData()); - -#if defined(DEBUG) -/* DBGMCU_APB1PeriphConfig( - DBGMCU_IWDG_STOP | DBGMCU_TIM1_STOP | DBGMCU_TIM2_STOP | - DBGMCU_TIM3_STOP | DBGMCU_TIM4_STOP | DBGMCU_TIM5_STOP | - DBGMCU_TIM6_STOP | DBGMCU_TIM7_STOP | DBGMCU_TIM8_STOP | - DBGMCU_TIM9_STOP | DBGMCU_TIM10_STOP | DBGMCU_TIM11_STOP | - DBGMCU_TIM12_STOP | DBGMCU_TIM13_STOP | DBGMCU_TIM14_STOP, - ENABLE);*/ -#endif } extern void rtcDisableBackupReg(); diff --git a/radio/src/targets/pl18/board.h b/radio/src/targets/pl18/board.h index fc8c6ac0bcc..b4cd9c0ab7d 100644 --- a/radio/src/targets/pl18/board.h +++ b/radio/src/targets/pl18/board.h @@ -65,6 +65,8 @@ void getCPUUniqueID(char * s); PCBREV_EL18 = 1, }; + #define HAS_HARDWARE_OPTIONS + typedef struct { uint8_t pcbrev; } HardwareOptions; @@ -250,8 +252,10 @@ bool isBacklightEnabled(); #define DISABLE_UCHARGER() #endif -// Audio driver -void audioInit(); +#if !defined(AUDIO_SPI) + // DAC Audio driver + void audioInit(); +#endif // Telemetry driver #define INTMODULE_FIFO_SIZE 512 diff --git a/radio/src/targets/pl18/hal.h b/radio/src/targets/pl18/hal.h index ae31b8f6803..783b7a5d29c 100644 --- a/radio/src/targets/pl18/hal.h +++ b/radio/src/targets/pl18/hal.h @@ -672,22 +672,15 @@ // Audio #if defined(RADIO_NV14_FAMILY) - #define AUDIO_XDCS_GPIO GPIOH - #define AUDIO_XDCS_GPIO_PIN LL_GPIO_PIN_14 // PH.14 - #define AUDIO_CS_GPIO GPIOH - #define AUDIO_CS_GPIO_PIN LL_GPIO_PIN_13 // PH.13 - #define AUDIO_DREQ_GPIO GPIOH - #define AUDIO_DREQ_GPIO_PIN LL_GPIO_PIN_15 // PH.15 - #define AUDIO_RST_GPIO GPIOD - #define AUDIO_RST_GPIO_PIN LL_GPIO_PIN_4 // PD.04 + #define AUDIO_XDCS_GPIO GPIO_PIN(GPIOH, 14) // PH.14 + #define AUDIO_CS_GPIO GPIO_PIN(GPIOH, 13) // PH.13 + #define AUDIO_DREQ_GPIO GPIO_PIN(GPIOH, 15) // PH.15 + #define AUDIO_RST_GPIO GPIO_PIN(GPIOD, 4) // PD.04 #define AUDIO_SPI SPI1 #define AUDIO_SPI_GPIO_AF LL_GPIO_AF_5 - #define AUDIO_SPI_SCK_GPIO GPIOB - #define AUDIO_SPI_SCK_GPIO_PIN LL_GPIO_PIN_3 // PB.03 - #define AUDIO_SPI_MISO_GPIO GPIOB - #define AUDIO_SPI_MISO_GPIO_PIN LL_GPIO_PIN_4 // PB.04 - #define AUDIO_SPI_MOSI_GPIO GPIOB - #define AUDIO_SPI_MOSI_GPIO_PIN LL_GPIO_PIN_5 // PB.05 + #define AUDIO_SPI_SCK_GPIO GPIO_PIN(GPIOB, 3) // PB.03 + #define AUDIO_SPI_MISO_GPIO GPIO_PIN(GPIOB, 4) // PB.04 + #define AUDIO_SPI_MOSI_GPIO GPIO_PIN(GPIOB, 5) // PB.05 #else #define AUDIO_RCC_APB1Periph (RCC_APB1Periph_TIM6 | RCC_APB1Periph_DAC) #define AUDIO_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_DMA1) @@ -705,7 +698,7 @@ #define AUDIO_MUTE_GPIO GPIO_PIN(GPIOH, 8) // PH.08 audio amp control pin #define AUDIO_UNMUTE_DELAY 120 // ms #define AUDIO_MUTE_DELAY 500 // ms - #define INVERTED_MUTE_PIN + #define AUDIO_MUTE_POL VS1053B_MUTE_INVERTED #elif defined(RADIO_NB4P) #define AUDIO_MUTE_GPIO GPIO_PIN(GPIOH, 9) // PH.09 audio amp control pin #define AUDIO_UNMUTE_DELAY 120 // ms