I'm having some issues with the H735 ADC12:
Code: Select all
#define LINE_AIN1 PAL_LINE(GPIOA, 6U) // ADC12_INP3
#define LINE_AIN2 PAL_LINE(GPIOB, 1U) // ADC12_INP5
#define LINE_AIN3 PAL_LINE(GPIOB, 0U) // ADC12_INP9
#define LINE_AIN4 PAL_LINE(GPIOA, 3U) // ADC12_INP15
#define LINE_AIN6 PAL_LINE(GPIOF, 13U) // ADC2_INP2
#define LINE_AIN7 PAL_LINE(GPIOF, 14U) // ADC2_INP6
adcsample_t adcBuffer[ADC12_GRP_NUM_CHANNELS * ADC_OVERSAMPLE];
const ADCConfig adccfg = {
.difsel =0U,
.calibration = 0U};
static constexpr ADCConversionGroup adc12grpcfg = {
.circular = false,
.num_channels = ADC12_GRP_NUM_CHANNELS,
.end_cb = NULL,
.error_cb = NULL,
.cfgr = ADC_CFGR_CONT,
.cfgr2 = 0U,
.ccr = 0U,
.pcsel = ADC_SELMASK_IN2 |
ADC_SELMASK_IN3 |
ADC_SELMASK_IN5 |
ADC_SELMASK_IN6 |
ADC_SELMASK_IN9 |
ADC_SELMASK_IN15,
.ltr1 = 0U,
.htr1 = 0U,
.ltr2 = 0U,
.htr2 = 0U,
.ltr3 = 0U,
.htr3 = 0U,
.awd2cr = 0U,
.awd3cr = 0U,
.smpr = {
ADC_SMPR1_SMP_AN2(ADC_SMPR_SMP_32P5) |
ADC_SMPR1_SMP_AN3(ADC_SMPR_SMP_32P5) |
ADC_SMPR1_SMP_AN5(ADC_SMPR_SMP_32P5) |
ADC_SMPR1_SMP_AN6(ADC_SMPR_SMP_32P5) |
ADC_SMPR1_SMP_AN9(ADC_SMPR_SMP_32P5),
ADC_SMPR2_SMP_AN15(ADC_SMPR_SMP_32P5)
},
.sqr = {
ADC_SQR1_SQ1_N(ADC_CHANNEL_IN2) |
ADC_SQR1_SQ2_N(ADC_CHANNEL_IN3) |
ADC_SQR1_SQ3_N(ADC_CHANNEL_IN5) |
ADC_SQR1_SQ4_N(ADC_CHANNEL_IN6),
ADC_SQR2_SQ5_N(ADC_CHANNEL_IN9) |
ADC_SQR2_SQ6_N(ADC_CHANNEL_IN15),
0U,
0U
},
};
palSetLineMode(AIN1, PAL_MODE_INPUT_ANALOG);
palSetLineMode(AIN2, PAL_MODE_INPUT_ANALOG);
palSetLineMode(AIN3, PAL_MODE_INPUT_ANALOG);
palSetLineMode(AIN4, PAL_MODE_INPUT_ANALOG);
palSetLineMode(AIN6, PAL_MODE_INPUT_ANALOG);
palSetLineMode(AIN7, PAL_MODE_INPUT_ANALOG);
adcConvert(&ADCD1, &adc12grpcfg, adcBuffer, ADC_OVERSAMPLE);
all readings sit at 32767 after the conversion is done.