System Clocks for both cores are not correctly set (NUCLEO-H755ZI-Q board)
Hi guys, I recently posted similar question but now I have some actual measurements.
I have measured the frequency of the clock signal comming from st link to microcontroller which was 8 MHz (correct). Then I did setup of prescalers, configure system clocks source etc. The code is following for the 480MHz setup of CPU1 and 240MHz for CPU2.
MODIFY_REG(PWR->CR3, (PWR_CR3_SMPSLEVEL | PWR_CR3_SMPSEXTHP | PWR_CR3_SMPSEN | PWR_CR3_LDOEN | PWR_CR3_BYPASS), PWR_CR3_LDOEN);
MODIFY_REG(PWR->D3CR, PWR_D3CR_VOS, (PWR_D3CR_VOS_0 | PWR_D3CR_VOS_1));
SET_BIT(RCC->CR, RCC_CR_HSEBYP);
SET_BIT(RCC->CR, RCC_CR_HSEON);
while(READ_BIT(RCC->CR, RCC_CR_HSERDY) != (RCC_CR_HSERDY));
MODIFY_REG(RCC->PLLCKSELR, RCC_PLLCKSELR_PLLSRC, RCC_PLLCKSELR_PLLSRC_HSE);
SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVP1EN);
SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_DIVQ1EN);
MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL1RGE, (uint32_t)(0x00000003) << RCC_PLLCFGR_PLL1RGE_Pos);
MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLL1VCOSEL, (uint32_t)(0x00000000U) << RCC_PLLCFGR_PLL1VCOSEL_Pos);
MODIFY_REG(RCC->PLLCKSELR, RCC_PLLCKSELR_DIVM1, 1 << RCC_PLLCKSELR_DIVM1_Pos);
MODIFY_REG(RCC->PLL1DIVR, RCC_PLL1DIVR_N1, (120-1UL) << RCC_PLL1DIVR_N1_Pos);
MODIFY_REG(RCC->PLL1DIVR, RCC_PLL1DIVR_P1, (2-1UL) << RCC_PLL1DIVR_P1_Pos);
MODIFY_REG(RCC->PLL1DIVR, RCC_PLL1DIVR_Q1, (20-1UL) << RCC_PLL1DIVR_Q1_Pos);
MODIFY_REG(RCC->PLL1DIVR, RCC_PLL1DIVR_R1, (2-1UL) << RCC_PLL1DIVR_R1_Pos);
SET_BIT(RCC->CR, RCC_CR_PLL1ON);
while (READ_BIT(RCC->CR, RCC_CR_PLL1RDY) != (RCC_CR_PLL1RDY));
MODIFY_REG(RCC->D1CFGR, RCC_D1CFGR_HPRE, RCC_D1CFGR_HPRE_DIV2);
MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, RCC_CFGR_SW_PLL1);
MODIFY_REG(RCC->D1CFGR, RCC_D1CFGR_D1CPRE, RCC_D1CFGR_D1CPRE_DIV1);
MODIFY_REG(RCC->D1CFGR, RCC_D1CFGR_HPRE, RCC_D1CFGR_HPRE_DIV2);
MODIFY_REG(RCC->D2CFGR, RCC_D2CFGR_D2PPRE1, RCC_D2CFGR_D2PPRE1_DIV2);
MODIFY_REG(RCC->D2CFGR, RCC_D2CFGR_D2PPRE2, RCC_D2CFGR_D2PPRE2_DIV2);
MODIFY_REG(RCC->D1CFGR, RCC_D1CFGR_D1PPRE, RCC_D1CFGR_D1PPRE_DIV2);
MODIFY_REG(RCC->D3CFGR, RCC_D3CFGR_D3PPRE, RCC_D3CFGR_D3PPRE_DIV2);After disabling interrupts I did measurement with oscilloscope by triggering pin in main loop ( high and low ), with some counter values to not have on ouptut 480MHz. The frequency of the CPU1 was around 1.38MHz. Then I also did the same think for systick and frequency matched the core one (1.38MHz). Is this even possible to get such a low frequency from the system?
Thanks a lot for every answer and advice!
