mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-12-16 10:03:50 +01:00
cpu/stm32: add sampling time to F4/F7 ADC driver
This commit is contained in:
parent
2775c72018
commit
e3509fc023
@ -30,6 +30,12 @@
|
|||||||
*/
|
*/
|
||||||
#define MAX_ADC_SPEED (12000000U)
|
#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
|
* @brief Default VBAT undefined value
|
||||||
*/
|
*/
|
||||||
@ -93,7 +99,15 @@ int adc_init(adc_t line)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
ADC->CCR = ((clk_div / 2) - 1) << 16;
|
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 */
|
/* free the device again */
|
||||||
done(line);
|
done(line);
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user