完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我是目前在Arduino环境下使用ESP32C3,并且试图完全将其作为一颗普通的MCU使用而无需其蓝牙与WiFi功能。
但是遇到一个问题,似乎ESP32C3内部是默认定期启动其射频单元的,从测试时间来看大概每隔4s启动一次,并持续工作2s,一个典型的验证方案是我在loop函数中设置了一个在端口20设置了一个每隔10ms发送一次方波,未开启其它任何功能,结果绝大多数方波间隔都是1ms,但是每隔2s会出现一次方波间隔为14ms,说明该间隔期间内芯片启动了其它进程导致多用了4ms。该进程的发生会导致2s内工作电流的上升,和ADC出现一定的不稳定,因此我希望将其彻底关闭,猜测该进程WiFi或者蓝牙的激活扫描,但是我是用 WiFi.disconnect(true)和WiFi.mode(WIFI_OFF)指令后,该周期性进程依然存在,并且会影响到我的其它功能。 请问有什么办法可以再Arduino中彻底关闭蓝牙与WiFi呢,防止其定期启动影响其它功能呢? 跪求各位大佬的帮忙! |
|
相关推荐
1个回答
|
|
要彻底关闭ESP32C3内部的WiFi和蓝牙功能,您可以尝试以下方法:
1. 关闭WiFi和蓝牙硬件: 在Arduino代码中,您可以使用以下函数来关闭WiFi和蓝牙硬件: ```cpp WiFi.mode(WIFI_OFF); esp_bt_controller_disable(); ``` 这将关闭WiFi和蓝牙功能,但不会完全禁用射频单元。 2. 禁用射频单元: 要完全禁用射频单元,您需要使用ESP-IDF的API。首先,确保您已经安装了ESP-IDF。然后,在Arduino代码中,添加以下代码: ```cpp #include "esp_wifi.h" #include "esp_bt.h" void setup() { // 关闭WiFi和蓝牙硬件 WiFi.mode(WIFI_OFF); esp_bt_controller_disable(); // 禁用射频单元 esp_wifi_stop(); esp_wifi_deinit(); esp_bt_controller_disable(); esp_bt_controller_deinit(); } ``` 这将关闭WiFi和蓝牙硬件,并禁用射频单元。 3. 优化电源管理: 为了进一步降低功耗,您可以使用ESP32C3的低功耗模式。在Arduino代码中,添加以下代码: ```cpp #include "soc/soc.h" #include "driver/rtc_cntl.h" void setup() { // ...(之前的代码) // 优化电源管理 esp_sleep_enable_ext0_wakeup((1ULL << 20), ESP_EXT0_WAKEUP_ANY_HIGH); rtc_CNTL_sleep_pd_config(RTC_CNTL_PD_ALL); } void loop() { // ...(之前的代码) esp_light_sleep_start(); } ``` 这将使ESP32C3在空闲时进入低功耗模式。 请注意,这些方法可能不完全消除射频单元的周期性启动,但它们将显著降低功耗和对ADC稳定性的影响。如果问题仍然存在,您可能需要考虑使用其他MCU,或者联系ESP32C3的制造商以获取更多支持。 |
|
|
|
只有小组成员才能发言,加入小组>>
172个成员聚集在这个小组
加入小组430 浏览 1 评论
1293 浏览 1 评论
598浏览 6评论
496浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
481浏览 5评论
476浏览 4评论
462浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-12 13:01 , Processed in 0.961156 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号