使用esp32驱动LCD屏发现帧率有点低,企图提高CPU频率来提高帧率,但是最后效果不好,默认就是160Mhz频率。但是网上修改ESP32的CPU时钟教程很少,故记录一下。
环境:ubuntu+idf(V4.1)+esp_tool(download)
一、查mcu手册
得寄存器如下,但idf又进行封装,不用直接配置寄存器

二、通过寄存器向上查接口
寄存器定义在esp-idf/components/soc/esp32/include/soc/rtc_cntl_reg.h,
往上一直查发现最后函数是esp-idf/components/esp_system/port/soc/esp32/clk.c 的“ __attribute__((weak)) void esp_clk_init(void)”。
代码如下
__attribute__((weak)) void esp_clk_init(void)
{
const uint32_t new_freq_mhz = CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ;
bool res = rtc_clk_cpu_freq_mhz_to_config(new_freq_mhz, &new_config);
rtc_clk_cpu_freq_set_config(&new_config);
}
可以看到CPU时钟设置值从CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ到new_freq_mhz到new_config,而CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ来自每个工程的sdkconfig文件。
但并未在idf.py menuconfig中找到相关选项,直接作文档修改也是有效的。
三、修改CPU时钟为240Mhz
sdkconfig相关内容如下
#
# ESP System Settings
#
# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y
# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240 is not set
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160
修改成如下即可
#
# ESP System Settings
#
# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set
# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160 is not set
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=240
四、结果测试
修改前后开机log如下:


LCD驱动效果有一丢丢的改善,并不是很明显,仍有卡顿的现象。
五、暮然回首
又查了一下idf.py menuconfig的设置项,设置位置在这。
