问题描述
最近在用ESP32做一个智能小车控制器,发现在加入wifi功能后烧后串口总是报错,然后板子会不断的重启。报错内容如下:
rst:0xc (SW_CPU_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:10944
load:0x40080400,len:6388
entry 0x400806b4
0x3ffb1f68
PCM audio MJPEG video start
Brownout detector was triggered
前面一大堆我没看懂,但是”Brownout detector was triggered“这句倒是引起了注意,意思就是触发了断电检测。那这个肯定就是电源不稳定引起的。google了一下,也确实如此。大概就是说PC的usb供电不稳定,然后产生的压降不足以支撑wifi的功耗,所以每次电压降到低压检测设定的值以后就会重启。
那怎么解决呢?
两个办法:
一、临时办法:
在EPS32中添加以下代码:
#include "soc/soc.h"
#include "soc/rtc_cntl_reg.h"
void setup(){
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //关闭断电检测
这个办法就是简单粗暴啦,直接不检测自然就是不会重启啦。但这肯定不是长久之计,就像你失去了痛觉,别人拿刀子戳你一下你没感觉,但是你还是会流血。这里只是关闭了检测让程序一直往下跑下去,但是你又怎么知道不稳定的电压会不会带来其它问题。
二、长久办法:
更换电源。什么意思呢?就是说你这个东西既然是压降导致的,那你要想办法提供足够的电压。像这种3.3V的MCU一般前面都要有个3.3V的LDO,然后再前面会加一个反短接/倒灌的二极管,然后再接到5v或者其它电源。那像假如你就是只能供出5V,或者4.2v的锂电,那你要怎么办?你只能选一个好一点的低压差的LDO了,毕竟压差0.5V和压差1.5V差别还是挺大的。文章来源:https://www.toymoban.com/news/detail-817076.html
最后,祝各位出现bug的兄弟们好运!!!文章来源地址https://www.toymoban.com/news/detail-817076.html
到了这里,关于ESP32报错:Brownout detector was triggered的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!