aboutsummaryrefslogtreecommitdiff
path: root/embassy-stm32
diff options
context:
space:
mode:
authorLucas Granberg <[email protected]>2023-08-10 16:16:45 +0300
committerLucas Granberg <[email protected]>2023-08-10 16:16:45 +0300
commitbc156afbb2950ae073d0f271f26517cf16b35263 (patch)
tree4d8d6133648beb955ae4cf1542a13ec03ced2e3d /embassy-stm32
parent8d71fbd032f148fdeb96794c1f34b8a9c8a6abdf (diff)
fix rng ced toggling sequence on reset.
Diffstat (limited to 'embassy-stm32')
-rw-r--r--embassy-stm32/src/rng.rs11
1 files changed, 8 insertions, 3 deletions
diff --git a/embassy-stm32/src/rng.rs b/embassy-stm32/src/rng.rs
index 2a4978ec5..30816e436 100644
--- a/embassy-stm32/src/rng.rs
+++ b/embassy-stm32/src/rng.rs
@@ -73,15 +73,20 @@ impl<'d, T: Instance> Rng<'d, T> {
73 #[cfg(not(rng_v1))] 73 #[cfg(not(rng_v1))]
74 pub fn reset(&mut self) { 74 pub fn reset(&mut self) {
75 T::regs().cr().write(|reg| { 75 T::regs().cr().write(|reg| {
76 reg.set_rngen(false);
77 reg.set_condrst(true); 76 reg.set_condrst(true);
77 reg.set_nistc(pac::rng::vals::Nistc::CUSTOM);
78 // set RNG config "A" according to reference manual 78 // set RNG config "A" according to reference manual
79 // this has to be written within the same write access as setting the CONDRST bit 79 // this has to be written within the same write access as setting the CONDRST bit
80 reg.set_nistc(pac::rng::vals::Nistc::DEFAULT);
81 reg.set_rng_config1(pac::rng::vals::RngConfig1::CONFIGA); 80 reg.set_rng_config1(pac::rng::vals::RngConfig1::CONFIGA);
81 reg.set_clkdiv(pac::rng::vals::Clkdiv::NODIV);
82 reg.set_rng_config2(pac::rng::vals::RngConfig2::CONFIGA_B); 82 reg.set_rng_config2(pac::rng::vals::RngConfig2::CONFIGA_B);
83 reg.set_rng_config3(pac::rng::vals::RngConfig3::CONFIGA); 83 reg.set_rng_config3(pac::rng::vals::RngConfig3::CONFIGA);
84 reg.set_clkdiv(pac::rng::vals::Clkdiv::NODIV); 84 reg.set_ced(true);
85 reg.set_ie(false);
86 reg.set_rngen(true);
87 });
88 T::regs().cr().write(|reg| {
89 reg.set_ced(false);
85 }); 90 });
86 // wait for CONDRST to be set 91 // wait for CONDRST to be set
87 while !T::regs().cr().read().condrst() {} 92 while !T::regs().cr().read().condrst() {}