完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
问题描述:使能自动浅睡眠后,串口打印和接收均会时而出错时而正常,表现在乱码率高且串口解析数据错误率也极高。调用下面代码使能自动浅睡眠,屏蔽该函数串口正常。请问如何规避该问题,求指点迷津,谢谢您!
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 initn");#endif // CONFIG_PM_ENABLE return;} C:UsersLiKaiDesktopprintf.png |
|
相关推荐
1个回答
|
|
为了解决这个问题,您可以尝试以下几种方法:
1. **禁用自动浅睡眠**:如果您发现自动浅睡眠对串口通信产生了负面影响,您可以选择禁用它。在`sdkconfig`文件中,将`CONFIG_PM_ENABLE`设置为`n`。 2. **调整浅睡眠参数**:您可以尝试调整浅睡眠的参数,以减少对串口通信的影响。在`sdkconfig`文件中,您可以调整以下参数: - `CONFIG_PM_MAX_IDLE_TIME`:设置CPU在浅睡眠模式下的最大空闲时间。 - `CONFIG_PM_MIN_IDLE_TIME`:设置CPU在浅睡眠模式下的最小空闲时间。 3. **使用中断唤醒**:在某些情况下,您可能需要在特定条件下唤醒ESP32。您可以使用中断来实现这一点。例如,当串口接收到数据时,可以通过中断唤醒ESP32,以确保数据的正确接收。 4. **优化代码逻辑**:检查您的代码逻辑,确保在浅睡眠模式下,串口通信不会受到影响。例如,您可以在发送数据之前检查ESP32是否处于浅睡眠状态,如果是,则唤醒它并发送数据。 5. **使用其他通信方式**:如果串口通信在浅睡眠模式下仍然出现问题,您可以考虑使用其他通信方式,如SPI、I2C等,这些通信方式可能对浅睡眠模式的影响较小。 6. **升级ESP-IDF版本**:如果您使用的是ESP-IDF 4.4-dev版本,可能会存在一些已知的问题。您可以尝试升级到最新的稳定版本,以获取更好的性能和稳定性。 |
|
|
|
只有小组成员才能发言,加入小组>>
313 浏览 0 评论
1170 浏览 1 评论
585浏览 6评论
483浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
468浏览 5评论
467浏览 4评论
442浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 14:35 , Processed in 0.911305 second(s), Total 50, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号