ESP32-C3开发板问题汇总
之前尝鲜在安信可购买了一款ESP32C3的12F开发板的外置2M flash版开发板。
它有四种版本
现在还买不到内置4M flash的版本,暂时能买的是第四种版本,也就是它的flash是外置的且只有2M。
大约是2021年7月开始能买到内置4M flash的开发板了。
芯片Rev2、Rev3版本问题
早期买到的低价尝鲜ESP32C3可能是工程版本,具体具体表现为,当执行完idf.py menuconfig
和 idf.py flash monitor
之后不断重启,并提示。
E (38) boot_comm: This chip is revision 2 but the application is configured for minimum revision 3. Can't run.
这就是提示芯片的版本是2,是工程验证芯片,而编译系统默认的是按版本3编译的,所以还需要改一下。方法是idf.py menuconfig
之后在Component config ---> ESP32C3-Specific ---> Minimum Supported ESP32-C3 Revision
里把Rev 3
改成Rev 2
就可以了。
现在卖出的芯片版本基本都是Rev 3
了,一般不会遇到这个问题。
在Arduino IDE环境中遇到的问题
开始在Arduino IDE中通过https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json
下载到支持ESP32C3的开发板代码库,并编写最简单的亮灯程序,通过选择ESP32C3 Dev Module
来把程序下载到开发板上。
const byte RED_LED_PIN = 3;
void setup() {
pinMode(RED_LED_PIN, OUTPUT);
}
void loop() {
digitalWrite(RED_LED_PIN, HIGH);
delay(1000);
digitalWrite(RED_LED_PIN, LOW);
delay(1000);
}
但是下载完成后,开发板会不断重启并提示:
Build:Sep 18 2020
rst:0x3 (RTC_SW_SYS_RST),boot:0xc (SPI_FAST_FLASH_BOOT)
Saved PC:0x403d11b2
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fcd6100,len:0x1484
load:0x403ce000,len:0xb80
load:0x403d0000,len:0x2ba4
entry 0x403ce000
I (34) boot: ESP-IDF v4.4-dev-960-gcf457d412 2nd stage bootloader
I (35) boot: compile time 12:10:59
I (35) boot: chip revision: 2
I (35) boot_comm: chip revision: 2, min. bootloader chip revision: 0
I (41) qio_mode: Enabling default flash chip QIO
I (45) boot.esp32c3: SPI Speed : 80MHz
I (49) boot.esp32c3: SPI Mode : QIO
I (53) boot.esp32c3: SPI Flash Size : 2MB
I (57) boot: Enabling RNG early entropy source...
E (61) flash_parts: partition 3 invalid - offset 0x150000 size 0x140000 exceeds flash chip size 0x200000
E (70) boot: Failed to verify partition table
E (74) boot: load partition table error!
ESP-ROM:esp32c3-20200918
这是因为ESP32C3 Dev Module
是乐鑫公司的开发板,他们的开发板的ESP32C3芯片是内置4M flash版本,而安信可的ESP32_C3_12F是外置2M flash版本。所以需要改一下Arduino的开发板选项,把Flash size: "4MB (32Mb)"
改成Flash size: "2MB (16Mb)"
就可以了。
如果下载程序的时候一直不成功
esptool.py v3.1-dev
Serial port /dev/cu.usbserial-1420
Connecting....
Chip is ESP32-C3 (revision 2)
Features: Wi-Fi
Crystal is 40MHz
MAC: 88:88:88:88:88:88
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
A fatal error occurred: Timed out waiting for packet header
A fatal error occurred: Timed out waiting for packet header
可以把Upload speed: "921600"
改成Upload speed: "460800"
ESP32-C3F-Kit开发板引脚标注问题
实际 | 标注 |
---|---|
IO0 | EN后边的NC |
IO1 | IO0 |
IO9 | IO10 |
IO10 | IO9 |
IO18 | IO19 |
IO19 | IO18 |
ESP32-12H-Kit开发板引脚标注问题
实际 | 标注 |
---|---|
IO10 | IO21 |
IO11 | IO20 |
IO12 | IO19 |
IO19 | IO12 |
IO20 | IO11 |
IO21 | IO10 |
对于ESP32C3通过USB-TTL下载程序和打印日志的引脚接法
USB-TTL | ESP32C3 |
---|---|
3V3 | 3V3 |
GND | GND |
RTS | CHIP_EN |
DTR | IO9 |
TXD | IO20/U0RXD |
RXD | IO21/U0TXD |
这样接线就可以使用USB-TTL工具直接给芯片烧录和调试程序,因此在设计开发板的时候,就可以不用再额外设计如下的电路了。
通过USB下载程序
这种方法只适合下载程序,无法通过串口查看日志。
首先将USB的四根线分出来,可以用如下的模块:
接线如下:
USB | ESP32-C3F-Kit |
---|---|
VBUS | 5V |
GND | GND |
D+ | IO19 |
D- | IO18 |
对于ESP32-C3F-Kit开发板,在使用USB下载前,先按住板子上右边(这里的左、右是按上图摆放的左、右)的PROG
按钮不松开,再按一下板子左边的RST
按钮,再松开PROG
按钮。然后再使用idf.py flash
下载程序。
开发板上的PROG
按钮是边接到芯片的GPIO9
,按下就是拉低。因此在设计电路的时候,如果不想在板子上加上USB转串口的电路,可以引出3V3
、GND
、GPIO9
、GPIO18
、GPIO19
这5个触点用来后期烧录程序,如果板子上已经有USB接口,完全可以只引出GPIO9
这一个触点。
LED PIN
Led | Pin |
---|---|
R | 3 |
G | 4 |
B | 5 |
O(橙色,靠边那个) | 18 |
W(白色,靠中间那个) | 19 |
合宙的ESP32C3-CORE开发板问题
1 | GND | 接地 |
---|---|---|
2 | 5V | 5V电源接口,与USB的VBUS相连 |
3 | BOOT | GPI009,输入 |
4 | IO08 | GPIO08,输入,输出,高阻 |
5 | IO04 | GPIO04,输入,输出,高阻 |
6 | IO05 | GPIO05,输入,输出,高阻 |
7 | 3.3V | 芯片电源,3.3V |
8 | GND | 接地 |
9 | IO11 | GPIO11,输入.输出,高阻 |
10 | IO07 | GPIO07,输入,输出,高阻 |
11 | IO06 | GPIO06,输入,输出,高阻 |
12 | IO10 | GPIO10,输入,输出,高阻 |
13 | IO03 | GPIO03,输入,输出,高阻 |
14 | IO02 | GPIO02,输入,输出,高阻 |
15 | 3.3V | 芯片电源,3.3V |
16 | GND | 接地 |
17 | 5V | 5V电源接口,与USB的VBUS相连 |
18 | PWB | 芯片3.3V供电控制.高电平有效,不用可悬空 |
19 | GND | 接地 |
20 | 3.3V | 芯片电源,3.3V |
21 | RESET | 芯片复位 |
22 | NC | 悬空 |
23 | IO13 | GPIO13,输入,输出,高阻 |
24 | U0_RX | GPIO20,输入,输出,高阻 |
25 | U0_TX | GPIO21,输入,输出,高阻 |
26 | GND | 接地 |
27 | IO19 | GPIO19,输入,输出,高阻 |
28 | IO18 | GPIO18,输入,输出,高阻 |
29 | IO12 | GPIO12,输入,输出,高阻 |
30 | IO1 | GPIO1,输入,输出,高阻 |
31 | IO0 | GPIO0,输入,输出,高阻 |
32 | GND | 接地 |
烧录失败问题
在Mac系统下使用idf.py flash
烧录失败的问题:
Executing action: flash
Serial port /dev/cu.usbmodem544C0026831
Connecting....
Detecting chip type... ESP32-C3
Running ninja in directory /Users/xxx/yyy/esp/blink/build
Executing "ninja flash"...
[1/5] cd /Users/xxx/yyy/esp/blink/build/esp-idf/esptool_py && /Users/ac...tion_table/partition-table.bin /Users/xxx/yyy/esp/blink/build/blink.bin
blink.bin binary size 0x276b0 bytes. Smallest app partition is 0x100000 bytes. 0xd8950 bytes (85%) free.
[2/5] Performing build step for 'bootloader'
[1/1] cd /Users/xxx/yyy/esp/blink/build/bootloader/esp-idf/esptool_py && /Users/ace/.espressif/python_env/idf5.0_py3.9_env/bin/python /Users/xxx/yyy/esp/idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 /Users/xxx/yyy/esp/blink/build/bootloader/bootloader.bin
Bootloader binary size 0x5290 bytes. 0x2d70 bytes (35%) free.
[2/3] cd /Users/xxx/yyy/esp/idf/components/esptool_py && /usr/local/Cel...d -P /Users/xxx/yyy/esp/idf/components/esptool_py/run_serial_tool.cmake
esptool esp32c3 -p /dev/cu.usbmodem544C0026831 -b 115200 --before=default_reset --after=hard_reset write_flash --flash_mode dio --flash_freq 80m --flash_size 4MB 0x0 bootloader/bootloader.bin 0x10000 blink.bin 0x8000 partition_table/partition-table.bin
esptool.py v4.1
Serial port /dev/cu.usbmodem544C0026831
Connecting....
Chip is ESP32-C3 (revision 3)
Features: Wi-Fi
Crystal is 40MHz
MAC: 60:55:f9:79:68:64
Uploading stub...
A fatal error occurred: Failed to write to target RAM (result was 01070000: Operation timed out)
CMake Error at run_serial_tool.cmake:55 (message):
/Users/ace/.espressif/python_env/idf5.0_py3.9_env/bin/python;;/Users/xxx/yyy/esp/idf/components/esptool_py/esptool/esptool.py;--chip;esp32c3
failed
FAILED: CMakeFiles/flash /Users/xxx/yyy/esp/blink/build/CMakeFiles/flash
cd /Users/xxx/yyy/esp/idf/components/esptool_py && /usr/local/Cellar/cmake/3.22.1/bin/cmake -D IDF_PATH=/Users/xxx/yyy/esp/idf -D "SERIAL_TOOL=/Users/ace/.espressif/python_env/idf5.0_py3.9_env/bin/python;;/Users/xxx/yyy/esp/idf/components/esptool_py/esptool/esptool.py;--chip;esp32c3" -D "SERIAL_TOOL_ARGS=--before=default_reset;--after=hard_reset;write_flash;@flash_args" -D WORKING_DIRECTORY=/Users/xxx/yyy/esp/blink/build -P /Users/xxx/yyy/esp/idf/components/esptool_py/run_serial_tool.cmake
ninja: build stopped: subcommand failed.
ninja failed with exit code 1
这主要是没有安装驱动,按官方文档说需要先安装CH343驱动。实际安装CH34X驱动即可,点此访问官网下载 。或者直接在此即可下载 CH34XSER_MAC。
需要注意,如果要指定端口的话,在安装驱动后要将/dev/cu.usbmodem544C0026831
这种端口改成/dev/cu.wchusbserial544C0026831
这种名字的端口。
解决方法参考此处: https://github.com/espressif/esptool/issues/280
一直重启问题
ESP-ROM:esp32c3-api1-20210207
Build:Feb 7 2021
rst:0x3 (RTC_SW_SYS_RST),boot:0xc (SPI_FAST_FLASH_BOOT)
Saved PC:0x403d0a9e
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fcd6108,len:0x1818
load:0x403ce000,len:0xc30
load:0x403cf600,len:0x2df0
entry 0x403ce000
I (35) boot: ESP-IDF v5.0-dev-4037-g9b8c558e63 2nd stage bootloader
I (35) boot: compile time 23:08:48
I (35) boot: chip revision: V003
I (39) boot_comm: chip revision: 3, min. bootloader chip revision: 2
I (46) qio_mode: Enabling QIO for flash chip MXIC
I (51) boot.esp32c3: SPI Speed : 80MHz
I (56) boot.esp32c3: SPI Mode : QIO
I (61) boot.esp32c3: SPI Flash Size : 4MB
I (65) boot: Enabling RNG early entropy source...
E (71) flash_parts: partition 0 invalid magic number 0xcdce
E (77) boot: Failed to verify partition table
E (82) boot: load partition table error!
这里提示的失败是flash_parts: partition 0 invalid magic number 0xcdce
、boot: Failed to verify partition table
、boot: load partition table error!
。
解决方法是执行idf.py menuconfig
,将 Serial flasher config ---> Flash SPI mode
改成 DIO
即可。然后再idf.py flash
就好了。