Define a new RAW ADC type for hidden ADC channels for customize driver use
This commit is contained in:
committed by
Malte Langermann
parent
a8b3525cd6
commit
6db25b324b
@@ -78,24 +78,24 @@
|
||||
#define ADC_GPIO_PIN_STICK_ST LL_GPIO_PIN_2 // PA.02
|
||||
#define ADC_CHANNEL_STICK_TH LL_ADC_CHANNEL_3 // ADC123_IN3 -> ADC1_IN3
|
||||
#define ADC_CHANNEL_STICK_ST LL_ADC_CHANNEL_2 // ADC123_IN2 -> ADC1_IN2
|
||||
#define ADC_GPIO_EXT1 GPIOC
|
||||
#define ADC_GPIO_RAW1 GPIOC
|
||||
#define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_2 // PC.02
|
||||
#define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_7 // PA.07
|
||||
#define ADC_GPIO_PIN_EXT1 LL_GPIO_PIN_1 // PC.01 (SW1)
|
||||
#define ADC_GPIO_PIN_EXT2 LL_GPIO_PIN_0 // PC.00 (SW2 SW3)
|
||||
#define ADC_GPIO_PIN_EXT3 LL_GPIO_PIN_6 // PA.06 (TR1)
|
||||
#define ADC_GPIO_PIN_EXT4 LL_GPIO_PIN_4 // PC.04 (TR2)
|
||||
#define ADC_GPIO_PIN_RAW1 LL_GPIO_PIN_1 // PC.01 (SW1)
|
||||
#define ADC_GPIO_PIN_RAW2 LL_GPIO_PIN_0 // PC.00 (SW2 SW3)
|
||||
#define ADC_GPIO_PIN_RAW3 LL_GPIO_PIN_6 // PA.06 (TR1)
|
||||
#define ADC_GPIO_PIN_RAW4 LL_GPIO_PIN_4 // PC.04 (TR2)
|
||||
#define ADC_GPIO_PIN_BATT LL_GPIO_PIN_5 // PC.05
|
||||
#define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_12 // ADC123_IN12 -> ADC1_IN12
|
||||
#define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_7 // ADC12_IN7 -> ADC1_IN7
|
||||
#define ADC_CHANNEL_EXT1 LL_ADC_CHANNEL_11 // ADC123_IN11 -> ADC1_IN11
|
||||
#define ADC_CHANNEL_EXT2 LL_ADC_CHANNEL_10 // ADC123_IN10 -> ADC1_IN10
|
||||
#define ADC_CHANNEL_EXT3 LL_ADC_CHANNEL_6 // ADC12_IN6 -> ADC1_IN6
|
||||
#define ADC_CHANNEL_EXT4 LL_ADC_CHANNEL_14 // ADC12_IN14 -> ADC1_IN14
|
||||
#define ADC_CHANNEL_RAW1 LL_ADC_CHANNEL_11 // ADC123_IN11 -> ADC1_IN11
|
||||
#define ADC_CHANNEL_RAW2 LL_ADC_CHANNEL_10 // ADC123_IN10 -> ADC1_IN10
|
||||
#define ADC_CHANNEL_RAW3 LL_ADC_CHANNEL_6 // ADC12_IN6 -> ADC1_IN6
|
||||
#define ADC_CHANNEL_RAW4 LL_ADC_CHANNEL_14 // ADC12_IN14 -> ADC1_IN14
|
||||
#define ADC_CHANNEL_BATT LL_ADC_CHANNEL_15 // ADC12_IN15 -> ADC1_IN15
|
||||
#define ADC_CHANNEL_RTC_BAT LL_ADC_CHANNEL_VBAT // ADC1_IN18
|
||||
#define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_TH | ADC_GPIO_PIN_STICK_ST | ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_EXT3)
|
||||
#define ADC_GPIOC_PINS (ADC_GPIO_PIN_EXT1 | ADC_GPIO_PIN_EXT2 | ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_EXT4 | ADC_GPIO_PIN_BATT)
|
||||
#define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_TH | ADC_GPIO_PIN_STICK_ST | ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_RAW3)
|
||||
#define ADC_GPIOC_PINS (ADC_GPIO_PIN_RAW1 | ADC_GPIO_PIN_RAW2 | ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_RAW4 | ADC_GPIO_PIN_BATT)
|
||||
|
||||
#define ADC_MAIN ADC1
|
||||
#define ADC_SAMPTIME LL_ADC_SAMPLINGTIME_28CYCLES
|
||||
@@ -110,7 +110,7 @@
|
||||
#define ADC_DIRECTION { \
|
||||
0,0, /* gimbals */ \
|
||||
0,0, /* pots */ \
|
||||
0,0,0,0, /* ext1-4 */ \
|
||||
0,0,0,0, /* raw1-4 */ \
|
||||
0, /* vbat */ \
|
||||
0 /* rtc_bat */ \
|
||||
}
|
||||
|
||||
@@ -59,11 +59,11 @@ void keysInit()
|
||||
LL_GPIO_InitTypeDef pinInit;
|
||||
LL_GPIO_StructInit(&pinInit);
|
||||
|
||||
pinInit.Pin = ADC_GPIO_PIN_EXT1;
|
||||
pinInit.Pin = ADC_GPIO_PIN_RAW1;
|
||||
pinInit.Mode = LL_GPIO_MODE_ANALOG;
|
||||
pinInit.Pull = LL_GPIO_PULL_NO;
|
||||
stm32_gpio_enable_clock(ADC_GPIO_EXT1);
|
||||
LL_GPIO_Init(ADC_GPIO_EXT1, &pinInit);
|
||||
stm32_gpio_enable_clock(ADC_GPIO_RAW1);
|
||||
LL_GPIO_Init(ADC_GPIO_RAW1, &pinInit);
|
||||
|
||||
// Init ADC clock
|
||||
uint32_t adc_idx = (((uint32_t) ADC_MAIN) - ADC1_BASE) / 0x100UL;
|
||||
@@ -102,8 +102,8 @@ void keysInit()
|
||||
uint16_t _adcRead()
|
||||
{
|
||||
// Configure ADC channel
|
||||
LL_ADC_REG_SetSequencerRanks(ADC_MAIN, LL_ADC_REG_RANK_1, ADC_CHANNEL_EXT1);
|
||||
LL_ADC_SetChannelSamplingTime(ADC_MAIN, ADC_CHANNEL_EXT1, LL_ADC_SAMPLINGTIME_3CYCLES);
|
||||
LL_ADC_REG_SetSequencerRanks(ADC_MAIN, LL_ADC_REG_RANK_1, ADC_CHANNEL_RAW1);
|
||||
LL_ADC_SetChannelSamplingTime(ADC_MAIN, ADC_CHANNEL_RAW1, LL_ADC_SAMPLINGTIME_3CYCLES);
|
||||
|
||||
// Start ADC conversion
|
||||
LL_ADC_REG_StartConversionSWStart(ADC_MAIN);
|
||||
|
||||
@@ -3,6 +3,7 @@ from pot_config import pot_cfg_by_target
|
||||
MAX_POTS = 4
|
||||
MAX_SLIDERS = 4
|
||||
MAX_EXTS = 4
|
||||
MAX_RAWS = 4
|
||||
|
||||
|
||||
def eprint(*args, **kwargs):
|
||||
@@ -14,6 +15,7 @@ class ADCInput:
|
||||
TYPE_STICK = 'STICK'
|
||||
TYPE_FLEX = 'FLEX'
|
||||
TYPE_SWITCH = 'SWITCH'
|
||||
TYPE_RAW = 'RAW'
|
||||
# TYPE_BATT = 'BATT'
|
||||
|
||||
def __init__(self, name, adc_input_type, adc, gpio, pin, channel):
|
||||
@@ -76,6 +78,12 @@ class ADCInputParser:
|
||||
'suffix': 'EXT{}',
|
||||
'name': 'EXT{}',
|
||||
},
|
||||
{
|
||||
'range': range(1, MAX_RAWS + 1),
|
||||
'type': ADCInput.TYPE_RAW,
|
||||
'suffix': 'RAW{}',
|
||||
'name': 'RAW{}',
|
||||
},
|
||||
{
|
||||
'range': range(1, 2 + 1),
|
||||
'type': ADCInput.TYPE_FLEX,
|
||||
|
||||
@@ -21,7 +21,16 @@ static const etx_hal_adc_input_t _flex_inputs[] = {
|
||||
{% endfor %}
|
||||
};
|
||||
|
||||
{% set vbat_offset = flex_offset + n_flex %}
|
||||
{% set raw_offset = flex_offset + n_flex %}
|
||||
{% set raw_inputs = adc_inputs.inputs | selectattr('type', '==', 'RAW') | list %}
|
||||
{% set n_raw = raw_inputs | count %}
|
||||
static const etx_hal_adc_input_t _raw_inputs[] = {
|
||||
{% for input in raw_inputs %}
|
||||
{ "{{ input.name }}", "{{ input.label }}", "{{ input.short_label }}" },
|
||||
{% endfor %}
|
||||
};
|
||||
|
||||
{% set vbat_offset = raw_offset + n_raw %}
|
||||
{% set vbat_inputs = adc_inputs.inputs | selectattr('type', '==', 'VBAT') | list %}
|
||||
{% set n_vbat = vbat_inputs | count %}
|
||||
static const etx_hal_adc_input_t _vbat_inputs[] = {
|
||||
|
||||
Reference in New Issue
Block a user