Question
Nucleo-H563ZI PLL1 won't lock in
Hey all,
i need to use the Rust Programming Language. Now i want to enable the PLL to increase the system srequency.
I'm using the "stm32h5" crate (https://crates.io/crates/stm32h5).
let dp = stm32h563::Peripherals::take().unwrap(); // Setup handler for device peripherals
let rcc = dp.RCC;
dp.FLASH.acr().write(|w| unsafe {
w.latency().bits(5);
w.prften().set_bit()
});
dp.PWR.voscr().write(|w| w.vos().bits(0b11)); //VOS scale 1
while dp.PWR.vossr().read().vosrdy().bit() != true {}
dp.ICACHE.cr().write(|w| w.en().set_bit());
rcc.cr().write(|w| w.hsebyp().set_bit());
rcc.cr().write(|w| w.hseon().set_bit()); //Enable High speed external clock 8 MHz
while rcc.cr().read().hserdy().bit_is_clear() {}
rcc.cr().write(|w| w.hseext().set_bit());
//PLL1
rcc.cr().write(|w| w.pll1on().clear_bit());
while rcc.cr().read().pll1rdy().bit_is_set() {}
rcc.pll1cfgr().write(|w| w.pll1src().bits(0b11)); //HSI as PLL1 source
rcc.pll1cfgr().write(|w| unsafe { w.pll1m().bits(4) }); //'16' for HSI
rcc.pll1divr()
.write(|w| unsafe { w.pll1n().bits(249).pll1p().bits(1).pll1q().bits(1) }); //250 MHz
rcc.pll1fracr().write(|w| w.pll1fracn().bits(0));
rcc.pll1cfgr().write(|w| w.pll1fracen().set_bit());
rcc.pll1cfgr().write(|w| w.pll1rge().bits(0b01)); //input frequency range 2 MHz to 4 MHz
rcc.pll1cfgr().write(|w| w.pll1vcosel().clear_bit()); //output frequency wide VCO range
rcc.pll1cfgr().write(|w| w.pll1pen().set_bit());
rcc.pll1cfgr().write(|w| w.pll1qen().set_bit());
rcc.cr().write(|w| w.pll1on().set_bit());
while rcc.cr().read().pll1rdy().bit_is_clear() {} //Stuck here
Does anybody know, what i'm doing wrong? Coudn't find any solutions so far.
Thanks
