aboutsummaryrefslogtreecommitdiff
path: root/embassy-stm32
diff options
context:
space:
mode:
Diffstat (limited to 'embassy-stm32')
-rw-r--r--embassy-stm32/src/vrefbuf/mod.rs23
1 files changed, 7 insertions, 16 deletions
diff --git a/embassy-stm32/src/vrefbuf/mod.rs b/embassy-stm32/src/vrefbuf/mod.rs
index 5c7dbfa50..54b4f8903 100644
--- a/embassy-stm32/src/vrefbuf/mod.rs
+++ b/embassy-stm32/src/vrefbuf/mod.rs
@@ -12,21 +12,12 @@ pub struct VoltageReferenceBuffer<'d, T: Instance> {
12} 12}
13 13
14#[cfg(rcc_wba)] 14#[cfg(rcc_wba)]
15#[repr(usize)] 15fn get_refbuf_trim(voltage_scale: Vrs) -> usize {
16enum VRefBufTrim {
17 VRefBuf3Trim = 0x0BFA_07A8,
18 VRefBuf2Trim = 0x0BFA_07A9,
19 VRefBuf1Trim = 0x0BFA_07AA,
20 VRefBuf0Trim = 0x0BFA_07AB,
21}
22
23#[cfg(rcc_wba)]
24fn get_refbuf_trim(voltage_scale: Vrs) -> VRefBufTrim {
25 match voltage_scale { 16 match voltage_scale {
26 Vrs::VREF0 => VRefBufTrim::VRefBuf0Trim, 17 Vrs::VREF0 => 0x0BFA_07A8usize,
27 Vrs::VREF1 => VRefBufTrim::VRefBuf1Trim, 18 Vrs::VREF1 => 0x0BFA_07A9usize,
28 Vrs::VREF2 => VRefBufTrim::VRefBuf2Trim, 19 Vrs::VREF2 => 0x0BFA_07AAusize,
29 Vrs::VREF3 => VRefBufTrim::VRefBuf3Trim, 20 Vrs::VREF3 => 0x0BFA_07ABusize,
30 _ => panic!("Incorrect Vrs setting!"), 21 _ => panic!("Incorrect Vrs setting!"),
31 } 22 }
32} 23}
@@ -44,10 +35,10 @@ impl<'d, T: Instance> VoltageReferenceBuffer<'d, T> {
44 // [Link explaining it](https://www.st.com/resource/en/errata_sheet/es0644-stm32wba6xxx-device-errata-stmicroelectronics.pdf) 35 // [Link explaining it](https://www.st.com/resource/en/errata_sheet/es0644-stm32wba6xxx-device-errata-stmicroelectronics.pdf)
45 unsafe { 36 unsafe {
46 use crate::pac::VREFBUF; 37 use crate::pac::VREFBUF;
47 let addr = get_refbuf_trim(voltage_scale) as usize; 38 let addr = get_refbuf_trim(voltage_scale);
48 let buf_trim_ptr = core::ptr::with_exposed_provenance::<u32>(addr); 39 let buf_trim_ptr = core::ptr::with_exposed_provenance::<u32>(addr);
49 let trim_val = core::ptr::read_volatile(buf_trim_ptr); 40 let trim_val = core::ptr::read_volatile(buf_trim_ptr);
50 VREFBUF.ccr().write(|w| w.set_trim((trim_val & 0xFF) as u8)); 41 VREFBUF.ccr().write(|w| w.set_trim((trim_val & 0x3F) as u8));
51 } 42 }
52 } 43 }
53 #[cfg(any(rcc_u5, rcc_h50, rcc_h5))] 44 #[cfg(any(rcc_u5, rcc_h50, rcc_h5))]