低功耗无线模块乐鑫官网ESP32-C3无线收发模块电源管理和低功耗优化,随着物联网产品的广泛应用,人们在日常生活中可以看到越来越多的物联网产品,如智能手表、智能插座、智能灯泡、智能音箱等。在这些各种各样的物联网产品中,一些物联网设备,由于使用电池供电或者能耗认证要求等原因,不得不考虑降低物联网设备的功耗。例如,在美国加利福尼亚州的能耗认证CEC Tile20规范中,要求智能灯泡的设备待机功耗不能高于0.2W。智能手表在使用电池供电的同时也希望有更长的工作时间。低功耗无线模块乐鑫官网ESP32-C3无线收发模块在这类的物联网产品的开发过程中,开发者就需要在产品开发时将功耗作为重要的考虑因素,要尽大可能利用芯片的特性并结合应用逻辑来降低产品的整体功耗。这需要开发者十分了解所用芯片的功耗特性,并能在实际的物联网工程中熟练使用相关的芯片。这就要求在开发过程中,在通信协议方面,低功耗无线模块乐鑫官网ESP32-C3无线收发模块必须使用功耗更低的无线通信技术,如 Bluetooth LE;在电路实现方面,则必须采用低功耗设计。
在低功耗场景中,平均电流往往决定了电池供电设备的使用寿命,以及能否通过能耗认证。而平均电流取决于不同级别低功耗模式的电流、运行状态下的工作电流、进入或退出低功耗模式的时间和CPU处理能力等方面。ESP32-C3在低功耗场景中也有对应的芯片级支持ESP32-C3采用了先进的电源管理技术,并能在不同的功耗模式之间进行切换,低功耗无线模块乐鑫官网ESP32-C3无线收发模块同时还提供了智能化的低功耗外设,以减少CPU唤醒次数,从而进一步降低整体功耗。
ESP32-C3电源管理,ESP-IDF中集成了电源管理功能,该功能允许系统根据应用程序的需求,调整外围总线(APB)频率、CPU频率,并配置芯片自动进入 Light-sleep 模式。低功耗无线模块乐鑫官网ESP32-C3无线收发模块芯片在空闲时可自动进入Light-sleep模式,能够尽可能地减少应用程序运行的功耗。ESP32-C3 的各种低功耗模式将在 12.2节中详细讨论。此外,启用电源管理功能将会增加中断延迟,中断延迟的增加与多个因素有关,如CPU频率、是否需要进行频率切换等。
应用程序具有获取/释放电源管理锁以控制电源管理运行的能力。当应用程序获取电源管理锁时,电源管理算法操作会受到限制。当电源管理锁被释放时,这些限制就被移除了。低功耗无线模块乐鑫官网ESP32-C3无线收发模块电源管理锁具有获取/释放计数器,如果电源管理锁已被多次获取,则需要释放相同的次数,以消除相关限制。
电源管理锁 描述
ESP_PM CPU_FREO MAX 请求CPU频率为esp_pm_configure()函数中设置的大值。对于ESP32-C3,该值可以设置为40MHz、80MHz或160MHZ
ESP_PM_APB_FREO_MAX 请求APB频率保持大频率。对于ESP32-C3,大频率是80MHz
ESP_PM_NO_LIGHT_SLEEP 禁止自动切换到Light-sleep模式
应用程序可以通过获取或释放电源管理锁的方式,以适应不需要电源管理的场景。例如,对从APB 获得时钟的外设,其驱动可以要求在使用该外设时,将APB 频率设置为80MHZ:操作系统可以要求 CPU 在有任务准备开始时以高频率运行:一些外设可能需要中断才能启用,因此其驱动程序也会要求禁用 Light-sleep 模式。因为请求较高的APB 频率或CPU 频率,以及禁用 Light-sleep 模式会增加功耗,所以在低功耗无线模块乐鑫官网ESP32-C3无线收发模块实际应用中,应当将使用电源管理锁的时间降到小。
动态调频,当启用电源管理功能后,外围总线 (APB) 频率和CPU 频率可能会在运行过程中发生改变,这被称为动态调频(Dynamic Frequency Scaling,DFS)。启用电源管理后,动态调频也随之启用,APB频率可在一个RTOS 滴答周期内被多次更改。有些外设在正常运行时不受APB频率变化的影响,但有些外设可能会出现问题。例如,Timer Group 外设定时器会继续计数,但定时器计数的速度将随 APB 频率的变化而变化。所以在开发中,读者应该了解哪些外设会受到动态调频的影响,哪些外设不会受到动态调频的影响。低功耗无线模块乐鑫官网ESP32-C3无线收发模块随着 ESP-IDF 开发的不断完善,一些外设驱动程序也不会受到动态调频的影响。
下面的外设在使用特定的时钟源时不会受到动态调频的影响:
(1)UART。如果使用 REE_TICK 作为时钟源,则UART 不会受到动态调频的影响;使用其他时钟源时,将会受到动态调频的影响。
(2)LEDC。如果使用 REF_TICK 作为时钟源,则 LEDC 不会受到动态调频的影响;使用其他时钟源时,将会受到动态调频的影响。
(3)RMT。如果使用 REE_TICK 或者 XTAL 作为时钟源则RMT 不会受到动态调频的影响。
目前以下外设驱动程序不会受到动态调频的影响,低功耗无线模块乐鑫官网ESP32-C3无线收发模块外设驱动程序会在数据传输期间使用ESP_PM APB EREQ MAX 电源管理锁,并在数据传输完成后释放该电源管理锁,无须应用程序单独获取电源管理锁。
(1)SPI主机。
(2) I2C。
(3)I2S(如果使用APLL时钟,则12S会获取ESP_PM_NO_LIGHT_SLEEP 电源管理锁)。
(4)SPI从机。从调用 spi slave initialize()函数到调用spi_slave_free()函数期间不会受到动态调频的影响。
(5)Wi-Fi。从调用esp wifistart()数到调用esp_wifi_stop()函数期间不会受到动态调频的影响。如果启用了 Wi-Fi的 Modem-sleep 模式,则芯片在射频模块关闭时将释放ESPPMAPBFREQMAX 电源管理锁。
(6)TWAI。从调用twai driver install()函数到调用twai_driver_uninstall()函数期间不会受到动态调频的影响。
(7)Bluetooth。从调用esp bt controller enable()函数到调用esp_bt_controllerdisable()函数期间不会受到动态调频的影响。低功耗无线模块乐鑫官网ESP32-C3无线收发模块如果启用了 Bluetooth的Modem-sleep 模式则芯片在射频模块关闭时将释放 ESP PMAPBEREQ MAX 电源管理锁,但依然占用ESP_PM_NO_LIGHT SLEEP 电源管理锁,除非CONFIG BTDM CTRL LOW_POWER CLOCK选择的是32kHz的外部晶体振荡器。
以下外设驱动程序会受到动态调频的影响,因此需要在应用程序中添加代码完成获取或释放电源管理锁的操作:
(1) PCNT。
(2) Sigma-delta。
(3)Timer Group。