完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我做了大量的测试,发现电源管理锁在ESP32中不生效,但是在ESP32S3中可以正常工作,我测试了IDF最新的代码(release/v5.1, release/v4.4)都是这样的情况。
我希望这不是IDF的Bug,但是我实在无法解决,请大佬们帮我看下,下面是我的代码: // 启动时 ```cpp void app_main() { esp_err_t ret = nvs_flash_init(); if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { ESP_ERROR_CHECK(nvs_flash_erase()); ret = nvs_flash_init(); } ESP_ERROR_CHECK(ret); #if CONFIG_PM_ENABLE # if CONFIG_IDF_TARGET_ESP32 esp_pm_config_esp32_t pm_config = { # elif CONFIG_IDF_TARGET_ESP32S2 esp_pm_config_esp32s2_t pm_config = { # elif CONFIG_IDF_TARGET_ESP32C3 esp_pm_config_esp32c3_t pm_config = { # elif CONFIG_IDF_TARGET_ESP32S3 esp_pm_config_esp32s3_t pm_config = { # endif .max_freq_mhz = CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ, .min_freq_mhz = 80, # if CONFIG_FREERTOS_USE_tiCKLESS_IDLE .light_sleep_enable = false # endif }; ESP_ERROR_CHECK(esp_pm_configure(&pm_config)); #endif } ``` 业务中加锁: ``` void somewhere(void) { static esp_pm_lock_handle_t rmt_send_task_pm_lock; ESP_ERROR_CHECK(esp_pm_lock_create(ESP_PM_CPU_FREQ_MAX, 0, "rmt_send_task", &rmt_send_task_pm_lock)); ESP_ERROR_CHECK(esp_pm_lock_acquire(rmt_send_task_pm_lock)); // ... 业务代码 ESP_ERROR_CHECK(esp_pm_lock_release(rmt_send_task_pm_lock)); } ``` |
|
相关推荐
1个回答
|
|
根据您提供的信息,您在ESP32上使用电源管理锁时遇到了问题,但在ESP32S3上可以正常工作。在分析问题之前,我们需要了解ESP32和ESP32S3之间的一些差异。ESP32S3是ESP32的升级版,具有更高的性能和更多的功能。因此,在某些情况下,ESP32S3可能具有更好的电源管理功能。
以下是一些可能导致电源管理锁在ESP32上不生效的原因: 1. **硬件差异**:ESP32和ESP32S3在硬件上可能存在差异,这可能导致电源管理锁在ESP32上不生效。例如,ESP32S3可能具有更好的电源管理硬件支持。 2. **软件版本**:您提到已经测试了IDF的release/v5.1和release/v4.4版本。尽管这些版本在ESP32S3上可以正常工作,但可能在ESP32上存在一些兼容性问题。建议您尝试使用其他版本的IDF,或者查看是否有针对ESP32的特定补丁或修复。 3. **电源管理锁的实现**:ESP32和ESP32S3可能使用不同的电源管理锁实现。这可能导致在ESP32上使用电源管理锁时出现问题。您可以查看ESP32和ESP32S3的电源管理锁实现,以确定是否存在差异。 4. **代码问题**:您提供的代码片段不完整,因此无法确定是否存在代码问题。请确保您的代码正确实现了电源管理锁的功能,并且没有遗漏任何关键步骤。 5. **其他因素**:可能还有其他因素导致电源管理锁在ESP32上不生效,例如电源供应不稳定、外部干扰等。 为了解决这个问题,您可以尝试以下方法: 1. **检查硬件**:确保您的ESP32硬件没有损坏或存在问题。 2. **更新软件**:尝试使用不同版本的IDF,或者查找是否有针对ESP32的特定补丁或修复。 3. **查看文档**:查阅ESP32和ESP32S3的官方文档,了解它们在电源管理方面的具体差异。 4. **寻求社区帮助**:在ESP32和ESP-IDF的社区论坛上寻求帮助,看看是否有其他开发者遇到了类似的问题,并了解他们是如何解决的。 5. **联系技术支持**:如果问题仍然无法解决,您可以联系ESP32的技术支持,向他们报告这个问题并寻求帮助。 希望这些建议能帮助您找到问题的原因并解决它。 |
|
|
|
只有小组成员才能发言,加入小组>>
140 浏览 0 评论
1158 浏览 1 评论
584浏览 6评论
482浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
467浏览 5评论
466浏览 4评论
441浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 16:54 , Processed in 1.037293 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号