From 21024e863820d4a3ddb9e72041251c72d10ee5a6 Mon Sep 17 00:00:00 2001 From: Joonas Javanainen Date: Thu, 1 Feb 2024 21:48:29 +0200 Subject: [PATCH 1/2] Fix F2 temperature sensor ADC channel On all F2 devices (F205/207/215/217) the sensor is connected to ADC1_IN16, and is not shared with VBAT which is connected to ADC1_IN18. --- embassy-stm32/src/adc/v2.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/embassy-stm32/src/adc/v2.rs b/embassy-stm32/src/adc/v2.rs index 4622b40a9..036a4ec37 100644 --- a/embassy-stm32/src/adc/v2.rs +++ b/embassy-stm32/src/adc/v2.rs @@ -34,7 +34,7 @@ impl AdcPin for Temperature {} impl super::sealed::AdcPin for Temperature { fn channel(&self) -> u8 { cfg_if::cfg_if! { - if #[cfg(any(stm32f40, stm32f41))] { + if #[cfg(any(stm32f2, stm32f40, stm32f41))] { 16 } else { 18 From 7e0f287431f7e5bdfc562164bf67afb214ac4700 Mon Sep 17 00:00:00 2001 From: Joonas Javanainen Date: Thu, 1 Feb 2024 21:58:36 +0200 Subject: [PATCH 2/2] Fix ADC max frequency for F2 --- embassy-stm32/src/adc/v2.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/embassy-stm32/src/adc/v2.rs b/embassy-stm32/src/adc/v2.rs index 036a4ec37..b37ac5a5d 100644 --- a/embassy-stm32/src/adc/v2.rs +++ b/embassy-stm32/src/adc/v2.rs @@ -67,7 +67,11 @@ enum Prescaler { impl Prescaler { fn from_pclk2(freq: Hertz) -> Self { + // Datasheet for F2 specifies min frequency 0.6 MHz, and max 30 MHz (with VDDA 2.4-3.6V). + #[cfg(stm32f2)] + const MAX_FREQUENCY: Hertz = Hertz(30_000_000); // Datasheet for both F4 and F7 specifies min frequency 0.6 MHz, typ freq. 30 MHz and max 36 MHz. + #[cfg(not(stm32f2))] const MAX_FREQUENCY: Hertz = Hertz(36_000_000); let raw_div = freq.0 / MAX_FREQUENCY.0; match raw_div {