stm32/adc: Apply re-read errata for WB55.
Following 17898f8607.
Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
@@ -464,10 +464,13 @@ static void adc_config_channel(ADC_HandleTypeDef *adc_handle, uint32_t channel)
|
|||||||
|
|
||||||
static uint32_t adc_read_channel(ADC_HandleTypeDef *adcHandle) {
|
static uint32_t adc_read_channel(ADC_HandleTypeDef *adcHandle) {
|
||||||
uint32_t value;
|
uint32_t value;
|
||||||
#if defined(STM32G4)
|
#if defined(STM32G4) || defined(STM32WB)
|
||||||
// For STM32G4 there is errata 2.7.7, "Wrong ADC result if conversion done late after
|
// For STM32G4 errata 2.7.7 / STM32WB errata 2.7.1:
|
||||||
// calibration or previous conversion". According to the errata, this can be avoided
|
// "Wrong ADC result if conversion done late after calibration or previous conversion"
|
||||||
// by performing two consecutive ADC conversions and keeping the second result.
|
// states an incorrect reading is returned if more than 1ms has elapsed since the last
|
||||||
|
// reading or calibration. According to the errata, this can be avoided by performing
|
||||||
|
// two consecutive ADC conversions and keeping the second result.
|
||||||
|
// Note: On STM32WB55 @ 64Mhz each ADC read takes ~ 3us.
|
||||||
for (uint8_t i = 0; i < 2; i++)
|
for (uint8_t i = 0; i < 2; i++)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user