BUG: STM32Cube_FW_H5_V1.3.0 - HAL_RCCEx_GetPLL2ClockFreq() reports incorrect frequency when FRACN mode enabled.
HAL_RCCEx_GetPLL2ClockFreq() computes the frequency of the three outputs of PLL2. When PLL2 is in Fractional N mode it reports wildly inaccurate frequencies which can affect the setup of other peripherals like the SPI/I2S port.
The problem is that the PLL2 code seems to have been ported from another PLL without correcting bit positions. The pll2fracen variable contains the value of the RCC_PLLCFGR_PLL2FRACEN and is used to multiply another value by 0 or 1, but it has not been shifted down to bit position 0, so the multiplication ends up scaling incorrectly.
line 2986 of stm32h5xx_hal_rcc_ex.c reads as
pll2fracen = RCC->PLL2CFGR & RCC_PLL2CFGR_PLL2FRACEN;
but should be
pll2fracen = (RCC->PLL2CFGR & RCC_PLL2CFGR_PLL2FRACEN) >> RCC_PLL2CFGR_PLL2FRACEN_Pos;
Hope that helps.
Eric
