【ESP32填坑日记】问题篇⑥ ESP32-C3低功耗问题

项目背景:

提示:本篇文章同样适用于ESP32其他型号的Bluetooth和WiFi下的功耗问题。

项目背景简述:

  1. 本项目需要在保证Bluetooth功能正常的前提下实现低功耗功能。
  2. 在项目开发中,遇到Demo板发热严重。Demo板只有普通Bluetooth通讯和CAN通讯功能,并无耗电太大的元器件。
  3. 经排除,确认发热是由ESP32-C3这颗MCU引起的,ESP32只使用了Bluetooth,并没有使用WiFi。

提示:本文默认读者已经阅读过官网文档中的睡眠模式应用程序示例

1. 官网对睡眠模式的介绍:

在这里插入图片描述
我们需要了解到以下内容:

  1. ESP32 具有 Light-sleep 和 Deep-sleep 两种睡眠节能模式。
  2. 在 Light-sleep 模式下,数字外设、CPU、以及大部分 RAM 都使用时钟门控,同时其供电电压降低。退出该模式后,数字外设、CPU 和 RAM 恢复运行,并且内部状态将被保留。
  3. 在 Deep-sleep 模式下,CPU、大部分 RAM、以及所有由时钟 APB_CLK 驱动的数字外设都会被断电。芯片上继续处于供电状态的部分仅包括:RTC 控制器、ULP 协处理器、RTC 高速内存、RTC 低速内存。
  4. 在 Light-sleep 和 Deep-sleep 模式下,无线外设会被断电。因此,在进入这两种睡眠模式前,应用程序必须调用恰当的函数(esp_bluedroid_disable()、esp_bt_controller_disable() 或 esp_wifi_stop())来禁用 Wi-Fi 和 Bluetooth。在 Light-sleep 或 Deep-sleep 模式下,即使不调用这些函数也无法连接 Wi-Fi 和 Bluetooth。
  5. 如需保持 Wi-Fi 和 Bluetooth 连接,请启用 Wi-Fi 和 Bluetooth Modem-sleep 模式和自动 Light-sleep 模式(请参阅电源管理 API)。在这两种模式下,Wi-Fi 和 Bluetooth 驱动程序发出请求时,系统将自动从睡眠中被唤醒,从而保持连接。

值得注意的是:
①在 Light-sleep 或 Deep-sleep 模式下,无法连接 Wi-Fi 和 Bluetooth。
②在power save(Modem-sleep 模式+自动 Light-sleep 模式)下,Wi-Fi 和 Bluetooth 驱动程序发出请求时,系统将自动从睡眠中被唤醒,另外,官网文档睡眠模式中提到的适用于 Light-sleep 的唤醒源也适用于 power save 模式(Modem-sleep 模式+自动 Light-sleep 模式)。
结合项目需要在需要在保证Bluetooth功能正常的前提下实现低功耗功能的需求,因此,选用power save(Modem-sleep 模式+自动 Light-sleep 模式)。

原因分析:

问题1:

在这里插入图片描述

如图分别对应 WiFi 和蓝牙的示例,蓝牙的示例虽然是 nimble,bluedroid 也是类似的配置。
应用代码中需要加这部分:#include “esp_pm.h”

#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_t pm_config ={
			.max_freq_mhz = CONFIG_EXAMPLE_MAX_CPU_FREQ_MHZ,
			.min_freg_mhz = CONFIG_EXAMPLE_MIN_CPU_FREQ_MHZ,
	#if CONFIG_FREERTOS_USE_TICKLESS_IDLE
			.light_sleep_enable = true;
	#endif
	};
	ESP_ERROR_CHECK( esp_pm_configure(&pm_config) );
#endif // CONFIG PM ENABLE

值得注意的是:
①使能 Light sleep 时,min_freq_mhz 为最小 CPU 频率 (MHz),即仅获取 ESP_PM_NO_LIGHT_SLEEP 锁后所使用的频率。
②未使能 Light sleep 时,min_freq_mhz 为释放所有电源管理锁或仅获取ESP_PM_NO_LIGHT_SLEEP锁后 CPU 的运行频率。

问题2:

提示:项目中LED全亮且亮度最大时,耗电40mA,在使用power save模式后并没有明显功耗降低的表现。在这里插入图片描述

经过查找官网发现,如果要实现蓝牙低功耗的话,需要外加一个 32KHz 晶振。参考 ESP32-C3 硬件设计指南

在这里插入图片描述
如果外接 32KHz 晶振的话,注意蓝牙低功耗时钟源需要设置为 32KHz 晶振。
在这里插入图片描述
此外,RTC 时钟源也要设置为 32KHz。
在这里插入图片描述


ESP32-C3是一款低功耗的Wi-Fi和蓝牙芯片,可以用于物联网设备的开发。当连接MQTT服务器时,可能会遇到连接失败的问题。 首先,我们需要检查连接失败的原因。可能的原因有以下几种: 1. Wi-Fi连接问题:确保ESP32-C3已经成功连接到了Wi-Fi网络,如果Wi-Fi密码错误或者信号不稳定,连接就会失败。可以检查一下Wi-Fi设置是否正确,也可以尝试重启路由器或者调整ESP32-C3的接收信号范围。 2. 服务器地址或端口错误:确认你使用的MQTT服务器地址和端口号是否正确,可以尝试用其他MQTT客户端工具连接同样的服务器,看是否也存在连接问题。 3. 鉴权问题:有些MQTT服务器需要用户名和密码进行鉴权,确保你提供的用户名和密码是正确的。 4. 安全连接问题:如果你的MQTT服务器需要安全连接(例如TLS/SSL),需要确认你的ESP32-C3是否支持安全连接,并且配置正确。可以查阅ESP32-C3的开发文档,了解如何配置安全连接。 在解决连接失败问题时,我们可以参考以下步骤: 1. 检查网络连接:确保Wi-Fi网络稳定,并且ESP32-C3已经成功连接到了网络。可以尝试使用其他设备连接同样的Wi-Fi网络,确认网络是否正常。 2. 检查服务器设置:验证MQTT服务器的地址和端口号是否正确,确认是否需要鉴权或者安全连接。 3. 检查代码配置:仔细检查你的代码,确保MQTT客户端配置正确。例如,确认你使用的MQTT库是否与ESP32-C3兼容,检查订阅和发布主题是否正确。 4. 调试连接过程:可以使用串口输出日志信息,观察连接过程中的错误提示。这些错误提示会给予我们一些关键信息,帮助我们定位问题所在。 如果以上步骤无法解决连接失败问题,我们可以查阅ESP32-C3的相关文档、搜索论坛或者咨询社区以获取更多帮助。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量子君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值