5.6. 应用示例

5.6.1. 12M时钟来源选择

gx_clk_src_set_12m(0); //来自芯片内部RC12M
gx_clk_src_set_12m(1); //来自管脚输入

5.6.2. DTO计算

DTO输出频率必须小于等于其输入频率 dto = (输出频率 * (1 << 25) / + 输入频率/2) / 输入频率

5.6.3. DTO配置

以配置UART0 DTO输出24.576MHz为例, 以下两种方法二选一即可

    unsigned int dto =(unsigned int)(((unsigned long long) pll_freq * (1<<25) + pll_freq/2) / pll_freq);
    gx_clk_mod_set_dto(GX_CLK_MOD_UART0, dto, 1);
    gx_clk_mod_set_dto_out(GX_CLK_MOD_UART0, 24760000, 1);

5.6.4. DIV配置

以配置UART0 DIV 2分频为例

gx_clk_mod_set_div(GX_HAL_CLK_MOD_UART0, 2);

5.6.5. GATE配置

以配置UART0 开关时钟gate为例

gx_clk_mod_set_gate(GX_CLK_MOD_UART0, 0);// 关闭Gate
gx_clk_mod_set_gate(GX_CLK_MOD_UART0, 1);// 开启Gate

5.6.6. MUX配置

以配置UART0 时钟选择来源为例

gx_hal_clk_mod_set_src(GX_CLK_MOD_UART0, GX_HAL_CLK_MOD_SRC_12M);// 选择时钟源为12M

gx_hal_clk_mod_set_src(GX_CLK_MOD_UART0, GX_HAL_CLK_MOD_SRC_PLL);// 选择时钟源为PLL

Audio模块有更多的时钟来源选择

GX_CLK_MOD_AUD_SYS_DTO_OUT0
GX_CLK_MOD_AUD_SYS_DTO_OUT1
GX_CLK_MOD_AUD_SYS_I2S_MCLK
GX_CLK_MOD_AUD_SYS_PDM