ESP32-C3FN4 硬件调试-反复重启报 BROWNOUT_RST

ESP32-C3FN4 硬件调试

最近做了一块ESP32-C3FN4 的最小系统板子,焊接完成之后发现在开启WIFI之后会反复重启,串口启动报出来 BROWNOUT_RST 的问题,暂时还没有找到解决方案,在此做一下相关记录。
查询相关资料,对 BROWNOUT_RST 的解释是说由于供电不足导致的。
我在最小系统板子上面用的 LP2922A-3.3V 的LDO,这个 LDO 我也在其他的ESP32 板子上面使用过,没有出现过类似的问题。
ESP32-C3FN4 支持通过内置的 USB-CDC的虚拟串口方式烧写程序,在进入烧写模式之后,是能够正常下载程序到flash中的,但是一旦程序中开启WIFI,就不能正常工作了,相关的报错如下。
现在正在做进一步的验证,发现在不适用板载的LDO 给ESP32-C3供电的情况下,使用外置的3.3V电源给芯片供电,也是会出现同样的问题。

rst:0xf (BROWNOUT_RST),boot:0x8 (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DOUT, clock div:1
load:0x3fcd6100,len:0x38c
load:0x403ce000,len:0x6ac
load:0x403d0000,len:0x24e4
entry 0x403ce000
ESP-ROM:esp32c3-api1-20210207
Build:Feb  7 2021
rst:0xf (BROWNOUT_RST),boot:0x8 (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DOUT, clock div:1
load:0x3fcd6100,len:0x38c
load:0x403ce000,len:0x6ac
load:0x403d0000,len:0x24e4
entry 0x403ce000
ESP-ROM:esp32c3-api1-20210207
Build:Feb  7 2021
rst:0xf (BROWNOUT_RST),boot:0x8 (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DOUT, clock div:1
load:0x3fcd6100,len:0x38c
load:0x403ce000,len:0x6ac
load:0x403d0000,len:0x24e4
entry 0x403ce000
ESP-ROM:esp32c3-api1-20210207
Build:Feb  7 2021
rst:0xf (BROWNOUT_RST),boot:0x8 (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DOUT, clock div:1
load:0x3fcd6100,len:0x38c
load:0x403ce000,len:0x6ac
load:0x403d0000,len:0x24e4
entry 0x403ce000
ESP-ROM:esp32c3-api1-20210207
Build:Feb  7 2021
rst:0xf (BROWNOUT_RST),boot:0x8 (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DOUT, clock div:1
load:0x3fcd6100,len:0x38c
load:0x403ce000,len:0x6ac
load:0x403d0000,len:0x24e4
entry 0x403ce000
### ESP32-C3 BROWNOUT_RST 复位原因 当电源电压下降到低于正常工作范围时,ESP32-C3会触发低电平复位(Brownout Reset)。这种现象通常发生在供电不稳定或电池电量不足的情况下。为了防止因瞬态低压引起的系统崩溃,硬件设计中包含了自动检测机制,在检测到电压过低时立即重启设备以保护内部状态[^1]。 具体来说,BROWNOUT_RESET是由片上监控电路监测VDD_3P3_CPU电压水平而产生的中断信号所引发的。一旦该值降至预设阈值之下,默认情况下大约为2.7伏特左右,就会激活这一过程并执行相应的恢复动作[^2]。 ### 解决方案 #### 调整 Brownout 阈值 可以通过修改`CONFIG_ESP_BROWNOUT_DET_LVL`配置项来调整brownout检测级别。较低级别的设定可以减少不必要的重置事件发生频率,但这可能会增加数据丢失的风险。因此建议仅在必要时才更改此参数,并充分测试其影响。 ```c // 修改 brownout 检测等级 #define CONFIG_ESP_BROWNOUT_DET_LVL 0 // 默认值, 不推荐轻易改动 ``` #### 启用 Deep Sleep 功能 启用深度睡眠模式可以在长时间待机期间显著降低功耗,从而避免由于电流消耗过大而导致的瞬间掉压问题。进入deep sleep之前应保存重要数据至非易失性存储器中,以便唤醒后能够继续未完成的任务处理流程。 ```c #include "esp_sleep.h" void enter_deep_sleep(uint64_t time_in_us){ esp_err_t err = esp_sleep_enable_timer_wakeup(time_in_us); if (err != ESP_OK) { printf("Failed to enable timer wakeup\n"); return; } // 进入深睡前可选操作... printf("Entering deep sleep...\n"); esp_light_sleep_start(); } ``` #### 使用外部稳压源 对于那些对稳定性有较高要求的应用场景而言,采用高质量的外接DC-DC转器或者LDO线性调节器作为主要供电方式不失为一种有效的方法。这些组件能够在输入波动较大时维持输出稳定不变,进而保障MCU始终处于最佳性能区间内运作。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

飘雪冰峰

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

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

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

打赏作者

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

抵扣说明:

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

余额充值