当前文档版本为 v0.9.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

Basic: Dynamic Frequency

1 功能概述

本例程是一个简单的演示动态切换主频的程序。

2 环境要求

  • Board: pan108xxa1_evb / pan108xxa3_evb / pan108xxb1_evb / pan108xxb5_evb

例程位置:zephyr\samples_panchip\basic\dynamic_freq

使用 ZAL 工具可以对其进行编译、烧录、打开 VS Code 调试等操作。关于 ZAL 工具的详细介绍请参考:Zephyr APP Launcher 工具介绍

3 演示说明

该演示程序首先默认主频通过xtl.overlay设置为48M,上电后首先切到为主频64M,每隔1秒输出一段log,输出5此,并且每段log是乱码这是因为主频切换成功了,**但是对接串口外设的分频系数并没有同步修改,所以此处打印为乱码,间接的也验证了主频成功切换;**然后再次切换默认主频48M,此时输出log正常,我们也可以看到不同主频的系统调度都是准时的:

[18:20:19.532]收←◆Try to load HW calibration data.. DONE.
- Chip Type         : 0x80
- Chip CP Version   : None
- Chip FT Version   : 1
- Chip MAC Address  : D0000A0007E9
*** Booting Zephyr OS build zephyr-v2.7.0
[18:20:20.539]收← <乱码>
[18:20:21.539]收← <乱码>
[18:20:22.540]收← <乱码>
[18:20:23.540]收← <乱码>
[18:20:24.542]收← app CPU @ 48000000Hz
Hello World on pan108xxb1_mesh_dongle in 48M
[18:20:25.542]收← Hello World on pan108xxb1_mesh_dongle in 48M
[18:20:26.543]收← Hello World on pan108xxb1_mesh_dongle in 48M
[18:20:27.544]收← Hello World on pan108xxb1_mesh_dongle in 48M
[18:20:28.545]收← Hello World on pan108xxb1_mesh_dongle in 48M
[18:20:29.545]收← <乱码>
[18:20:30.546]收← <乱码>
[18:20:31.546]收← <乱码>
[18:20:32.547]收← <乱码>
[18:20:33.548]收← <乱码>
[18:20:34.549]收← app CPU @ 48000000Hz
Hello World on pan108xxb1_mesh_dongle in 48M
[18:20:35.551]收← Hello World on pan108xxb1_mesh_dongle in 48M
[18:20:36.550]收← Hello World on pan108xxb1_mesh_dongle in 48M
[18:20:37.552]收← Hello World on pan108xxb1_mesh_dongle in 48M
[18:20:38.552]收← Hello World on pan108xxb1_mesh_dongle in 48M
[18:20:39.553]收← <乱码>
[18:20:40.554]收← <乱码>
[18:20:41.555]收← <乱码>
[18:20:42.554]收← <乱码>
[18:20:43.555]收← <乱码>
[18:20:44.557]收← app CPU @ 48000000Hz
Hello World on pan108xxb1_mesh_dongle in 48M
[18:20:45.558]收← Hello World on pan108xxb1_mesh_dongle in 48M
[18:20:46.559]收← Hello World on pan108xxb1_mesh_dongle in 48M
[18:20:47.559]收← Hello World on pan108xxb1_mesh_dongle in 48M

4 开发说明

  1. xtl.overlay文件的主频设置为48M:

    &dpll {
    	clock-mult = <3>; /* Can be 3 (48MHz) or 4 (64MHz) */
    	status = "okay";
    };
    
    &rcc {
    	clock-frequency-system = <DT_FREQ_M(48)>;
    	clocks = <&dpll &clk_xtl>;
    	clock-frequency-slow = <32768>;
    };
    
    
  2. 动态切换主频时建议默认主频为更低的主频,因为部分系统的参数是静态编译的,所以主频低的时候参数窗口会更大一点。

5 RAM/Flash资源使用情况

Memory region         Used Size  Region Size  %age Used
FLASH:       20356 B       256 KB      7.77%
SRAM:        4168 B        64 KB      6.36%