CMU 配置
4 Dec 2024
Read time: 1 minute(s)
CMU 是每个系统的必需模块,因此 CMU 驱动默认会被编译进系统,不需要在 scons --menuconfig 菜单中进行使能。
在 Luban-Lite 中,需在板级初始化和模块驱动初始化时配置系统时钟。CMU 模块配置包括以下几个方面:
系统 Clock 配置
在板级初始化阶段,时钟配置主要涉及系统时钟和部分模块时钟,可选择以下任意一种方式进行配置:
-
通过 scons --menuconfig 菜单进行配置。
-
通过修改源文件中的参数,源文件路径为 luban-lite\target\$chip\$board\sys_clk.c。代码示例如下:
struct aic_sysclk aic_sysclk_config[] = { {1200000000, CLK_PLL_INT1}, {491520000, CLK_PLL_FRA1}, {840000000, CLK_PLL_FRA2}, {240000000, CLK_AXI0}, {240000000, CLK_AHB0}, {100000000, CLK_APB0}, {24000000, CLK_APB1}, {600000000, CLK_CPU}, {25000000, CLK_OUT2}, #ifdef AIC_USING_UART0 {48000000, CLK_UART0}, #endif } void aic_board_sysclk_init(void) { uint32_t i = 0; // 设置时钟频率 for (i=0; i<sizeof(aic_sysclk_config)/sizeof(struct aic_sysclk); i++) { hal_clk_set_freq(aic_sysclk_config[i].clk_id, aic_sysclk_config[i].freq); } }
模块 Clock 配置
部分模块的时钟配置是在模块驱动初始化过程中进行的。例如,在 PWM
模块的初始化阶段,时钟配置代码如下:
int hal_pwm_init(void)
{
// 设置时钟频率
hal_clk_set_freq(CLK_PWM, PWM_CLK_RATE);
// 使能时钟
hal_clk_enable(CLK_PWM);
}
模块 Reset 配置
模块放开复位一般在驱动初始化中操作,复位配置有两种方式:
-
和时钟一起操作,使能时钟的同时放开复位。例如:
// 使能时钟 & 放开复位 hal_clk_enable_deassertrst(CLK_PWM);
-
单独操作,独立的放开复位。例如:
// 放开复位 hal_reset_deassert(RESET_PWM);