From 26469b862776a1876f6c88cec842c419eab041fd Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sun, 10 Jan 2016 13:26:34 +0100 Subject: [PATCH] [Horus] Cosmetics --- radio/src/targets/horus/audio_driver.cpp | 74 +++++++++++------------- radio/src/targets/horus/board_horus.cpp | 5 +- radio/src/targets/horus/hal.h | 4 ++ 3 files changed, 40 insertions(+), 43 deletions(-) diff --git a/radio/src/targets/horus/audio_driver.cpp b/radio/src/targets/horus/audio_driver.cpp index 2031e75b7..d9bb23e0a 100644 --- a/radio/src/targets/horus/audio_driver.cpp +++ b/radio/src/targets/horus/audio_driver.cpp @@ -1,23 +1,23 @@ -/* - * Copyright (C) OpenTX - * - * Based on code named - * th9x - http://code.google.com/p/th9x - * er9x - http://code.google.com/p/er9x - * gruvin9x - http://code.google.com/p/gruvin9x - * - * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - +/* + * Copyright (C) OpenTX + * + * Based on code named + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + #include "../../opentx.h" const int8_t volumeScale[VOLUME_LEVEL_MAX+1] = @@ -33,23 +33,20 @@ void setSampleRate(uint32_t frequency) { register uint32_t timer = (PERI1_FREQUENCY * TIMER_MULT_APB1) / frequency - 1 ; // MCK/8 and 100 000 Hz - TIM6->CR1 &= ~TIM_CR1_CEN ; - TIM6->CNT = 0 ; - TIM6->ARR = limit(2, timer, 65535) ; - TIM6->CR1 |= TIM_CR1_CEN ; + AUDIO_TIMER->CR1 &= ~TIM_CR1_CEN ; + AUDIO_TIMER->CNT = 0 ; + AUDIO_TIMER->ARR = limit(2, timer, 65535) ; + AUDIO_TIMER->CR1 |= TIM_CR1_CEN ; } // Start TIMER6 at 100000Hz, used for DAC trigger void dacTimerInit() { - // Now for timer 6 - RCC->APB1ENR |= RCC_APB1ENR_TIM6EN ; // Enable clock - - TIM6->PSC = 0 ; // Max speed - TIM6->ARR = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 100000 - 1 ; // 10 uS, 100 kHz - TIM6->CR2 = 0 ; - TIM6->CR2 = 0x20 ; - TIM6->CR1 = TIM_CR1_CEN ; + AUDIO_TIMER->PSC = 0 ; // Max speed + AUDIO_TIMER->ARR = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 100000 - 1 ; // 10 uS, 100 kHz + AUDIO_TIMER->CR2 = 0 ; + AUDIO_TIMER->CR2 = 0x20 ; + AUDIO_TIMER->CR1 = TIM_CR1_CEN ; } // Configure DAC0 (or DAC1 for REVA) @@ -59,10 +56,7 @@ void dacInit() { dacTimerInit(); - RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN ; // Enable portA clock configure_pins( GPIO_Pin_4, PIN_ANALOG | PIN_PORTA ) ; - RCC->APB1ENR |= RCC_APB1ENR_DACEN ; // Enable clock - RCC->AHB1ENR |= RCC_AHB1ENR_DMA1EN ; // Enable DMA1 clock // Chan 7, 16-bit wide, Medium priority, memory increments DMA1_Stream5->CR &= ~DMA_SxCR_EN ; // Disable DMA @@ -77,13 +71,13 @@ void dacInit() DAC->DHR12R1 = 2010 ; DAC->SR = DAC_SR_DMAUDR1 ; // Write 1 to clear flag DAC->CR = DAC_CR_TEN1 | DAC_CR_EN1 ; // Enable DAC - NVIC_EnableIRQ(TIM6_DAC_IRQn); // TODO needed? - NVIC_SetPriority(TIM6_DAC_IRQn, 7); + NVIC_EnableIRQ(AUDIO_TIMER_DAC_IRQn); // TODO needed? + NVIC_SetPriority(AUDIO_TIMER_DAC_IRQn, 7); NVIC_EnableIRQ(DMA1_Stream5_IRQn); NVIC_SetPriority(DMA1_Stream5_IRQn, 7); } -bool dacQueue(AudioBuffer *buffer) +bool dacQueue(AudioBuffer * buffer) { if (dacIdle) { dacIdle = false; @@ -123,9 +117,9 @@ void audioInit() void audioEnd() { DAC->CR = 0 ; - TIM6->CR1 = 0 ; + AUDIO_TIMER->CR1 = 0 ; // Also need to turn off any possible interrupts - NVIC_DisableIRQ(TIM6_DAC_IRQn) ; + NVIC_DisableIRQ(AUDIO_TIMER_DAC_IRQn) ; NVIC_DisableIRQ(DMA1_Stream5_IRQn) ; } diff --git a/radio/src/targets/horus/board_horus.cpp b/radio/src/targets/horus/board_horus.cpp index 780648be9..591cd3da8 100644 --- a/radio/src/targets/horus/board_horus.cpp +++ b/radio/src/targets/horus/board_horus.cpp @@ -77,7 +77,6 @@ void interrupt5ms() ++pre_scale; if (pre_scale == 5 || pre_scale == 10) { - AUDIO_HEARTBEAT(); #if defined(HAPTIC) HAPTIC_HEARTBEAT(); @@ -125,8 +124,8 @@ void pinCheck(GPIO_TypeDef * gpio, uint32_t pin, uint32_t RCC_AHB1Periph) void boardInit() { - RCC_AHB1PeriphClockCmd(PWR_RCC_AHB1Periph | LCD_RCC_AHB1Periph | KEYS_RCC_AHB1Periph_GPIO | ADC_RCC_AHB1Periph | I2C_RCC_AHB1Periph | SERIAL_RCC_AHB1Periph | TELEMETRY_RCC_AHB1Periph | HAPTIC_RCC_AHB1Periph, ENABLE); - RCC_APB1PeriphClockCmd(INTERRUPT_5MS_APB1Periph | TIMER_2MHz_APB1Periph | I2C_RCC_APB1Periph | SERIAL_RCC_APB1Periph | TELEMETRY_RCC_APB1Periph, ENABLE); + RCC_AHB1PeriphClockCmd(PWR_RCC_AHB1Periph | LCD_RCC_AHB1Periph | KEYS_RCC_AHB1Periph_GPIO | ADC_RCC_AHB1Periph | I2C_RCC_AHB1Periph | SERIAL_RCC_AHB1Periph | TELEMETRY_RCC_AHB1Periph | AUDIO_RCC_AHB1Periph | HAPTIC_RCC_AHB1Periph, ENABLE); + RCC_APB1PeriphClockCmd(INTERRUPT_5MS_APB1Periph | TIMER_2MHz_APB1Periph | I2C_RCC_APB1Periph | SERIAL_RCC_APB1Periph | TELEMETRY_RCC_APB1Periph | AUDIO_RCC_APB1Periph, ENABLE); RCC_APB2PeriphClockCmd(LCD_RCC_APB2Periph | ADC_RCC_APB2Periph | HAPTIC_RCC_APB2Periph, ENABLE); pwrInit(); diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index 82e461f03..df7a6a043 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -207,6 +207,10 @@ #define SD_SDIO_TRANSFER_CLK_DIV SD_SDIO_CLK_DIV(24000000) // Audio +#define AUDIO_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1ENR_DMA1EN) +#define AUDIO_RCC_APB1Periph (RCC_APB1ENR_TIM6EN | RCC_APB1ENR_DACEN) +#define AUDIO_TIMER TIM6 +#define AUDIO_TIMER_DAC_IRQn TIM6_DAC_IRQn // I2C Bus: CAT5137 #define I2C_RCC_AHB1Periph RCC_AHB1Periph_GPIOB