mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-24 00:35:39 +03:00
Remove need to specify ADC Channel (only 1 per pin).
This commit is contained in:
parent
7e6fb8db65
commit
71353066b8
37 changed files with 160 additions and 294 deletions
|
@ -23,6 +23,7 @@
|
|||
#include "system.h"
|
||||
|
||||
#include "io.h"
|
||||
#include "io_impl.h"
|
||||
#include "rcc.h"
|
||||
|
||||
#include "sensors/sensors.h" // FIXME dependency into the main code
|
||||
|
@ -38,8 +39,38 @@
|
|||
#endif
|
||||
|
||||
const adcDevice_t adcHardware[] = {
|
||||
{ .ADCx = ADC1, .rccADC = RCC_APB2(ADC1), .rccDMA = RCC_AHB1(DMA2), .DMAy_Streamx = DMA2_Stream4 },
|
||||
//{ .ADCx = ADC2, .rccADC = RCC_APB2(ADC2), .rccDMA = RCC_AHB1(DMA2), .DMAy_Streamx = DMA2_Stream1 }
|
||||
{ .ADCx = ADC1, .rccADC = RCC_APB2(ADC1), .rccDMA = RCC_AHB1(DMA2), .DMAy_Streamx = DMA2_Stream4, .channel = DMA_Channel_0 },
|
||||
//{ .ADCx = ADC2, .rccADC = RCC_APB2(ADC2), .rccDMA = RCC_AHB1(DMA2), .DMAy_Streamx = DMA2_Stream1, .channel = DMA_Channel_0 }
|
||||
};
|
||||
|
||||
/* note these could be packed up for saving space */
|
||||
const adcPinMap_t adcPinMap[] = {
|
||||
/*
|
||||
{ .pin = DEFIO_TAG_E__PF3, .channel = ADC_Channel_9 },
|
||||
{ .pin = DEFIO_TAG_E__PF4, .channel = ADC_Channel_14 },
|
||||
{ .pin = DEFIO_TAG_E__PF5, .channel = ADC_Channel_15 },
|
||||
{ .pin = DEFIO_TAG_E__PF6, .channel = ADC_Channel_4 },
|
||||
{ .pin = DEFIO_TAG_E__PF7, .channel = ADC_Channel_5 },
|
||||
{ .pin = DEFIO_TAG_E__PF8, .channel = ADC_Channel_6 },
|
||||
{ .pin = DEFIO_TAG_E__PF9, .channel = ADC_Channel_7 },
|
||||
{ .pin = DEFIO_TAG_E__PF10, .channel = ADC_Channel_8 },
|
||||
*/
|
||||
{ .pin = DEFIO_TAG_E__PC0, .channel = ADC_Channel_10 },
|
||||
{ .pin = DEFIO_TAG_E__PC1, .channel = ADC_Channel_11 },
|
||||
{ .pin = DEFIO_TAG_E__PC2, .channel = ADC_Channel_12 },
|
||||
{ .pin = DEFIO_TAG_E__PC3, .channel = ADC_Channel_13 },
|
||||
{ .pin = DEFIO_TAG_E__PC4, .channel = ADC_Channel_14 },
|
||||
{ .pin = DEFIO_TAG_E__PC5, .channel = ADC_Channel_15 },
|
||||
{ .pin = DEFIO_TAG_E__PB0, .channel = ADC_Channel_8 },
|
||||
{ .pin = DEFIO_TAG_E__PB1, .channel = ADC_Channel_9 },
|
||||
{ .pin = DEFIO_TAG_E__PA0, .channel = ADC_Channel_0 },
|
||||
{ .pin = DEFIO_TAG_E__PA1, .channel = ADC_Channel_1 },
|
||||
{ .pin = DEFIO_TAG_E__PA2, .channel = ADC_Channel_2 },
|
||||
{ .pin = DEFIO_TAG_E__PA3, .channel = ADC_Channel_3 },
|
||||
{ .pin = DEFIO_TAG_E__PA4, .channel = ADC_Channel_4 },
|
||||
{ .pin = DEFIO_TAG_E__PA5, .channel = ADC_Channel_5 },
|
||||
{ .pin = DEFIO_TAG_E__PA6, .channel = ADC_Channel_6 },
|
||||
{ .pin = DEFIO_TAG_E__PA7, .channel = ADC_Channel_7 },
|
||||
};
|
||||
|
||||
ADCDevice adcDeviceByInstance(ADC_TypeDef *instance)
|
||||
|
@ -47,11 +78,12 @@ ADCDevice adcDeviceByInstance(ADC_TypeDef *instance)
|
|||
if (instance == ADC1)
|
||||
return ADCDEV_1;
|
||||
/*
|
||||
if (instance == ADC2)
|
||||
if (instance == ADC2) // TODO add ADC2 and 3
|
||||
return ADCDEV_2;
|
||||
*/
|
||||
return ADCINVALID;
|
||||
}
|
||||
|
||||
void adcInit(drv_adc_config_t *init)
|
||||
{
|
||||
ADC_InitTypeDef ADC_InitStructure;
|
||||
|
@ -70,7 +102,7 @@ void adcInit(drv_adc_config_t *init)
|
|||
if (init->enableVBat) {
|
||||
IOInit(IOGetByTag(IO_TAG(VBAT_ADC_PIN)), OWNER_SYSTEM, RESOURCE_ADC);
|
||||
IOConfigGPIO(IOGetByTag(IO_TAG(VBAT_ADC_PIN)), IO_CONFIG(GPIO_Mode_AN, 0, GPIO_OType_OD, GPIO_PuPd_NOPULL));
|
||||
adcConfig[ADC_BATTERY].adcChannel = VBAT_ADC_CHANNEL;
|
||||
adcConfig[ADC_BATTERY].adcChannel = adcChannelByPin(IO_TAG(VBAT_ADC_PIN)); //VBAT_ADC_CHANNEL;
|
||||
adcConfig[ADC_BATTERY].dmaIndex = configuredAdcChannels++;
|
||||
adcConfig[ADC_BATTERY].enabled = true;
|
||||
adcConfig[ADC_BATTERY].sampleTime = ADC_SampleTime_480Cycles;
|
||||
|
@ -81,7 +113,7 @@ void adcInit(drv_adc_config_t *init)
|
|||
if (init->enableExternal1) {
|
||||
IOInit(IOGetByTag(IO_TAG(EXTERNAL1_ADC_PIN)), OWNER_SYSTEM, RESOURCE_ADC);
|
||||
IOConfigGPIO(IOGetByTag(IO_TAG(EXTERNAL1_ADC_PIN)), IO_CONFIG(GPIO_Mode_AN, 0, GPIO_OType_OD, GPIO_PuPd_NOPULL));
|
||||
adcConfig[ADC_EXTERNAL1].adcChannel = EXTERNAL1_ADC_CHANNEL;
|
||||
adcConfig[ADC_EXTERNAL1].adcChannel = adcChannelByPin(IO_TAG(EXTERNAL1_ADC_PIN)); //EXTERNAL1_ADC_CHANNEL;
|
||||
adcConfig[ADC_EXTERNAL1].dmaIndex = configuredAdcChannels++;
|
||||
adcConfig[ADC_EXTERNAL1].enabled = true;
|
||||
adcConfig[ADC_EXTERNAL1].sampleTime = ADC_SampleTime_480Cycles;
|
||||
|
@ -92,7 +124,7 @@ void adcInit(drv_adc_config_t *init)
|
|||
if (init->enableRSSI) {
|
||||
IOInit(IOGetByTag(IO_TAG(RSSI_ADC_PIN)), OWNER_SYSTEM, RESOURCE_ADC);
|
||||
IOConfigGPIO(IOGetByTag(IO_TAG(RSSI_ADC_PIN)), IO_CONFIG(GPIO_Mode_AN, 0, GPIO_OType_OD, GPIO_PuPd_NOPULL));
|
||||
adcConfig[ADC_RSSI].adcChannel = RSSI_ADC_CHANNEL;
|
||||
adcConfig[ADC_RSSI].adcChannel = adcChannelByPin(IO_TAG(RSSI_ADC_PIN)); //RSSI_ADC_CHANNEL;
|
||||
adcConfig[ADC_RSSI].dmaIndex = configuredAdcChannels++;
|
||||
adcConfig[ADC_RSSI].enabled = true;
|
||||
adcConfig[ADC_RSSI].sampleTime = ADC_SampleTime_480Cycles;
|
||||
|
@ -103,7 +135,7 @@ void adcInit(drv_adc_config_t *init)
|
|||
if (init->enableCurrentMeter) {
|
||||
IOInit(IOGetByTag(IO_TAG(CURRENT_METER_ADC_PIN)), OWNER_SYSTEM, RESOURCE_ADC);
|
||||
IOConfigGPIO(IOGetByTag(IO_TAG(CURRENT_METER_ADC_PIN)), IO_CONFIG(GPIO_Mode_AN, 0, GPIO_OType_OD, GPIO_PuPd_NOPULL));
|
||||
adcConfig[ADC_CURRENT].adcChannel = CURRENT_METER_ADC_CHANNEL;
|
||||
adcConfig[ADC_CURRENT].adcChannel = adcChannelByPin(IO_TAG(CURRENT_METER_ADC_PIN)); //CURRENT_METER_ADC_CHANNEL;
|
||||
adcConfig[ADC_CURRENT].dmaIndex = configuredAdcChannels++;
|
||||
adcConfig[ADC_CURRENT].enabled = true;
|
||||
adcConfig[ADC_CURRENT].sampleTime = ADC_SampleTime_480Cycles;
|
||||
|
@ -125,7 +157,7 @@ void adcInit(drv_adc_config_t *init)
|
|||
|
||||
DMA_StructInit(&DMA_InitStructure);
|
||||
DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&adc.ADCx->DR;
|
||||
DMA_InitStructure.DMA_Channel = DMA_Channel_0;
|
||||
DMA_InitStructure.DMA_Channel = adc.channel;
|
||||
DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)adcValues;
|
||||
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
|
||||
DMA_InitStructure.DMA_BufferSize = configuredAdcChannels;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue