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
-
enumerator RCC_MOD_DMAC1
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