1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-12-15 17:43:51 +01:00

cpu/stm32: add sampling time to F4/F7 ADC driver

This commit is contained in:
Fabian Hüßler 2022-01-23 10:40:51 +01:00
parent 2775c72018
commit e3509fc023

View File

@ -30,6 +30,12 @@
*/
#define MAX_ADC_SPEED (12000000U)
/**
* @brief Maximum sampling time for each channel (480 cycles)
* T_CONV[µs] = (RESOLUTION[bits] + SMP[cycles]) / CLOCK_SPEED[MHz]
*/
#define MAX_ADC_SMP (7u)
/**
* @brief Default VBAT undefined value
*/
@ -93,7 +99,15 @@ int adc_init(adc_t line)
}
}
ADC->CCR = ((clk_div / 2) - 1) << 16;
/* set sampling time to the maximum */
if (adc_config[line].chan >= 10) {
dev(line)->SMPR1 &= ~(MAX_ADC_SMP << (3 * (adc_config[line].chan - 10)));
dev(line)->SMPR1 |= MAX_ADC_SMP << (3 * (adc_config[line].chan - 10));
}
else {
dev(line)->SMPR1 &= ~(MAX_ADC_SMP << (3 * adc_config[line].chan));
dev(line)->SMPR2 |= MAX_ADC_SMP << (3 * adc_config[line].chan);
}
/* free the device again */
done(line);
return 0;