Help needed - New ESP32 PICO D4.1 design continously looping with RTCWDT_RTC_RESET
Posted: Sun Dec 02, 2018 6:51 am
Hi,
I have a new board design based on the ESP32 PICO v4.1 development board and while I can program it, it goes into endless reboots at the end of the programming. I'm also fairly new to ESP32 having used a number of modules successfully but this is my first board design. Any hints on what else to look for would be very much appreciated as I'm stuck at this point having spent hours troubleshooting.
As this is a new board I suspect the issue is one of 4 possible issues:
- Error in the schematic. I triple checked the schematic for the D4.1 board and everything is the same as this reference design.
- Faulty soldering / components. Have made 2 of these boards, being very careful with the build (good PCB, using a stencil, solder paste, hot air station) and they both exhibit the same symptoms, so its unlikely to be a solder short/open circuit the PICO QFN pins
- Incorrect configuration. This I'm not sure about, I have selected the defaults in MENUCONFIG and the Arduino settings, its possible I'm missing a configuration setting that isn't default for the PICO. I need help here to identify any specific configuration I should be making in Arduino config or MENUCONFIG for the PICO D4.
- Bad power supply. I'm using a switching regulator to get a bit more efficiency compare to a LDO. On an oscilloscope the power traces are rock solid, no glitches or harmonics. I'm also using a USB cable that works with the other ESP32 modules I have.
A couple of points about the board:
- IO12 is open circuit (pull down for flash power 3.3v) as per PICO datasheet
- I have ceramic 10uf / 0.1uf caps close to the pins for decoupling but even if these were bad the PICO has internal power supply decoupling as well.
- None of the IO pins have significant current drain (the LCD backlight uses a transistor buffer).
- The board seems to program fine, with no errors on the console while flashing, so I'm assuming the PICO hasn't had problems with board assembly (eg. shorts on the pins).
- I tried IDF and Arduino to flash, doesn't make a difference
- In Arduino I tried a number of different boards in the Arduino tools settings, didn't make a difference (default tried was ESP32 PICO kit)
- The ESP32 does not get warm
- Tried erasing the flash from the IDF command line, no difference
- I only have a LCD connected and it was working fine with the same pins in a prototype using a WROOM module. These IO lines are used: 23, 18, 32, 5
- EN line is stable high when viewing on an oscilloscope
----------------------------
Code
void setup() {
// put your setup code here, to run once:
Serial.println("Init code");
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("In the loop");
}
------------------------------
Programmer settings (Arduino)
Board: ESP32 Dev Module (also tried ESP32 PICO Kit)
Upload speed: 115200
Flash frequency: 40Mhz
Flash mode: DIO
Flash size: 4Mb
-----------------------------
Console output during flashing
Sketch uses 174900 bytes (13%) of program storage space. Maximum is 1310720 bytes.
Global variables use 13340 bytes (4%) of dynamic memory, leaving 314340 bytes for local variables. Maximum is 327680 bytes.
esptool.py v2.5.0
Serial port COM8
Connecting....
Chip is ESP32-PICO-D4 (revision 1)
Features: WiFi, BT, Dual Core, Embedded Flash, VRef calibration in efuse
MAC: d8:a0:1d:64:ad:8c
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 5957.9 kbit/s)...
Hash of data verified.
Compressed 13696 bytes to 8946...
Writing at 0x00001000... (100 %)
Wrote 13696 bytes (8946 compressed) at 0x00001000 in 0.8 seconds (effective 138.5 kbit/s)...
Hash of data verified.
Compressed 175040 bytes to 92345...
Writing at 0x00010000... (16 %)
Writing at 0x00014000... (33 %)
Writing at 0x00018000... (50 %)
Writing at 0x0001c000... (66 %)
Writing at 0x00020000... (83 %)
Writing at 0x00024000... (100 %)
Wrote 175040 bytes (92345 compressed) at 0x00010000 in 8.2 seconds (effective 171.8 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 144...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (144 compressed) at 0x00008000 in 0.0 seconds (effective 1293.5 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
------------------------------
Serial port output (Arduino or IDF doesn't make a difference). Below is the output of the serial terminal after a reset.
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 188777542, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:8488
load:0x40078000,len:10788
load:0x40080400,len:6832
entry 0x40080798
D (76) bootloader_flash: mmu set block paddr=0x00000000 (was 0xffffffff)[0m
ets Jun 8 2016 00:22:57
rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 188777542, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:8488
load:0x40078000,len:10788
load:0x40080400,len:6832
entry 0x40080798
D (77) bootloader_flash: mmu set block paddr=0x00000000 (was 0xffffffff)[0m
ets Jun 8 2016 00:22:57
(the second block repeats every 500mSec)
I have a new board design based on the ESP32 PICO v4.1 development board and while I can program it, it goes into endless reboots at the end of the programming. I'm also fairly new to ESP32 having used a number of modules successfully but this is my first board design. Any hints on what else to look for would be very much appreciated as I'm stuck at this point having spent hours troubleshooting.
As this is a new board I suspect the issue is one of 4 possible issues:
- Error in the schematic. I triple checked the schematic for the D4.1 board and everything is the same as this reference design.
- Faulty soldering / components. Have made 2 of these boards, being very careful with the build (good PCB, using a stencil, solder paste, hot air station) and they both exhibit the same symptoms, so its unlikely to be a solder short/open circuit the PICO QFN pins
- Incorrect configuration. This I'm not sure about, I have selected the defaults in MENUCONFIG and the Arduino settings, its possible I'm missing a configuration setting that isn't default for the PICO. I need help here to identify any specific configuration I should be making in Arduino config or MENUCONFIG for the PICO D4.
- Bad power supply. I'm using a switching regulator to get a bit more efficiency compare to a LDO. On an oscilloscope the power traces are rock solid, no glitches or harmonics. I'm also using a USB cable that works with the other ESP32 modules I have.
A couple of points about the board:
- IO12 is open circuit (pull down for flash power 3.3v) as per PICO datasheet
- I have ceramic 10uf / 0.1uf caps close to the pins for decoupling but even if these were bad the PICO has internal power supply decoupling as well.
- None of the IO pins have significant current drain (the LCD backlight uses a transistor buffer).
- The board seems to program fine, with no errors on the console while flashing, so I'm assuming the PICO hasn't had problems with board assembly (eg. shorts on the pins).
- I tried IDF and Arduino to flash, doesn't make a difference
- In Arduino I tried a number of different boards in the Arduino tools settings, didn't make a difference (default tried was ESP32 PICO kit)
- The ESP32 does not get warm
- Tried erasing the flash from the IDF command line, no difference
- I only have a LCD connected and it was working fine with the same pins in a prototype using a WROOM module. These IO lines are used: 23, 18, 32, 5
- EN line is stable high when viewing on an oscilloscope
----------------------------
Code
void setup() {
// put your setup code here, to run once:
Serial.println("Init code");
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("In the loop");
}
------------------------------
Programmer settings (Arduino)
Board: ESP32 Dev Module (also tried ESP32 PICO Kit)
Upload speed: 115200
Flash frequency: 40Mhz
Flash mode: DIO
Flash size: 4Mb
-----------------------------
Console output during flashing
Sketch uses 174900 bytes (13%) of program storage space. Maximum is 1310720 bytes.
Global variables use 13340 bytes (4%) of dynamic memory, leaving 314340 bytes for local variables. Maximum is 327680 bytes.
esptool.py v2.5.0
Serial port COM8
Connecting....
Chip is ESP32-PICO-D4 (revision 1)
Features: WiFi, BT, Dual Core, Embedded Flash, VRef calibration in efuse
MAC: d8:a0:1d:64:ad:8c
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 5957.9 kbit/s)...
Hash of data verified.
Compressed 13696 bytes to 8946...
Writing at 0x00001000... (100 %)
Wrote 13696 bytes (8946 compressed) at 0x00001000 in 0.8 seconds (effective 138.5 kbit/s)...
Hash of data verified.
Compressed 175040 bytes to 92345...
Writing at 0x00010000... (16 %)
Writing at 0x00014000... (33 %)
Writing at 0x00018000... (50 %)
Writing at 0x0001c000... (66 %)
Writing at 0x00020000... (83 %)
Writing at 0x00024000... (100 %)
Wrote 175040 bytes (92345 compressed) at 0x00010000 in 8.2 seconds (effective 171.8 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 144...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (144 compressed) at 0x00008000 in 0.0 seconds (effective 1293.5 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
------------------------------
Serial port output (Arduino or IDF doesn't make a difference). Below is the output of the serial terminal after a reset.
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 188777542, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:8488
load:0x40078000,len:10788
load:0x40080400,len:6832
entry 0x40080798
D (76) bootloader_flash: mmu set block paddr=0x00000000 (was 0xffffffff)[0m
ets Jun 8 2016 00:22:57
rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 188777542, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:8488
load:0x40078000,len:10788
load:0x40080400,len:6832
entry 0x40080798
D (77) bootloader_flash: mmu set block paddr=0x00000000 (was 0xffffffff)[0m
ets Jun 8 2016 00:22:57
(the second block repeats every 500mSec)