嘉立创esp32-c3-va折腾记录(一)程序上传

476 阅读2分钟

最近入手了嘉立创的 ESP32实战派开发板,自带屏幕和一堆传感器,但是官方给的例子是基于ESP-IDF开发环境,作为一个菜鸟还是更喜欢用Arduino,现成的库多一些,由此开始了踩坑之旅,这里记录下来留个备份。开发环境用的是vscode+platformio,框架用Arduino。

第一个程序从串口打印Hello world开始,创建好项目后修改src目录下的main.cpp文件

src/main.cpp
#include <Arduino.h>

void setup()
{
  Serial.begin(115200);
  Serial.println("Hello World");
}

void loop()
{
}

同时,由于这块开发板的带的是8M Flash,而默认的C3开发板Flash是4M,因此还要修改分区表,这里直接从platform安装目录把分区表文件拷过来,分区表文件C:\Users\用户名\.platformio\packages\framework-arduinoespressif32\tools\partitions\default_8MB.csv,放到platformio.ini同级目录里,相应的,platformio.ini文件也需要修改。

platformio.ini
[env:esp32-c3-devkitm-1]
platform = espressif32
board = esp32-c3-devkitm-1
framework = arduino
monitor_speed = 115200
board_build.partitions = default_8MB.csv

分区表修改之后还有一处需要做对应的修改,在C:\Users\用户名\.platformio\platforms\espressif32\boards目录下找到创建项目时选的板子名,修改对应的json文件,这里我选的是esp32-c3-devkitm-1.json,把upload下的flash_size改成8MB,不然上传程序还是会报错。按照此前折腾esp32开发板的经验,这个时候上传程序应该能在串口看到输出的Hello World,但实际输出的是一堆错误代码,内容如下:

ESP-ROM:esp32c3-api1-20210207
Build:Feb  7 2021
rst:0x3 (RTC_SW_SYS_RST),boot:0xd (SPI_FAST_FLASH_BOOT)
Saved PC:0x403cf94c
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fcd5810,len:0x438
load:0x403cc710,len:0x90c
load:0x403ce710,len:0x2624
entry 0x403cc710

看错误信息猜测跟FLASH有关,网上搜了一下,这是因为esp32-c3这块板子的flash_mode只支持dio模式,而默认上传时是qio模式,不太清楚这两者的区别,解决办法是在platformio.ini增加一行:

[env:esp32-c3-devkitm-1]
platform = espressif32
board = esp32-c3-devkitm-1
framework = arduino
monitor_speed = 115200
board_build.partitions = default_8MB.csv
board_build.flash_mode = dio #注意只能小写

这样上传程序后终于看到了串口的输出:

ESP-ROM:esp32c3-api1-20210207
Build:Feb  7 2021
rst:0x1 (POWERON),boot:0xd (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fcd5810,len:0x38c
load:0x403cc710,len:0x6a0
load:0x403ce710,len:0x2624
entry 0x403cc710
Hello World