1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-15 20:35:33 +03:00

CC3D - Add support for battery voltage monitoring on S5_IN.

See docs for further details.
This commit is contained in:
Dominic Clifton 2014-09-19 21:16:40 +01:00
parent f591732aa9
commit 41ff2e8d0e
6 changed files with 83 additions and 8 deletions

View file

@ -33,22 +33,24 @@
// Driver for STM32F103CB onboard ADC
//
// Naze32
// Battery Voltage (VBAT) is connected to PA4 (ADC1_IN4) with 10k:1k divider
// RSSI ADC uses CH2 (PA1, ADC1_IN1)
// Current ADC uses CH8 (PB1, ADC1_IN9)
//
// NAZE rev.5 hardware has PA5 (ADC1_IN5) on breakout pad on bottom of board
//
// CC3D Only one ADC channel supported currently, for battery on S5_IN/PA0
extern adc_config_t adcConfig[ADC_CHANNEL_COUNT];
extern volatile uint16_t adcValues[ADC_CHANNEL_COUNT];
#ifdef CC3D
void adcInit(drv_adc_config_t *init) {
UNUSED(init);
}
#else
void adcInit(drv_adc_config_t *init)
{
#ifdef CC3D
UNUSED(init);
#endif
ADC_InitTypeDef adc;
DMA_InitTypeDef dma;
GPIO_InitTypeDef GPIO_InitStructure;
@ -59,10 +61,19 @@ void adcInit(drv_adc_config_t *init)
memset(&adcConfig, 0, sizeof(adcConfig));
GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
#ifdef CC3D
UNUSED(init);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
adcConfig[ADC_BATTERY].adcChannel = ADC_Channel_0;
adcConfig[ADC_BATTERY].dmaIndex = configuredAdcChannels++;
adcConfig[ADC_BATTERY].enabled = true;
adcConfig[ADC_BATTERY].sampleTime = ADC_SampleTime_239Cycles5;
GPIO_Init(GPIOA, &GPIO_InitStructure);
#else
// configure always-present battery index (ADC4)
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
adcConfig[ADC_BATTERY].adcChannel = ADC_Channel_4;
adcConfig[ADC_BATTERY].dmaIndex = configuredAdcChannels++;
adcConfig[ADC_BATTERY].enabled = true;
@ -109,6 +120,7 @@ void adcInit(drv_adc_config_t *init)
adcConfig[ADC_CURRENT].enabled = true;
adcConfig[ADC_CURRENT].sampleTime = ADC_SampleTime_239Cycles5;
}
#endif // !CC3D
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
@ -156,4 +168,3 @@ void adcInit(drv_adc_config_t *init)
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
}
#endif