From 4c808b1f2c9d96d73667658d89fa7c42ffa9e9d6 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Sat, 10 Oct 2020 10:16:58 +0000 Subject: [PATCH] Fixed bug #1126. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@13881 27425a3e-05d8-49a3-a47f-9c15f0e5edd8 --- os/hal/ports/STM32/LLD/ADCv3/hal_adc_lld.c | 8 ++++++++ readme.txt | 2 ++ 2 files changed, 10 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 d067f6290..fb278ef95 100644 --- a/readme.txt +++ b/readme.txt @@ -119,6 +119,8 @@ MEMS Accelerometers. - NEW: Safer messages mechanism for sandboxes (to be backported to 20.3.1). - NEW: Added latency measurement test application. +- FIX: Fixed STM32 ADCv3 hangin on initialization (bug #1126) + (backported to 20.3.3)(backported to 19.1.5). - FIX: Fixed I2S-related problems in STM32F4xx registry (bug #1124) (backported to 20.3.3)(backported to 19.1.5). - FIX: Fixed STM32 EXTIv1 driver unable to enable/disable fixed lines