Skip to content

Commit 0f4a3ad

Browse files
committed
core: analog: add STM32U5xx support
Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
1 parent c9f851e commit 0f4a3ad

File tree

2 files changed

+26
-5
lines changed

2 files changed

+26
-5
lines changed

libraries/SrcWrapper/src/stm32/analog.cpp

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ static PinName g_current_pin = NC;
3333
#ifndef ADC_SAMPLINGTIME
3434
#if defined(ADC_SAMPLETIME_8CYCLES_5)
3535
#define ADC_SAMPLINGTIME ADC_SAMPLETIME_8CYCLES_5;
36+
#elif defined(ADC_SAMPLETIME_12CYCLES)
37+
#define ADC_SAMPLINGTIME ADC_SAMPLETIME_12CYCLES;
3638
#elif defined(ADC_SAMPLETIME_12CYCLES_5)
3739
#define ADC_SAMPLINGTIME ADC_SAMPLETIME_12CYCLES_5;
3840
#elif defined(ADC_SAMPLETIME_13CYCLES_5)
@@ -60,6 +62,8 @@ static PinName g_current_pin = NC;
6062
#define ADC_SAMPLINGTIME_INTERNAL ADC_SAMPLETIME_384CYCLES
6163
#elif defined(ADC_SAMPLETIME_810CYCLES_5)
6264
#define ADC_SAMPLINGTIME_INTERNAL ADC_SAMPLETIME_810CYCLES_5
65+
#elif defined(ADC_SAMPLETIME_814CYCLES)
66+
#define ADC_SAMPLINGTIME_INTERNAL ADC_SAMPLETIME_814CYCLES
6367
#elif defined(ADC_SAMPLETIME_640CYCLES_5)
6468
#define ADC_SAMPLINGTIME_INTERNAL ADC_SAMPLETIME_640CYCLES_5
6569
#elif defined(ADC_SAMPLETIME_601CYCLES_5)
@@ -176,6 +180,7 @@ static uint32_t get_adc_channel(PinName pin, uint32_t *bank)
176180
case 23:
177181
channel = ADC_CHANNEL_23;
178182
break;
183+
#ifdef ADC_CHANNEL_24
179184
case 24:
180185
channel = ADC_CHANNEL_24;
181186
break;
@@ -202,6 +207,7 @@ static uint32_t get_adc_channel(PinName pin, uint32_t *bank)
202207
channel = ADC_CHANNEL_31;
203208
break;
204209
#endif
210+
#endif
205211
#endif
206212
default:
207213
channel = 0;
@@ -588,6 +594,9 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc)
588594
#endif
589595
#ifdef ADC4
590596
else if (hadc->Instance == ADC4) {
597+
#ifdef __HAL_RCC_ADC4_CLK_ENABLE
598+
__HAL_RCC_ADC4_CLK_ENABLE();
599+
#endif
591600
#ifdef __HAL_RCC_ADC34_CLK_ENABLE
592601
__HAL_RCC_ADC34_CLK_ENABLE();
593602
#endif
@@ -707,6 +716,15 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef *hadc)
707716
#endif
708717
#ifdef ADC4
709718
else if (hadc->Instance == ADC4) {
719+
#ifdef __HAL_RCC_ADC4_FORCE_RESET
720+
__HAL_RCC_ADC4_FORCE_RESET();
721+
#endif
722+
#ifdef __HAL_RCC_ADC4_RELEASE_RESET
723+
__HAL_RCC_ADC4_RELEASE_RESET();
724+
#endif
725+
#ifdef __HAL_RCC_ADC4_CLK_DISABLE
726+
__HAL_RCC_ADC4_CLK_DISABLE();
727+
#endif
710728
#ifdef __HAL_RCC_ADC34_FORCE_RESET
711729
__HAL_RCC_ADC34_FORCE_RESET();
712730
#endif
@@ -910,7 +928,7 @@ uint16_t adc_read_value(PinName pin, uint32_t resolution)
910928
#endif /* STM32L4xx || STM32WBxx */
911929
return 0;
912930
}
913-
#ifdef ADC_SCAN_SEQ_FIXED
931+
#if defined(ADC_SCAN_SEQ_FIXED) && defined(ADC_RANK_CHANNEL_NUMBER)
914932
AdcChannelConf.Rank = ADC_RANK_CHANNEL_NUMBER; /* Enable the rank of the selected channels when not fully configurable */
915933
#else
916934
AdcChannelConf.Rank = ADC_REGULAR_RANK_1; /* Specifies the rank in the regular group sequencer */
@@ -954,7 +972,7 @@ uint16_t adc_read_value(PinName pin, uint32_t resolution)
954972
#if defined(STM32F0xx) || defined(STM32G0xx) || defined(STM32F1xx) || \
955973
defined(STM32WLxx) || defined(STM32F373xC) || defined(STM32F378xx)
956974
if (HAL_ADCEx_Calibration_Start(&AdcHandle) != HAL_OK)
957-
#elif defined (STM32H7xx) || defined(STM32MP1xx)
975+
#elif defined (STM32H7xx) || defined(STM32MP1xx) || defined(STM32U5xx)
958976
if (HAL_ADCEx_Calibration_Start(&AdcHandle, ADC_CALIB_OFFSET, ADC_SINGLE_ENDED) != HAL_OK)
959977
#else
960978
if (HAL_ADCEx_Calibration_Start(&AdcHandle, ADC_SINGLE_ENDED) != HAL_OK)
@@ -967,7 +985,7 @@ uint16_t adc_read_value(PinName pin, uint32_t resolution)
967985

968986
/*##-3- Start the conversion process ####################*/
969987
if (HAL_ADC_Start(&AdcHandle) != HAL_OK) {
970-
/* Start Conversation Error */
988+
/* Start Conversion Error */
971989
return 0;
972990
}
973991

libraries/SrcWrapper/src/stm32/hw_config.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,18 @@ void hw_config_init(void)
2828
{
2929
configIPClock();
3030

31-
#if defined(PWR_CR3_UCPD_DBDIS) || defined(STM32L5xx)
31+
#if defined(PWR_CR3_UCPD_DBDIS) || defined(PWR_UCPDR_UCPD_DBDIS)
3232
/* Disable the internal Pull-Up in Dead Battery pins of UCPD peripheral */
3333
HAL_PWREx_DisableUCPDDeadBattery();
3434
#endif
35-
#if defined (SYSCFG_CFGR1_UCPD1_STROBE) || defined (SYSCFG_CFGR1_UCPD2_STROBE)
35+
#if defined(SYSCFG_CFGR1_UCPD1_STROBE) || defined(SYSCFG_CFGR1_UCPD2_STROBE)
3636
/* Disable the internal Pull-Up in Dead Battery pins of UCPD peripheral */
3737
HAL_SYSCFG_StrobeDBattpinsConfig(SYSCFG_CFGR1_UCPD1_STROBE | SYSCFG_CFGR1_UCPD2_STROBE);
3838
#endif /* SYSCFG_CFGR1_UCPD1_STROBE || SYSCFG_CFGR1_UCPD2_STROBE */
3939

40+
#if defined(PWR_SVMCR_ASV)
41+
HAL_PWREx_EnableVddA();
42+
#endif
4043
/* Init DWT if present */
4144
#ifdef DWT_BASE
4245
dwt_init();

0 commit comments

Comments
 (0)