HELP!ESP32-WROOM esp-idf4.4-dev 使能自动浅睡眠串口打印部分乱码

butterfly
Posts: 13
Joined: Thu Sep 23, 2021 5:45 am

HELP!ESP32-WROOM esp-idf4.4-dev 使能自动浅睡眠串口打印部分乱码

Postby butterfly » Wed Oct 20, 2021 9:27 am

问题描述:使能自动浅睡眠后,串口打印和接收均会时而出错时而正常,表现在乱码率高且串口解析数据错误率也极高。调用下面代码使能自动浅睡眠,屏蔽该函数串口正常。请问如何规避该问题,求指点迷津,谢谢您!

Code: Select all

void pm_auto_light_sleep_init(void)
{
#if CONFIG_PM_ENABLE
        // Configure dynamic frequency scaling:
        // maximum and minimum frequencies are set in sdkconfig,
        // automatic light sleep is enabled if tickless idle support is enabled.
        esp_pm_config_esp32_t pm_config = {
                .max_freq_mhz = CONFIG_EXAMPLE_MAX_CPU_FREQ_MHZ,    /* 最大CPU时钟频率 */
                .min_freq_mhz = CONFIG_EXAMPLE_MIN_CPU_FREQ_MHZ,    /* 没有频率锁定时使用的最小CPU频率 */
#if CONFIG_FREERTOS_USE_TICKLESS_IDLE
                .light_sleep_enable = true      /* 如果启用了无滴答空闲支持,则会启用自动浅睡眠 */
#endif
        };
        ESP_ERROR_CHECK( esp_pm_configure(&pm_config) );
        
        deb_print(DBG_SOCK, "pm init\n");
#endif // CONFIG_PM_ENABLE
		
    return;
}
[img]C:\Users\LiKai\Desktop\printf.png[/img]

butterfly
Posts: 13
Joined: Thu Sep 23, 2021 5:45 am

Re: HELP!ESP32-WROOM esp-idf4.4-dev 使能自动浅睡眠串口打印部分乱码

Postby butterfly » Mon Oct 25, 2021 1:12 am

暂时已解决。
问题分析,查看自动浅睡眠的函数,看到有检测芯片类型,就想到了之前使用过的idf.py set-target esp32。
因为我的工程是从window复制到虚拟机,除第一次使用idf.py set-target esp32,后面就没使用该指令了,就直接编译的,后面使用了该指令,编译后未出现串口打印乱码的问题。

butterfly
Posts: 13
Joined: Thu Sep 23, 2021 5:45 am

Re: HELP!ESP32-WROOM esp-idf4.4-dev 使能自动浅睡眠串口打印部分乱码

Postby butterfly » Mon Oct 25, 2021 11:49 am

串口打印乱码又出来咯,之前是idf.py menuconfig没配置使能低功耗。唉!!!

butterfly
Posts: 13
Joined: Thu Sep 23, 2021 5:45 am

Re: HELP!ESP32-WROOM esp-idf4.4-dev 使能自动浅睡眠串口打印部分乱码

Postby butterfly » Tue Oct 26, 2021 6:05 am

UART:如果 REF_TICK 用作时钟源,则 UART 不受 APB 频率变更影响。请查看 uart_config_t 中的 use_ref_tick。
按照上述文档描述操作,不打印乱码了,但是串口接收不连续了,比如AT+TEST,串口先收到AT,然后收到+TEST。解析出来是错误的。

Who is online

Users browsing this forum: Bing [Bot] and 35 guests