diff options
Diffstat (limited to 'embassy-stm32/src')
| -rw-r--r-- | embassy-stm32/src/rng.rs | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/embassy-stm32/src/rng.rs b/embassy-stm32/src/rng.rs index 312f343b9..63654639e 100644 --- a/embassy-stm32/src/rng.rs +++ b/embassy-stm32/src/rng.rs | |||
| @@ -99,13 +99,19 @@ impl<'d, T: Instance> Rng<'d, T> { | |||
| 99 | }); | 99 | }); |
| 100 | // wait for CONDRST to be set | 100 | // wait for CONDRST to be set |
| 101 | while !T::regs().cr().read().condrst() {} | 101 | while !T::regs().cr().read().condrst() {} |
| 102 | // magic number must be written immediately before every read or write access to HTCR | 102 | |
| 103 | T::regs().htcr().write(|w| w.set_htcfg(pac::rng::vals::Htcfg::MAGIC)); | 103 | // TODO for WBA6, the HTCR reg is different |
| 104 | // write recommended value according to reference manual | 104 | #[cfg(not(rng_wba6))] |
| 105 | // note: HTCR can only be written during conditioning | 105 | { |
| 106 | T::regs() | 106 | // magic number must be written immediately before every read or write access to HTCR |
| 107 | .htcr() | 107 | T::regs().htcr().write(|w| w.set_htcfg(pac::rng::vals::Htcfg::MAGIC)); |
| 108 | .write(|w| w.set_htcfg(pac::rng::vals::Htcfg::RECOMMENDED)); | 108 | // write recommended value according to reference manual |
| 109 | // note: HTCR can only be written during conditioning | ||
| 110 | T::regs() | ||
| 111 | .htcr() | ||
| 112 | .write(|w| w.set_htcfg(pac::rng::vals::Htcfg::RECOMMENDED)); | ||
| 113 | } | ||
| 114 | |||
| 109 | // finish conditioning | 115 | // finish conditioning |
| 110 | T::regs().cr().modify(|reg| { | 116 | T::regs().cr().modify(|reg| { |
| 111 | reg.set_rngen(true); | 117 | reg.set_rngen(true); |
