bf0_hal_rcc.h

Defines

RCC_MOD_TYPE_HPSYS
RCC_MOD_TYPE_LPSYS
RCC_MOD_TYPE_SECU1
RCC_MOD_TYPE_OFF_POS
RCC_MOD_TYPE_OFF_MSK
RCC_MOD_TYPE_GROUP_POS
RCC_MOD_TYPE_GROUP_MSK
RCC_MOD_TYPE_SUBSYS_POS
RCC_MOD_TYPE_SUBSYS_MSK
RCC_MAKE_MOD_TYPE(subsys, group, off)
RCC_GET_OFF_FROM_MOD_TYPE(type)
RCC_GET_GROUP_FROM_MOD_TYPE(type)
RCC_GET_SUBSYS_FROM_MOD_TYPE(type)
CORE_ID_DEFAULT
CORE_ID_HCPU

HCPU

CORE_ID_LCPU

LCPU

CORE_ID_CURRENT
RCC_SYSCLK_HRC48
RCC_SYSCLK_HXT48
RCC_SYSCLK_CLK_HRC100
RCC_SYSCLK_DBL96
RCC_SYSCLK_DLL1
RCC_CLK_FLASH_SYSCLK
RCC_CLK_SRC_SYS
RCC_CLK_SRC_DLL1
RCC_CLK_SRC_DLL2
RCC_CLK_SRC_DLL3
RCC_CLK_FLASH_DLL2
RCC_CLK_FLASH_DLL3
RCC_CLK_PSRAM_SYSCLK
RCC_CLK_PSRAM_DLL2
RCC_CLK_PSRAM_DLL3
RCC_CLK_PERI_HRC48
RCC_CLK_PERI_HXT48
RCC_CLK_I2S_SYSCLK
RCC_CLK_I2S_DLL2
RCC_CLK_MPI_SD_SYSCLK
RCC_CLK_MPI_SD_DLL2
RCC_CLK_MPI_SD_DLL3
RCC_CLK_MOD_SYS
RCC_CLK_MOD_FLASH1
RCC_CLK_MOD_FLASH2
RCC_CLK_MOD_FLASH3
RCC_CLK_MOD_PSRAM1
RCC_CLK_MOD_PSRAM2
RCC_CLK_MOD_PSRAM
RCC_CLK_MOD_SDMMC
RCC_CLK_MOD_HP_PERI
RCC_CLK_MOD_LP_PERI
RCC_CLK_TICK_CLK_LP
RCC_CLK_TICK_HRC48
RCC_CLK_TICK_HXT48
RCC_MOD_I2S_ALL
HAL_RCC_HCPU_reset(modules, reset)

Reset RCC module for HCPU.

Parameters:
  • modules – modules to be reset, defined in hpsys_rcc.h, HPSYS_RCC_RSTR_XXX

  • reset – 1: reset(bit set), 0:Release reset(bit clear).

Return values:

None

HAL_RCC_HCPU_reset2(modules, reset)
HAL_RCC_HCPU_enable(modules, enabled)

enable/disable RCC module for HCPU.

Parameters:
  • modules – modules to be enabled/disabled. defined in hpsys_rcc.h, HPSYS_RCC_ENR_XXX

  • enabled – 1: enable(bit set), 0:disable(bit clear).

Return values:

None

HAL_RCC_HCPU_enable2(modules, enabled)
HAL_RCC_HCPU_RELEASE_ALL()

Release all HPSYS modules.

Return values:

None

HAL_RCC_LCPU_reset(modules, reset)

Reset RCC module for LCPU.

Parameters:
  • modules – modules to be reset, defined in lpsys_rcc.h, LPSYS_RCC_RSTR_XXX

  • reset – 1: reset(bit set), 0:Release reset(bit clear).

Return values:

None

HAL_RCC_LCPU_RELEASE_ALL()

Release all LPSYS modules.

Return values:

void

HAL_RCC_LCPU_enable(modules, enabled)

enable/disable RCC module for LCPU.

Parameters:
  • modules – modules to be enabled/disabled. defined in lpsys_rcc.h, LPSYS_RCC_ENR_XXX

  • enabled – 1: enable(bit set), 0:disable(bit clear).

Return values:

None

HAL_RCC_LCPU_enable2(modules, enabled)
HAL_RCC_LCPU_ClockSelectDBL96()

LPSYS clock source switch to DBL96.

Return values:

None

HAL_RCC_BCPU_reset(modules)

Reset RCC module for BCPU.

Parameters:
  • modules – modules to be reset, defined in ble_rcc.h, BLE_RCC_RSTR_XXX

Return values:

None

HAL_RCC_BCPU_enable(modules, enabled)

enable/disable RCC module for BCPU.

Parameters:
  • modules – modules to be enabled/disabled. defined in ble_rcc.h, BLE_RCC_ENR_XXX

  • enabled – 1: enable(bit set), 0:disable(bit clear).

Return values:

None

HAL_RCC_BCPU_ClockSelect(clk_module, src)

Select clock source for BCPU HW module.

Parameters:
  • clk_module – module for clock

  • src – clock 0:RCC_SYSCLK_HRC48, 1:RCC_SYSCLK_HXT48

Return values:

None

Functions

void HAL_RCC_HCPU_ClockSelect(int clk_module, int src)

Select clock source for HCPU HW module.

Parameters:
  • clk_module – module for clock, RCC_CLK_MOD_XXX

  • src – clock source.

Return values:

None

int HAL_RCC_HCPU_GetClockSrc(int clk_module)

Get clock source of HCPU HW module.

Parameters:
  • clk_module – module for clock, RCC_CLK_MOD_XXX

Return values:

clock – source,

void HAL_RCC_HCPU_SetDiv(int div, int pdiv1, int pdiv2)

Set divider for clock of HCPU.

Parameters:
  • div – main divider HCLK=HPCLK/div

  • pdiv1 – divider for pclk1= HCLK/ (2^PDIV1) default 1

  • pdiv2 – divider for pclk2= HCLK/ (2^PDIV2) default 5

Return values:

None

void HAL_RCC_HCPU_GetDiv(int *div, int *pdiv1, int *pdiv2)

Get divider for clock of HCPU.

Parameters:
  • div – pointer to main divider, HCLK=HPCLK/div

  • pdiv1 – pointer to divider for pclk1= HCLK/ (2^PDIV1) default 1

  • pdiv2 – pointer to divider for pclk2= HCLK/ (2^PDIV2) default 5

Return values:

None

HAL_StatusTypeDef HAL_RCC_HCPU_EnableDLL1(uint32_t freq)

Enable DLL1.

Parameters:
  • freq – Freqency of DLL1

Return values:

HAL_OK – if successful, Otherwise HAL_ERROR

HAL_StatusTypeDef HAL_RCC_HCPU_DisableDLL1(void)

Disable DLL1.

Return values:

HAL_OK – if successful, Otherwise HAL_ERROR

uint32_t HAL_RCC_HCPU_GetDLL1Freq(void)

Get DLL1 freqency.

Return values:

Frequency – of DLL1, 0 if not enabled

HAL_StatusTypeDef HAL_RCC_HCPU_EnableDLL2(uint32_t freq)

Enable DLL2.

Parameters:
  • freq – Freqency of DLL2

Return values:

HAL_OK – if successful, Otherwise HAL_ERROR

HAL_StatusTypeDef HAL_RCC_HCPU_DisableDLL2(void)

Disable DLL2.

Return values:

HAL_OK – if successful, Otherwise HAL_ERROR

uint32_t HAL_RCC_HCPU_GetDLL2Freq(void)

Get DLL2 freqency.

Return values:

Frequency – of DLL2, 0 if not enabled

uint32_t HAL_RCC_HCPU_GetDLL3Freq(void)
HAL_StatusTypeDef HAL_RCC_HCPU_EnableDLL3(uint32_t freq)

Enable DLL3.

Parameters:
  • freq – Freqency of DLL3

Return values:

HAL_OK – if successful, Otherwise HAL_ERROR

HAL_StatusTypeDef HAL_RCC_HCPU_DisableDLL3(void)

Disable DLL3.

Return values:

HAL_OK – if successful, Otherwise HAL_ERROR

void HAL_RCC_LCPU_ClockSelect(int clk_module, int src)

Select clock source for LCPU HW module.

Parameters:
  • clk_module – module for clock, RCC_CLK_MOD_XXX

  • src – clock 0:RCC_SYSCLK_HRC48, 1:RCC_SYSCLK_HXT48

Return values:

None

int HAL_RCC_LCPU_GetClockSrc(int clk_module)

Get clock source of LCPU HW module.

Parameters:
  • clk_module – module for clock, RCC_CLK_MOD_XXX

Return values:

clock – source,

void HAL_RCC_LCPU_SetDiv(int div, int pdiv1, int pdiv2)

Set divider for clock of LCPU.

Parameters:
  • div – main divider HCLK=LPCLK/div

  • pdiv1 – divider for pclk1= HCLK/ (2^PDIV1) default 1

  • pdiv2 – divider for pclk2= HCLK/ (2^PDIV2) default 3

Return values:

None

void HAL_RCC_LCPU_GetDiv(int *div, int *pdiv1, int *pdiv2)

Get divider for clock of LCPU.

Parameters:
  • div – pointer to hclk divider

  • pdiv1 – pointer to pclk1 divider

  • pdiv2 – pointer to pclk2 divider

Return values:

None

void HAL_RCC_BCPU_SetDiv(int div, int pdiv, int macdiv, int macfreq)

Set divider for clock of BCPU.

Parameters:
  • div – main divider HCLK=BLECLK(48M)/div

  • pdiv – divider for pclk, HCLK not divided; 100 - HCLK divided by 2; 101 - divided by 4; 110 - divided by 8; 111 - divided by 16

  • macdiv – divider for MACCLK = HCLK / MACDIV

  • macfreq – frequency of BLE MAC master clock

Return values:

None

uint32_t HAL_RCC_GetHCLKFreq(int core_id)

Get HCLK freq.

Parameters:
  • core_id – Core ID

Return values:

HCLK – Frequency for Core ID

uint32_t HAL_RCC_GetSysCLKFreq(int core_id)

Get SYSCLK freq.

Parameters:
  • core_id – Core ID,

Return values:

SYSCLK – Frequency for Core ID

uint32_t HAL_RCC_GetPCLKFreq(int core_id, int is_pclk1)

Get PCLK freq.

Parameters:
  • core_id – Core ID

  • is_pclk1 – 1: Get pclk1, 0: not PCLK1

Return values:

PCLK – freq for specific CORE.

void HAL_RCC_ReleaseLCPU(void)

Release LCPU.

Return values:

void

void HAL_RCC_ResetLCPU(void)

Reset LCPU.

Return values:

void

void HAL_RCC_Reset_and_Halt_LCPU(uint8_t is_init)

Reset and halt LCPU.

Parameters:
  • is_init – Is in init state.

Return values:

void

void HAL_RCC_ResetBluetoothRF(void)

Reset BLE RF.

Return values:

void

void HAL_RCC_SetMacFreq(void)

Set Mac freq.

Return values:

void

void HAL_RCC_ResetModule(RCC_MODULE_TYPE module)

Reset module.

Parameters:
  • module – module name

Return values:

void

void HAL_RCC_EnableModule(RCC_MODULE_TYPE module)

Enable module if it’s disabled.

If module is already enabled, it has no effect

Parameters:
  • module – module name

Return values:

void

void HAL_RCC_DisableModule(RCC_MODULE_TYPE module)

Disable module.

If module is already disabled, it has no effect

Parameters:
  • module – module name

Return values:

void

bool HAL_RCC_IsModuleEnabled(RCC_MODULE_TYPE module)

Check if module is enabled.

Parameters:
  • module – module name

Return values:
  • true – module is enabled

  • false – module is not enabled

Returns:

whether module is enabled

HAL_StatusTypeDef HAL_RCC_CalibrateRC48(void)

Calibrate RC48.

Must be called after XTAL48 is ready

Return values:

HAL_OK – if successful, Otherwise HAL_ERROR

HAL_StatusTypeDef HAL_RCC_SetModuleFreq(RCC_MODULE_TYPE module, uint32_t freq)
uint32_t HAL_RCC_GetModuleFreq(RCC_MODULE_TYPE module)
void HAL_RCC_Init(void)

RCC Init.

Disable some modules by default. If the function is called by HCPU, HPSYS_RCC is configured and HPSYS modules are disabled. If the function is called by LCPU, LPSYS_RCC is configured and LPSYS modules are disabled.

Returns:

void

void HAL_RCC_MspInit(void)

Chip specific RCC initialization function.

It’s called by HAL_RCC_Init. It’s implemented as weak symbol internally, so can be re-implemented by user as required.

Returns:

void

void HAL_RCC_HCPU_SetDeepWFIDiv(int8_t div, int8_t pdiv1, int8_t pdiv2)

Set divider for clock of HCPU in deep WFI mode.

Parameters:
  • div – main divider HCLK=HPCLK/div

  • pdiv1 – divider for pclk1= HCLK/ (2^PDIV1) default 1

  • pdiv2 – divider for pclk2= HCLK/ (2^PDIV2) default 5

Return values:

None

void HAL_RCC_HCPU_GetDeepWFIDiv(int *div, int *pdiv1, int *pdiv2)

Get deepWFI divider for HCPU clock.

Parameters:
  • div – pointer to main divider, HCLK=HPCLK/div

  • pdiv1 – pointer to divider for pclk1= HCLK/ (2^PDIV1) default 1

  • pdiv2 – pointer to divider for pclk2= HCLK/ (2^PDIV2) default 5

Return values:

None

void HAL_RCC_HCPU_DeepWFIClockSelect(bool sys_clk, uint32_t sys_clk_src)

Select clock source for HCPU in deep WFI mode.

Parameters:
  • sys_clk – whether use sys clock, true: use sys clock, false: use LP clock

  • sys_clk_src – sys clock source, such as RCC_SYSCLK_HXT48

Return values:

None

HAL_StatusTypeDef HAL_RCC_HCPU_ConfigHCLK(uint32_t freq_in_mhz)

Config HPSYS HCLK.

If freq is greater than 48MHz, DLL1 would be used as SYSCLK. If freq is less than or equal to 48MHz, all DLLs except DLL1 should be disabled before calling this function, DLL1 would be disabled in this function automatically.

Parameters:
  • freq_in_mhz – Frequency in MHz

Return values:

HAL_OK – if successful, Otherwise HAL_ERROR

HAL_StatusTypeDef HAL_RCC_HCPU_ConfigHCLKByMode(uint32_t freq_in_mhz, HPSYS_DvfsModeTypeDef mode)

Config HPSYS HCLK by DVFS mode.

Parameters:
  • freq_in_mhz – Frequency in MHz

  • mode – DVFS mode

Return values:

HAL_OK – if successful, Otherwise HAL_ERROR

HPSYS_DvfsModeTypeDef HAL_RCC_HCPU_GetCurrentDvfsMode(void)

Get HPSYS current DVFS mode.

Returns:

dvfs mode