Cleanup CC3D/NAZE/OLIMEXINO ADC initialisation and PWM mapping. Fixes
#297.
This commit is contained in:
parent
e31b6e3e75
commit
b7850270c4
|
@ -48,7 +48,7 @@ extern volatile uint16_t adcValues[ADC_CHANNEL_COUNT];
|
|||
|
||||
void adcInit(drv_adc_config_t *init)
|
||||
{
|
||||
#ifdef CC3D
|
||||
#if defined(CJMCU) || defined(CC3D)
|
||||
UNUSED(init);
|
||||
#endif
|
||||
|
||||
|
@ -64,59 +64,47 @@ void adcInit(drv_adc_config_t *init)
|
|||
GPIO_StructInit(&GPIO_InitStructure);
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
|
||||
|
||||
#ifdef CC3D
|
||||
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;
|
||||
|
||||
#else
|
||||
// configure always-present battery index (ADC4)
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
|
||||
adcConfig[ADC_BATTERY].adcChannel = ADC_Channel_4;
|
||||
#ifdef VBAT_ADC_GPIO_PIN
|
||||
GPIO_InitStructure.GPIO_Pin = VBAT_ADC_GPIO_PIN;
|
||||
GPIO_Init(VBAT_ADC_GPIO, &GPIO_InitStructure);
|
||||
adcConfig[ADC_BATTERY].adcChannel = VBAT_ADC_CHANNEL;
|
||||
adcConfig[ADC_BATTERY].dmaIndex = configuredAdcChannels++;
|
||||
adcConfig[ADC_BATTERY].enabled = true;
|
||||
adcConfig[ADC_BATTERY].sampleTime = ADC_SampleTime_239Cycles5;
|
||||
#endif
|
||||
|
||||
#ifdef EXTERNAL1_ADC_GPIO
|
||||
if (init->enableExternal1) {
|
||||
#ifdef OLIMEXINO
|
||||
GPIO_InitStructure.GPIO_Pin |= GPIO_Pin_5;
|
||||
adcConfig[ADC_EXTERNAL1].adcChannel = ADC_Channel_5;
|
||||
GPIO_InitStructure.GPIO_Pin = EXTERNAL1_ADC_GPIO_PIN;
|
||||
GPIO_Init(EXTERNAL1_ADC_GPIO, &GPIO_InitStructure);
|
||||
adcConfig[ADC_EXTERNAL1].adcChannel = EXTERNAL1_ADC_CHANNEL;
|
||||
adcConfig[ADC_EXTERNAL1].dmaIndex = configuredAdcChannels++;
|
||||
adcConfig[ADC_EXTERNAL1].enabled = true;
|
||||
adcConfig[ADC_EXTERNAL1].sampleTime = ADC_SampleTime_239Cycles5;
|
||||
#endif
|
||||
|
||||
#ifdef NAZE
|
||||
GPIO_InitStructure.GPIO_Pin |= GPIO_Pin_5;
|
||||
adcConfig[ADC_EXTERNAL1].adcChannel = ADC_Channel_5;
|
||||
adcConfig[ADC_EXTERNAL1].dmaIndex = configuredAdcChannels++;
|
||||
adcConfig[ADC_EXTERNAL1].enabled = true;
|
||||
adcConfig[ADC_EXTERNAL1].sampleTime = ADC_SampleTime_239Cycles5;
|
||||
#endif
|
||||
}
|
||||
#endif // !CC3D
|
||||
#endif
|
||||
|
||||
#ifdef RSSI_ADC_GPIO
|
||||
if (init->enableRSSI) {
|
||||
GPIO_InitStructure.GPIO_Pin |= GPIO_Pin_1;
|
||||
adcConfig[ADC_RSSI].adcChannel = ADC_Channel_1;
|
||||
GPIO_InitStructure.GPIO_Pin = RSSI_ADC_GPIO_PIN;
|
||||
GPIO_Init(RSSI_ADC_GPIO, &GPIO_InitStructure);
|
||||
adcConfig[ADC_RSSI].adcChannel = RSSI_ADC_CHANNEL;
|
||||
adcConfig[ADC_RSSI].dmaIndex = configuredAdcChannels++;
|
||||
adcConfig[ADC_RSSI].enabled = true;
|
||||
adcConfig[ADC_RSSI].sampleTime = ADC_SampleTime_239Cycles5;
|
||||
}
|
||||
#endif
|
||||
|
||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||
|
||||
#ifdef CURRENT_METER_ADC_GPIO
|
||||
if (init->enableCurrentMeter) {
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
|
||||
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
||||
adcConfig[ADC_CURRENT].adcChannel = ADC_Channel_9;
|
||||
GPIO_InitStructure.GPIO_Pin = CURRENT_METER_ADC_GPIO_PIN;
|
||||
GPIO_Init(CURRENT_METER_ADC_GPIO, &GPIO_InitStructure);
|
||||
adcConfig[ADC_CURRENT].adcChannel = CURRENT_METER_ADC_CHANNEL;
|
||||
adcConfig[ADC_CURRENT].dmaIndex = configuredAdcChannels++;
|
||||
adcConfig[ADC_CURRENT].enabled = true;
|
||||
adcConfig[ADC_CURRENT].sampleTime = ADC_SampleTime_239Cycles5;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
RCC_ADCCLKConfig(RCC_PCLK2_Div8); // 9MHz from 72MHz APB2 clock(HSE), 8MHz from 64MHz (HSI)
|
||||
|
||||
|
|
|
@ -394,24 +394,20 @@ pwmOutputConfiguration_t *pwmInit(drv_pwm_config_t *init)
|
|||
|
||||
#endif
|
||||
|
||||
#ifdef STM32F10X
|
||||
// skip ADC for RSSI
|
||||
if (init->useRSSIADC && timerIndex == PWM2)
|
||||
#ifdef VBAT_ADC_GPIO
|
||||
if (init->useVbat && timerHardwarePtr->gpio == VBAT_ADC_GPIO && timerHardwarePtr->pin == VBAT_ADC_GPIO_PIN) {
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CC3D
|
||||
if (init->useVbat && timerIndex == Vbat_TIMER) {
|
||||
#ifdef RSSI_ADC_GPIO
|
||||
if (init->useRSSIADC && timerHardwarePtr->gpio == RSSI_ADC_GPIO && timerHardwarePtr->pin == RSSI_ADC_GPIO_PIN) {
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
#ifdef CC3D
|
||||
if (init->useCurrentMeterADC && timerIndex == CurrentMeter_TIMER) {
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
#ifdef CC3D
|
||||
if (init->useRSSIADC && timerIndex == RSSI_TIMER) {
|
||||
|
||||
#ifdef CURRENT_METER_ADC_GPIO
|
||||
if (init->useCurrentMeterADC && timerHardwarePtr->gpio == CURRENT_METER_ADC_GPIO && timerHardwarePtr->pin == CURRENT_METER_ADC_GPIO_PIN) {
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -59,10 +59,6 @@
|
|||
#define SOFTSERIAL_1_TIMER_TX_HARDWARE 1 // PWM 2
|
||||
#define SOFTSERIAL_1_TIMER_RX_HARDWARE 2 // PWM 3
|
||||
|
||||
#define CurrentMeter_TIMER 3 // PWM4
|
||||
#define Vbat_TIMER 4 // PWM5
|
||||
#define RSSI_TIMER 5 // PWM6
|
||||
|
||||
#define USART3_RX_PIN Pin_11
|
||||
#define USART3_TX_PIN Pin_10
|
||||
#define USART3_GPIO GPIOB
|
||||
|
@ -75,6 +71,19 @@
|
|||
|
||||
#define USE_ADC
|
||||
|
||||
#define CURRENT_METER_ADC_GPIO GPIOB
|
||||
#define CURRENT_METER_ADC_GPIO_PIN GPIO_Pin_1
|
||||
#define CURRENT_METER_ADC_CHANNEL ADC_Channel_9
|
||||
|
||||
#define VBAT_ADC_GPIO GPIOA
|
||||
#define VBAT_ADC_GPIO_PIN GPIO_Pin_0
|
||||
#define VBAT_ADC_CHANNEL ADC_Channel_0
|
||||
|
||||
#define RSSI_ADC_GPIO GPIOA
|
||||
#define RSSI_ADC_GPIO_PIN GPIO_Pin_1
|
||||
#define RSSI_ADC_CHANNEL ADC_Channel_1
|
||||
|
||||
|
||||
#define SENSORS_SET (SENSOR_ACC)
|
||||
|
||||
#define GPS
|
||||
|
|
|
@ -100,6 +100,22 @@
|
|||
|
||||
#define USE_ADC
|
||||
|
||||
#define CURRENT_METER_ADC_GPIO GPIOB
|
||||
#define CURRENT_METER_ADC_GPIO_PIN GPIO_Pin_1
|
||||
#define CURRENT_METER_ADC_CHANNEL ADC_Channel_9
|
||||
|
||||
#define VBAT_ADC_GPIO GPIOA
|
||||
#define VBAT_ADC_GPIO_PIN GPIO_Pin_4
|
||||
#define VBAT_ADC_CHANNEL ADC_Channel_4
|
||||
|
||||
#define RSSI_ADC_GPIO GPIOA
|
||||
#define RSSI_ADC_GPIO_PIN GPIO_Pin_1
|
||||
#define RSSI_ADC_CHANNEL ADC_Channel_1
|
||||
|
||||
#define EXTERNAL1_ADC_GPIO GPIOA
|
||||
#define EXTERNAL1_ADC_GPIO_PIN GPIO_Pin_5
|
||||
#define EXTERNAL1_ADC_CHANNEL ADC_Channel_5
|
||||
|
||||
#define SENSORS_SET (SENSOR_ACC | SENSOR_BARO | SENSOR_MAG)
|
||||
|
||||
#define GPS
|
||||
|
|
|
@ -119,6 +119,22 @@
|
|||
|
||||
#define USE_ADC
|
||||
|
||||
#define CURRENT_METER_ADC_GPIO GPIOB
|
||||
#define CURRENT_METER_ADC_GPIO_PIN GPIO_Pin_1
|
||||
#define CURRENT_METER_ADC_CHANNEL ADC_Channel_9
|
||||
|
||||
#define VBAT_ADC_GPIO GPIOA
|
||||
#define VBAT_ADC_GPIO_PIN GPIO_Pin_4
|
||||
#define VBAT_ADC_CHANNEL ADC_Channel_4
|
||||
|
||||
#define RSSI_ADC_GPIO GPIOA
|
||||
#define RSSI_ADC_GPIO_PIN GPIO_Pin_1
|
||||
#define RSSI_ADC_CHANNEL ADC_Channel_1
|
||||
|
||||
#define EXTERNAL1_ADC_GPIO GPIOA
|
||||
#define EXTERNAL1_ADC_GPIO_PIN GPIO_Pin_5
|
||||
#define EXTERNAL1_ADC_CHANNEL ADC_Channel_5
|
||||
|
||||
#define SENSORS_SET (SENSOR_ACC | SENSOR_BARO | SENSOR_MAG)
|
||||
|
||||
#define GPS
|
||||
|
|
|
@ -87,6 +87,23 @@
|
|||
|
||||
#define USE_ADC
|
||||
|
||||
#define CURRENT_METER_ADC_GPIO GPIOB
|
||||
#define CURRENT_METER_ADC_GPIO_PIN GPIO_Pin_1
|
||||
#define CURRENT_METER_ADC_CHANNEL ADC_Channel_9
|
||||
|
||||
#define VBAT_ADC_GPIO GPIOA
|
||||
#define VBAT_ADC_GPIO_PIN GPIO_Pin_4
|
||||
#define VBAT_ADC_CHANNEL ADC_Channel_4
|
||||
|
||||
#define RSSI_ADC_GPIO GPIOA
|
||||
#define RSSI_ADC_GPIO_PIN GPIO_Pin_1
|
||||
#define RSSI_ADC_CHANNEL ADC_Channel_1
|
||||
|
||||
#define EXTERNAL1_ADC_GPIO GPIOA
|
||||
#define EXTERNAL1_ADC_GPIO_PIN GPIO_Pin_5
|
||||
#define EXTERNAL1_ADC_CHANNEL ADC_Channel_5
|
||||
|
||||
|
||||
#define SENSORS_SET (SENSOR_ACC | SENSOR_BARO | SENSOR_MAG)
|
||||
|
||||
#define GPS
|
||||
|
|
|
@ -97,6 +97,22 @@
|
|||
|
||||
#define USE_ADC
|
||||
|
||||
#define CURRENT_METER_ADC_GPIO GPIOB
|
||||
#define CURRENT_METER_ADC_GPIO_PIN GPIO_Pin_1
|
||||
#define CURRENT_METER_ADC_CHANNEL ADC_Channel_9
|
||||
|
||||
#define VBAT_ADC_GPIO GPIOA
|
||||
#define VBAT_ADC_GPIO_PIN GPIO_Pin_4
|
||||
#define VBAT_ADC_CHANNEL ADC_Channel_4
|
||||
|
||||
#define RSSI_ADC_GPIO GPIOA
|
||||
#define RSSI_ADC_GPIO_PIN GPIO_Pin_1
|
||||
#define RSSI_ADC_CHANNEL ADC_Channel_1
|
||||
|
||||
#define EXTERNAL1_ADC_GPIO GPIOA
|
||||
#define EXTERNAL1_ADC_GPIO_PIN GPIO_Pin_5
|
||||
#define EXTERNAL1_ADC_CHANNEL ADC_Channel_5
|
||||
|
||||
#define SENSORS_SET (SENSOR_ACC | SENSOR_BARO | SENSOR_MAG)
|
||||
|
||||
#define LED0
|
||||
|
|
Loading…
Reference in New Issue