diff --git a/radio/src/audio_arm.cpp b/radio/src/audio_arm.cpp index 84eb6d70f..7517d0991 100644 --- a/radio/src/audio_arm.cpp +++ b/radio/src/audio_arm.cpp @@ -496,10 +496,6 @@ void audioTask(void * pdata) } setSampleRate(AUDIO_SAMPLE_RATE); - - while (!sdMounted()) { - CoTickDelay(10); - } if (!unexpectedShutdown) { AUDIO_HELLO(); diff --git a/radio/src/audio_arm.h b/radio/src/audio_arm.h index fbc16aba9..9deba69d4 100644 --- a/radio/src/audio_arm.h +++ b/radio/src/audio_arm.h @@ -173,7 +173,7 @@ class AudioQueue { friend void audioTask(void* pdata); #if defined(SIMU_AUDIO) - friend void *audioThread(void *); + friend void * audioThread(void *); #endif #if defined(CLI) friend void printAudioVars(); @@ -231,7 +231,8 @@ class AudioQueue { return NULL; } - bool filledAtleast(int noBuffers) { + bool filledAtleast(int noBuffers) + { int count = 0; for(int n= 0; n 0) { diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index 3c4625d19..f1df068a3 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -161,7 +161,7 @@ // Telemetry #define TELEMETRY_RCC_AHB1Periph (RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA1) #define TELEMETRY_RCC_APB1Periph RCC_APB1Periph_USART2 -#define TELEMETRY_GPIO_DIR GPIOD +#define TELEMETRY_DIR_GPIO GPIOD #define TELEMETRY_DIR_GPIO_PIN GPIO_Pin_4 // PD.04 #define TELEMETRY_GPIO GPIOD #define TELEMETRY_TX_GPIO_PIN GPIO_Pin_5 // PD.05 diff --git a/radio/src/targets/horus/telemetry_driver.cpp b/radio/src/targets/horus/telemetry_driver.cpp index 359ef92b7..303dfbc44 100644 --- a/radio/src/targets/horus/telemetry_driver.cpp +++ b/radio/src/targets/horus/telemetry_driver.cpp @@ -52,8 +52,8 @@ void telemetryPortInit(uint32_t baudrate, int mode) GPIO_InitStructure.GPIO_Pin = TELEMETRY_DIR_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; - GPIO_Init(TELEMETRY_GPIO_DIR, &GPIO_InitStructure); - GPIO_ResetBits(TELEMETRY_GPIO_DIR, TELEMETRY_DIR_GPIO_PIN); + GPIO_Init(TELEMETRY_DIR_GPIO, &GPIO_InitStructure); + GPIO_ResetBits(TELEMETRY_DIR_GPIO, TELEMETRY_DIR_GPIO_PIN); USART_InitStructure.USART_BaudRate = baudrate; if (mode == TELEMETRY_SERIAL_8E2) { diff --git a/radio/src/targets/horus/trainer_driver.cpp b/radio/src/targets/horus/trainer_driver.cpp index 925c227b4..eb92c7902 100644 --- a/radio/src/targets/horus/trainer_driver.cpp +++ b/radio/src/targets/horus/trainer_driver.cpp @@ -78,7 +78,7 @@ void init_trainer_capture() GPIO_PinAFConfig(TRAINER_GPIO, TRAINER_GPIO_PinSource_IN, TRAINER_GPIO_AF); TRAINER_TIMER->ARR = 0xFFFF; - TRAINER_TIMER->PSC = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 2000000 - 1; // 0.5uS + TRAINER_TIMER->PSC = TRAINER_TIMER_FREQ / 2000000 - 1; // 0.5uS TRAINER_TIMER->CR2 = 0; TRAINER_TIMER->CCMR1 = TIM_CCMR1_IC1F_0 | TIM_CCMR1_IC1F_1 | TIM_CCMR1_CC1S_0; TRAINER_TIMER->CCER = TIM_CCER_CC1E; diff --git a/radio/src/targets/simu/simpgmspace.cpp b/radio/src/targets/simu/simpgmspace.cpp index b9148eeac..dbaf621c7 100644 --- a/radio/src/targets/simu/simpgmspace.cpp +++ b/radio/src/targets/simu/simpgmspace.cpp @@ -539,8 +539,6 @@ void * audioThread(void *) } SDL_PauseAudio(0); - referenceSystemAudioFiles(); - while (simuAudio.threadRunning) { audioQueue.wakeup(); sleep(1); @@ -1220,8 +1218,6 @@ void sdInit(void) // call sdGetFreeSectors() now because f_getfree() takes a long time first time it's called sdGetFreeSectors(); - referenceSystemAudioFiles(); - #if defined(LOG_TELEMETRY) f_open(&g_telemetryFile, LOGS_PATH "/telemetry.log", FA_OPEN_ALWAYS | FA_WRITE); if (f_size(&g_telemetryFile) > 0) { diff --git a/radio/src/targets/sky9x/diskio.cpp b/radio/src/targets/sky9x/diskio.cpp index 59c135b92..5694dd338 100644 --- a/radio/src/targets/sky9x/diskio.cpp +++ b/radio/src/targets/sky9x/diskio.cpp @@ -1001,7 +1001,6 @@ void sdMountPoll() case SD_ST_DATA: if (!usbPlugged() && f_mount(0, &g_FATFS_Obj) == FR_OK) { - referenceSystemAudioFiles(); Card_state = SD_ST_MOUNTED; } break; @@ -1071,8 +1070,6 @@ void sdInit() if (f_mount(&g_FATFS_Obj, "", 1) == FR_OK) { // call sdGetFreeSectors() now because f_getfree() takes a long time first time it's called sdGetFreeSectors(); - - referenceSystemAudioFiles(); Card_state = SD_ST_MOUNTED; } diff --git a/radio/src/targets/taranis/CMakeLists.txt b/radio/src/targets/taranis/CMakeLists.txt index 07ed5ab90..976b9841c 100644 --- a/radio/src/targets/taranis/CMakeLists.txt +++ b/radio/src/targets/taranis/CMakeLists.txt @@ -1,7 +1,6 @@ option(SHUTDOWN_CONFIRMATION "Shutdown confirmation" OFF) option(LCD_DUAL_BUFFER "Dual LCD Buffer" OFF) option(TARANIS_INTERNAL_PPM "Taranis internal module hack to output PPM" OFF) -add_definitions(-DUSB_NAME="FrSky Taranis") if(PCB STREQUAL X9E) option(STICKS "Sticks type" STANDARD) @@ -58,7 +57,7 @@ elseif(PCB STREQUAL X7D) add_definitions(-DEEPROM_VARIANT=0) set(GUI_DIR 128x64) set(FIRMWARE_DEPENDENCIES ${FIRMWARE_DEPENDENCIES} 9x_bitmaps) - set(LCD_DRIVER lcd_driver_spi2.cpp) + set(LCD_DRIVER lcd_driver_spi.cpp) endif() set(HSE_VALUE 12000000) diff --git a/radio/src/targets/taranis/diskio.cpp b/radio/src/targets/taranis/diskio.cpp index b5b9aadfc..4ebe33623 100644 --- a/radio/src/targets/taranis/diskio.cpp +++ b/radio/src/targets/taranis/diskio.cpp @@ -1003,8 +1003,6 @@ void sdInit(void) if (f_mount(&g_FATFS_Obj, "", 1) == FR_OK) { // call sdGetFreeSectors() now because f_getfree() takes a long time first time it's called sdGetFreeSectors(); - - referenceSystemAudioFiles(); #if defined(LOG_TELEMETRY) f_open(&g_telemetryFile, LOGS_PATH "/telemetry.log", FA_OPEN_ALWAYS | FA_WRITE); diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index 6b0e15889..d0f9fbdfe 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -423,7 +423,7 @@ // Telemetry #define TELEMETRY_RCC_AHB1Periph (RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA1) #define TELEMETRY_RCC_APB1Periph RCC_APB1Periph_USART2 -#define TELEMETRY_GPIO_DIR GPIOD +#define TELEMETRY_DIR_GPIO GPIOD #define TELEMETRY_DIR_GPIO_PIN GPIO_Pin_4 // PD.04 #define TELEMETRY_GPIO GPIOD #define TELEMETRY_TX_GPIO_PIN GPIO_Pin_5 // PD.05 diff --git a/radio/src/targets/taranis/lcd_driver_spi.cpp b/radio/src/targets/taranis/lcd_driver_spi.cpp index 8abdaa549..1a85f923b 100644 --- a/radio/src/targets/taranis/lcd_driver_spi.cpp +++ b/radio/src/targets/taranis/lcd_driver_spi.cpp @@ -51,8 +51,10 @@ void lcdWriteCommand(uint8_t Command_Byte) LCD_NCS_HIGH(); } -void lcdInitSpi() +void lcdHardwareInit() { + GPIO_InitTypeDef GPIO_InitStructure; + // APB1 clock / 2 = 133nS per clock LCD_SPI->CR1 = 0; // Clear any mode error LCD_SPI->CR1 = SPI_CR1_SSM | SPI_CR1_SSI | SPI_CR1_CPOL | SPI_CR1_CPHA; @@ -60,21 +62,6 @@ void lcdInitSpi() LCD_SPI->CR1 |= SPI_CR1_MSTR; // Make sure in case SSM/SSI needed to be set first LCD_SPI->CR1 |= SPI_CR1_SPE; - LDC_DMA_Stream->CR &= ~DMA_SxCR_EN; // Disable DMA - LCD_DMA->HIFCR = LCD_DMA_FLAGS; // Write ones to clear bits - LDC_DMA_Stream->CR = DMA_SxCR_PL_0 | DMA_SxCR_MINC | DMA_SxCR_DIR_0; - LDC_DMA_Stream->PAR = (uint32_t) &LCD_SPI->DR; - LDC_DMA_Stream->M0AR = (uint32_t)displayBuf; - LDC_DMA_Stream->FCR = 0x05; // DMA_SxFCR_DMDIS | DMA_SxFCR_FTH_0; - LDC_DMA_Stream->NDTR = LCD_W*LCD_H/8*4; - - NVIC_EnableIRQ(LCD_DMA_Stream_IRQn); -} - -void lcdHardwareInit() -{ - GPIO_InitTypeDef GPIO_InitStructure; - LCD_NCS_HIGH(); GPIO_InitStructure.GPIO_Pin = LCD_NCS_GPIO_PIN; @@ -97,6 +84,16 @@ void lcdHardwareInit() GPIO_PinAFConfig(LCD_SPI_GPIO, LCD_MOSI_GPIO_PinSource, LCD_GPIO_AF); GPIO_PinAFConfig(LCD_SPI_GPIO, LCD_CLK_GPIO_PinSource, LCD_GPIO_AF); + + LDC_DMA_Stream->CR &= ~DMA_SxCR_EN; // Disable DMA + LCD_DMA->HIFCR = LCD_DMA_FLAGS; // Write ones to clear bits + LDC_DMA_Stream->CR = DMA_SxCR_PL_0 | DMA_SxCR_MINC | DMA_SxCR_DIR_0; + LDC_DMA_Stream->PAR = (uint32_t)&LCD_SPI->DR; + LDC_DMA_Stream->M0AR = (uint32_t)displayBuf; + LDC_DMA_Stream->FCR = 0x05; // DMA_SxFCR_DMDIS | DMA_SxFCR_FTH_0; + LDC_DMA_Stream->NDTR = LCD_W*LCD_H/8*4; + + NVIC_EnableIRQ(LCD_DMA_Stream_IRQn); } void lcdStart() @@ -246,8 +243,6 @@ void lcdInitFinish() { lcdInitFinished = true; - lcdInitSpi(); - /* LCD needs longer time to initialize in low temperatures. The data-sheet mentions a time of at least 150 ms. The delay of 1300 ms was obtained diff --git a/radio/src/targets/taranis/telemetry_driver.cpp b/radio/src/targets/taranis/telemetry_driver.cpp index 30a850a82..7d36cf213 100644 --- a/radio/src/targets/taranis/telemetry_driver.cpp +++ b/radio/src/targets/taranis/telemetry_driver.cpp @@ -23,7 +23,8 @@ Fifo telemetryFifo; uint32_t telemetryErrors = 0; -void telemetryPortInit(uint32_t baudrate, int mode) { +void telemetryPortInit(uint32_t baudrate, int mode) +{ if (baudrate == 0) { USART_DeInit(TELEMETRY_USART); return; @@ -52,15 +53,16 @@ void telemetryPortInit(uint32_t baudrate, int mode) { GPIO_InitStructure.GPIO_Pin = TELEMETRY_DIR_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; - GPIO_Init(TELEMETRY_GPIO_DIR, &GPIO_InitStructure); - GPIO_ResetBits(TELEMETRY_GPIO_DIR, TELEMETRY_DIR_GPIO_PIN); + GPIO_Init(TELEMETRY_DIR_GPIO, &GPIO_InitStructure); + GPIO_ResetBits(TELEMETRY_DIR_GPIO, TELEMETRY_DIR_GPIO_PIN); USART_InitStructure.USART_BaudRate = baudrate; if (mode == TELEMETRY_SERIAL_8E2) { USART_InitStructure.USART_WordLength = USART_WordLength_9b; USART_InitStructure.USART_StopBits = USART_StopBits_2; USART_InitStructure.USART_Parity = USART_Parity_Even; - } else { + } + else { USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; @@ -76,13 +78,13 @@ void telemetryPortInit(uint32_t baudrate, int mode) { void telemetryPortSetDirectionOutput() { - TELEMETRY_GPIO_DIR->BSRRL = TELEMETRY_DIR_GPIO_PIN; // output enable + TELEMETRY_DIR_GPIO->BSRRL = TELEMETRY_DIR_GPIO_PIN; // output enable TELEMETRY_USART->CR1 &= ~USART_CR1_RE; // turn off receiver } void telemetryPortSetDirectionInput() { - TELEMETRY_GPIO_DIR->BSRRH = TELEMETRY_DIR_GPIO_PIN; // output disable + TELEMETRY_DIR_GPIO->BSRRH = TELEMETRY_DIR_GPIO_PIN; // output disable TELEMETRY_USART->CR1 |= USART_CR1_RE; // turn on receiver } @@ -130,7 +132,6 @@ extern "C" void TELEMETRY_DMA_TX_IRQHandler(void) } } - #define USART_FLAG_ERRORS (USART_FLAG_ORE | USART_FLAG_NE | USART_FLAG_FE | USART_FLAG_PE) extern "C" void TELEMETRY_USART_IRQHandler(void) {