bf0_hal_rcc.h

Header file of RCC HAL module.

Author

Sifli software development team

Attention

Defines

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.

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

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

返回值:

None

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

enable/disable RCC module for HCPU.

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

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

返回值:

None

HAL_RCC_HCPU_enable2(modules, enabled)
HAL_RCC_HCPU_RELEASE_ALL()

Release all HPSYS modules.

返回值:

None

HAL_RCC_LCPU_reset(modules, reset)

Reset RCC module for LCPU.

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

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

返回值:

None

HAL_RCC_LCPU_RELEASE_ALL()

Release all LPSYS modules.

返回值:

void

HAL_RCC_LCPU_enable(modules, enabled)

enable/disable RCC module for LCPU.

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

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

返回值:

None

HAL_RCC_LCPU_enable2(modules, enabled)
HAL_RCC_LCPU_ClockSelectDBL96()

LPSYS clock source switch to DBL96.

返回值:

None

HAL_RCC_BCPU_reset(modules)

Reset RCC module for BCPU.

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

返回值:

None

HAL_RCC_BCPU_enable(modules, enabled)

enable/disable RCC module for BCPU.

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

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

返回值:

None

HAL_RCC_BCPU_ClockSelect(clk_module, src)

Select clock source for BCPU HW module.

参数:
  • clk_module – module for clock

  • src – clock 0:RCC_SYSCLK_HRC48, 1:RCC_SYSCLK_HXT48

返回值:

None

Enums

enum RCC_MODULE_TYPE

Values:

enumerator RCC_MOD_DMAC1
enumerator RCC_MOD_DMAC2
enumerator RCC_MOD_DMAC3
enumerator RCC_MOD_MAILBOX1
enumerator RCC_MOD_MAILBOX2
enumerator RCC_MOD_PINMUX1
enumerator RCC_MOD_PINMUX2
enumerator RCC_MOD_USART1
enumerator RCC_MOD_USART2
enumerator RCC_MOD_USART3
enumerator RCC_MOD_USART4
enumerator RCC_MOD_USART5
enumerator RCC_MOD_USART6
enumerator RCC_MOD_EZIP
enumerator RCC_MOD_RESERVED
enumerator RCC_MOD_EPIC
enumerator RCC_MOD_LCDC1
enumerator RCC_MOD_LCDC2
enumerator RCC_MOD_I2S1
enumerator RCC_MOD_I2S2
enumerator RCC_MOD_I2S3
enumerator RCC_MOD_SYSCFG1
enumerator RCC_MOD_SYSCFG2
enumerator RCC_MOD_EFUSEC
enumerator RCC_MOD_AES
enumerator RCC_MOD_CRC1
enumerator RCC_MOD_TRNG
enumerator RCC_MOD_GPTIM1
enumerator RCC_MOD_GPTIM2
enumerator RCC_MOD_GPTIM3
enumerator RCC_MOD_GPTIM4
enumerator RCC_MOD_GPTIM5
enumerator RCC_MOD_BTIM1
enumerator RCC_MOD_BTIM2
enumerator RCC_MOD_BTIM3
enumerator RCC_MOD_BTIM4
enumerator RCC_MOD_SPI1
enumerator RCC_MOD_SPI2
enumerator RCC_MOD_SPI3
enumerator RCC_MOD_SPI4
enumerator RCC_MOD_EXTDMA
enumerator RCC_MOD_NNACC1
enumerator RCC_MOD_NNACC2
enumerator RCC_MOD_PDM1
enumerator RCC_MOD_PDM2
enumerator RCC_MOD_I2C1
enumerator RCC_MOD_I2C2
enumerator RCC_MOD_I2C3
enumerator RCC_MOD_I2C4
enumerator RCC_MOD_I2C5
enumerator RCC_MOD_I2C6
enumerator RCC_MOD_I2C7
enumerator RCC_MOD_DSIHOST
enumerator RCC_MOD_DSIPHY
enumerator RCC_MOD_DSI
enumerator RCC_MOD_PTC1
enumerator RCC_MOD_PTC2
enumerator RCC_MOD_GPIO1
enumerator RCC_MOD_GPIO2
enumerator RCC_MOD_MPI1
enumerator RCC_MOD_MPI2
enumerator RCC_MOD_MPI3
enumerator RCC_MOD_MPI4
enumerator RCC_MOD_MPI5
enumerator RCC_MOD_SDMMC1
enumerator RCC_MOD_SDMMC2
enumerator RCC_MOD_USBC
enumerator RCC_MOD_BUSMON1
enumerator RCC_MOD_BUSMON2
enumerator RCC_MOD_BUSMON3
enumerator RCC_MOD_ATIM1
enumerator RCC_MOD_ATIM2
enumerator RCC_MOD_FFT1
enumerator RCC_MOD_FFT2
enumerator RCC_MOD_FACC1
enumerator RCC_MOD_FACC2
enumerator RCC_MOD_CAN1
enumerator RCC_MOD_CAN2
enumerator RCC_MOD_AUDCODEC_HP
enumerator RCC_MOD_AUDCODEC_LP
enumerator RCC_MOD_AUDPRC
enumerator RCC_MOD_GPU
enumerator RCC_MOD_JENC
enumerator RCC_MOD_JDEC
enumerator RCC_MOD_ACPU
enumerator RCC_MOD_TSEN
enumerator RCC_MOD_LPCOMP
enumerator RCC_MOD_SDADC
enumerator RCC_MOD_GPADC
enumerator RCC_MOD_PATCH
enumerator RCC_MOD_MAC
enumerator RCC_MOD_PHY
enumerator RCC_MOD_RFC
enumerator RCC_MOD_CRC2
enumerator RCC_MOD_SCI
enumerator RCC_MOD_SECU1
enumerator RCC_MOD_SECU2
enumerator RCC_MOD_AUDCODEC
enum HPSYS_DvfsModeTypeDef

Values:

enumerator HPSYS_DVFS_MODE_D0
enumerator HPSYS_DVFS_MODE_D1
enumerator HPSYS_DVFS_MODE_S0
enumerator HPSYS_DVFS_MODE_S1
enumerator HPSYS_DVFS_MODE_NUM
enum LPSYS_DvfsModeTypeDef

Values:

enumerator LPSYS_DVFS_MODE_D
enumerator LPSYS_DVFS_MODE_S
enumerator LPSYS_DVFS_MODE_NUM

Functions

void HAL_RCC_HCPU_ClockSelect(int clk_module, int src)

Select clock source for HCPU HW module.

参数:
  • clk_module – module for clock, RCC_CLK_MOD_XXX

  • src – clock source.

返回值:

None

int HAL_RCC_HCPU_GetClockSrc(int clk_module)

Get clock source of HCPU HW module.

参数:
  • clk_module – module for clock, RCC_CLK_MOD_XXX

返回值:

clock – source,

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

Set divider for clock of HCPU.

参数:
  • div – main divider HCLK=HPCLK/div

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

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

返回值:

None

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

Get divider for clock of HCPU.

参数:
  • 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

返回值:

None

HAL_StatusTypeDef HAL_RCC_HCPU_EnableDLL1(uint32_t freq)

Enable DLL1.

参数:
  • freq – Freqency of DLL1

返回值:

HAL_OK – if successful, Otherwise HAL_ERROR

HAL_StatusTypeDef HAL_RCC_HCPU_DisableDLL1(void)

Disable DLL1.

返回值:

HAL_OK – if successful, Otherwise HAL_ERROR

uint32_t HAL_RCC_HCPU_GetDLL1Freq(void)

Get DLL1 freqency.

返回值:

Frequency – of DLL1, 0 if not enabled

HAL_StatusTypeDef HAL_RCC_HCPU_EnableDLL2(uint32_t freq)

Enable DLL2.

参数:
  • freq – Freqency of DLL2

返回值:

HAL_OK – if successful, Otherwise HAL_ERROR

HAL_StatusTypeDef HAL_RCC_HCPU_DisableDLL2(void)

Disable DLL2.

返回值:

HAL_OK – if successful, Otherwise HAL_ERROR

uint32_t HAL_RCC_HCPU_GetDLL2Freq(void)

Get DLL2 freqency.

返回值:

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.

参数:
  • freq – Freqency of DLL3

返回值:

HAL_OK – if successful, Otherwise HAL_ERROR

HAL_StatusTypeDef HAL_RCC_HCPU_DisableDLL3(void)

Disable DLL3.

返回值:

HAL_OK – if successful, Otherwise HAL_ERROR

void HAL_RCC_LCPU_ClockSelect(int clk_module, int src)

Select clock source for LCPU HW module.

参数:
  • clk_module – module for clock, RCC_CLK_MOD_XXX

  • src – clock 0:RCC_SYSCLK_HRC48, 1:RCC_SYSCLK_HXT48

返回值:

None

int HAL_RCC_LCPU_GetClockSrc(int clk_module)

Get clock source of LCPU HW module.

参数:
  • clk_module – module for clock, RCC_CLK_MOD_XXX

返回值:

clock – source,

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

Set divider for clock of LCPU.

参数:
  • div – main divider HCLK=LPCLK/div

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

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

返回值:

None

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

Get divider for clock of LCPU.

参数:
  • div – pointer to hclk divider

  • pdiv1 – pointer to pclk1 divider

  • pdiv2 – pointer to pclk2 divider

返回值:

None

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

Set divider for clock of BCPU.

参数:
  • 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

返回值:

None

uint32_t HAL_RCC_GetHCLKFreq(int core_id)

Get HCLK freq.

参数:
  • core_id – Core ID

返回值:

HCLK – Frequency for Core ID

uint32_t HAL_RCC_GetSysCLKFreq(int core_id)

Get SYSCLK freq.

参数:
  • core_id – Core ID,

返回值:

SYSCLK – Frequency for Core ID

uint32_t HAL_RCC_GetPCLKFreq(int core_id, int is_pclk1)

Get PCLK freq.

参数:
  • core_id – Core ID

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

返回值:

PCLK – freq for specific CORE.

void HAL_RCC_ReleaseLCPU(void)

Release LCPU.

返回值:

void

void HAL_RCC_ResetLCPU(void)

Reset LCPU.

返回值:

void

void HAL_RCC_Reset_and_Halt_LCPU(uint8_t is_init)

Reset and halt LCPU.

参数:
  • is_init – Is in init state.

返回值:

void

void HAL_RCC_ResetBluetoothRF(void)

Reset BLE RF.

返回值:

void

void HAL_RCC_SetMacFreq(void)

Set Mac freq.

返回值:

void

void HAL_RCC_ResetModule(RCC_MODULE_TYPE module)

Reset module.

参数:
  • module – module name

返回值:

void

void HAL_RCC_EnableModule(RCC_MODULE_TYPE module)

Enable module if it’s disabled.

If module is already enabled, it has no effect

参数:
  • module – module name

返回值:

void

void HAL_RCC_DisableModule(RCC_MODULE_TYPE module)

Disable module.

If module is already disabled, it has no effect

参数:
  • module – module name

返回值:

void

HAL_StatusTypeDef HAL_RCC_CalibrateRC48(void)

Calibrate RC48.

Must be called after XTAL48 is ready

返回值:

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.

返回:

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.

返回:

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.

参数:
  • div – main divider HCLK=HPCLK/div

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

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

返回值:

None

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

Get deepWFI divider for HCPU clock.

参数:
  • 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

返回值:

None

void HAL_RCC_HCPU_DeepWFIClockSelect(bool sys_clk, uint32_t sys_clk_src)

Select clock source for HCPU in deep WFI mode.

参数:
  • 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

返回值:

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.

参数:
  • freq_in_mhz – Frequency in MHz

返回值:

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.

参数:
  • freq_in_mhz – Frequency in MHz

  • mode – DVFS mode

返回值:

HAL_OK – if successful, Otherwise HAL_ERROR

HPSYS_DvfsModeTypeDef HAL_RCC_HCPU_GetCurrentDvfsMode(void)

Get HPSYS current DVFS mode.

返回:

dvfs mode