From 3fe515416bc60a64484e3285fe6aa832e331bb72 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Sat, 10 Oct 2020 10:17:03 +0000 Subject: [PATCH] Fixed bug #1126. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/branches/stable_20.3.x@13882 27425a3e-05d8-49a3-a47f-9c15f0e5edd8 --- os/hal/ports/STM32/LLD/ADCv3/hal_adc_lld.c | 8 ++++++++ readme.txt | 1 + 2 files changed, 9 insertions(+) diff --git a/os/hal/ports/STM32/LLD/ADCv3/hal_adc_lld.c b/os/hal/ports/STM32/LLD/ADCv3/hal_adc_lld.c index 8df21bf7b..08e73a155 100644 --- a/os/hal/ports/STM32/LLD/ADCv3/hal_adc_lld.c +++ b/os/hal/ports/STM32/LLD/ADCv3/hal_adc_lld.c @@ -171,12 +171,16 @@ static void adc_lld_calibrate(ADCDriver *adcp) { while ((adcp->adcm->CR & ADC_CR_ADCAL) != 0) ; + osalSysPolledDelayX(OSAL_US2RTC(STM32_HCLK, 20)); + /* Single-ended calibration for master ADC.*/ adcp->adcm->CR = ADC_CR_ADVREGEN; adcp->adcm->CR = ADC_CR_ADVREGEN | ADC_CR_ADCAL; while ((adcp->adcm->CR & ADC_CR_ADCAL) != 0) ; + osalSysPolledDelayX(OSAL_US2RTC(STM32_HCLK, 20)); + #if STM32_ADC_DUAL_MODE osalDbgAssert(adcp->adcs->CR == ADC_CR_ADVREGEN, "invalid register state"); @@ -186,11 +190,15 @@ static void adc_lld_calibrate(ADCDriver *adcp) { while ((adcp->adcs->CR & ADC_CR_ADCAL) != 0) ; + osalSysPolledDelayX(OSAL_US2RTC(STM32_HCLK, 20)); + /* Single-ended calibration for slave ADC.*/ adcp->adcs->CR = ADC_CR_ADVREGEN; adcp->adcs->CR = ADC_CR_ADVREGEN | ADC_CR_ADCAL; while ((adcp->adcs->CR & ADC_CR_ADCAL) != 0) ; + + osalSysPolledDelayX(OSAL_US2RTC(STM32_HCLK, 20)); #endif } diff --git a/readme.txt b/readme.txt index 46960fb6a..81d5cb17e 100644 --- a/readme.txt +++ b/readme.txt @@ -74,6 +74,7 @@ ***************************************************************************** *** 20.3.3 *** +- FIX: Fixed STM32 ADCv3 hangin on initialization (bug #1126). - FIX: Fixed I2S-related problems in STM32F4xx registry (bug #1124). - FIX: Fixed STM32 EXTIv1 driver unable to enable/disable fixed lines (bug #1123).