Seeed Studio XIAO ESP32C3 入门指南

介绍
Seeed Studio XIAO ESP32C3 是一款基于乐鑫 ESP32-C3 WiFi/蓝牙双模芯片的物联网迷你开发板,采用 32位 RISC-V CPU,凭借其高效的架构提供强大的计算性能。它具有出色的射频性能,支持 IEEE 802.11 b/g/n WiFi 和 蓝牙 5 (BLE) 协议。该开发板配备外置天线,以增强无线应用的信号强度。它还具有 小巧精致的外形 和 单面可贴装设计。它配备了丰富的接口,拥有 11个数字I/O 可用作 PWM引脚 和 4个模拟I/O 可用作 ADC引脚。它支持四种串行接口,如 UART、I2C 和 SPI。板上还有一个小的 复位按钮 和一个 引导加载程序模式按钮。XIAO ESP32C3 完全兼容 Grove Shield for Seeeduino XIAO 和 Seeeduino XIAO 扩展板,但对于 Seeeduino XIAO 扩展板,板上的 SWD 弹簧触点将不兼容。
基于上述突出的特性,XIAO ESP32C3 定位为 高性能、低功耗、高性价比的物联网迷你开发板,适用于 低功耗物联网应用和无线可穿戴应用。
本wiki将向您展示如何快速开始使用XIAO ESP32C3!
规格参数
项目 | Seeed Studio XIAO ESP32C3 | Seeeduino XIAO | Seeed XIAO RP2040 | Seeed XIAO nRF52840 | Seeed XIAO nRF52840 Sense |
---|---|---|---|---|---|
处理器 | ESP32-C3 32位 RISC-V @160MHz | SAMD21 M0+@48MHz | RP2040 双核 M0+@133Mhz | nRF52840 M4F@64MHz | nRF52840 M4F@64MHz |
无线连接 | WiFi 和蓝牙 5 (BLE) | N/A | N/A | 蓝牙 5.0/BLE/NFC | 蓝牙 5.0/BLE/NFC |
内存 | 400KB SRAM,4MB 板载闪存 | 32KB SRAM 256KB FLASH | 264KB SRAM 2MB 板载闪存 | 256KB RAM,1MB Flash 2MB 板载闪存 | 256KB RAM,1MB Flash 2MB 板载闪存 |
内置传感器 | N/A | N/A | N/A | N/A | 6轴 IMU (LSM6DS3TR-C),PDM 麦克风 |
接口 | I2C/UART/SPI | I2C/UART/SPI | I2C/UART/SPI | I2C/UART/SPI | I2C/UART/SPI |
PWM/模拟引脚 | 11/4 | 11/11 | 11/4 | 11/6 | 11/6 |
板载按钮 | 复位/启动按钮 | N/A | 复位/启动按钮 | 复位按钮 | 复位按钮 |
板载LED | 充电LED | N/A | 全彩RGB/三合一LED | 三合一LED/充电LED | 三合一LED/充电LED |
电池充电芯片 | ETA4054S2F | N/A | N/A | BQ25101 | BQ25101 |
编程语言 | Arduino/MicroPython | Arduino/CircuitPython | Arduino/MicroPython/CircuitPython |
特性
- 强大的CPU: ESP32-C3,32位RISC-V单核处理器,运行频率高达160 MHz
- 完整的Wi-Fi子系统: 符合IEEE 802.11b/g/n协议,支持Station模式、SoftAP模式、SoftAP + Station模式和混杂模式
- 蓝牙LE子系统: 支持蓝牙5和蓝牙mesh功能
- 超低功耗: 深度睡眠功耗约43μA
- 更好的RF性能: 包含外部RF天线
- 电池充电芯片: 支持锂电池充放电管理
- 丰富的片上资源: 400KB SRAM和4MB板载闪存
- 超小尺寸: 拇指大小(21x17.8mm) XIAO系列经典外形规格,适用于可穿戴设备和小型项目
- 可靠的安全特性: 支持AES-128/256、Hash、RSA、HMAC、数字签名和安全启动的加密硬件加速器
- 丰富的接口: 1个I2C、1个SPI、2个UART、11个GPIO(PWM)、4个ADC、1个JTAG焊盘接口
- 单面元件,表面贴装设计
硬件概述
*A3(GP105) - 使用ADC2,可能由于错误采样信号而无法工作。为了可靠的模拟读取,请使用ADC1(A0/A1/A2)。请参考ESP32-C3数据手册。
XIAO ESP32C3 正面指示图 |
---|
![]() |
XIAO ESP32C3 背面指示图 |
![]() |
XIAO ESP32C3 引脚列表 |
![]() |
电源引脚
- 5V - 这是来自USB端口的5V输出。您也可以将其用作电压输入,但必须在外部电源和此引脚之间使用某种二极管(肖特基、信号、功率),阳极连接电池,阴极连接5V引脚。
- 3V3 - 这是板载稳压器的稳压输出。您可以获得700mA电流
- GND - 电源/数据/信号地
启动引脚
根据ESP32C3的芯片手册,芯片中的GPIO2、GPIO8和GPIO9是启动引脚,这些引脚的高低电平配置可能会让芯片进入不同的启动模式,在使用这些引脚时请注意这一点,否则可能会导致您的XIAO无法上传或执行程序。

入门指南
首先,我们将把XIAO ESP32C3连接到计算机,将LED连接到开发板,并从Arduino IDE上传一个简单的代码,通过闪烁连接的LED来检查开发板是否正常工作。
硬件准备
您需要准备以下物品:
- 1 x Seeed Studio XIAO ESP32C3
- 1 x 计算机
- 1 x USB Type-C数据线
某些USB线只能供电而无法传输数据。如果您没有USB线或不知道您的USB线是否可以传输数据,您可以查看Seeed USB Type-C支持USB 3.1。
- 步骤1. 通过USB Type-C数据线将XIAO ESP32C3连接到您的计算机。

- 步骤2. 将LED连接到D10引脚,如下所示

注意: 确保串联连接一个电阻(约150Ω)来限制通过LED的电流,防止过大电流烧坏LED
软件准备
- 步骤1. 根据您的操作系统下载并安装最新版本的Arduino IDE
-
步骤2. 启动Arduino应用程序
-
步骤3. 将ESP32开发板包添加到您的Arduino IDE
导航到文件 > 首选项,在**"附加开发板管理器网址"**中填入以下网址: https://jihulab.com/esp-mirror/espressif/arduino-esp32.git

导航到工具 > 开发板 > 开发板管理器...,在搜索框中输入关键词"esp32",选择最新版本的esp32并安装。

- 步骤4. 选择您的开发板和端口
开发板
导航到工具 > 开发板 > ESP32 Arduino并选择"XIAO_ESP32C3"。开发板列表比较长,您需要滚动到底部才能找到它。

端口
导航到工具 > 端口并选择已连接的XIAO ESP32C3的串口名称。这通常是COM3或更高(COM1和COM2通常保留给硬件串口)。
运行您的第一个闪烁程序
- 步骤1. 将以下代码复制到Arduino IDE
确保您的D10
按照上图所示连接到LED。
// define led according to pin diagram in article
const int led = D10; // there is no LED_BUILTIN available for the XIAO ESP32C3.
void setup() {
// initialize digital pin led as an output
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH); // turn the LED on
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off
delay(1000); // wait for a second
}
- 步骤 2. 点击 Upload 按钮将代码上传到开发板

上传完成后,您将看到连接的LED以1秒的间隔闪烁。这意味着连接成功,现在您可以使用XIAO ESP32C3探索更多项目!
电池使用
XIAO ESP32C3能够使用3.7V锂电池作为电源输入。您可以参考以下图表了解接线方法。

焊接时请小心不要短路正负极,以免烧坏电池和设备。
电池使用说明:
- 请使用符合规格的合格电池。
- 在使用电池的同时,XIAO可以通过数据线连接到您的计算机设备,请放心,XIAO内置电路保护芯片,使用安全。
- XIAO ESP32C3在电池供电时不会有任何LED亮起(除非您编写了特定程序),请不要通过LED的状态来判断XIAO ESP32C3是否工作,请通过您的程序合理判断。
- 抱歉,我们目前无法通过软件帮助您检查剩余电池电量(因为没有更多可用的芯片引脚),您需要定期给电池充电或使用万用表检查电池电量。
检查电池电压
由于ESP32C3引脚数量的限制,工程师为了确保XIAO ESP32C3具有与其他XIAO系列相同数量的GPIO,没有额外的引脚分配给电池进行电压测量。
但如果您希望使用单独的引脚进行电池电压测量,您可以参考msfujino的巧妙操作。我们也要特别感谢msfujino为XIAO ESP32C3分享的所有经验和努力。
基本操作思路是:电池电压通过200k电阻分压1/2并连接到A0端口,这样就可以监测电压。

数据手册显示标称2500mV满量程AD转换,但芯片之间存在很大差异,实际上为±10%。我的芯片是2700mV满量程。
幸运的是,每个芯片的校准修正值都写在熔丝区域中,通过使用函数analogReadMilliVolts()
,我可以读取修正后的电压值,无需做任何特殊处理。
AD转换的结果与万用表测量的电压非常吻合,误差约为5mV,在实际使用中没有问题。
此外,在通信过程中特别是会出现尖峰状错误,必须平均16次才能消除它们。
以下是测试电池电压的程序。
void setup() {
Serial.begin(115200);
pinMode(A0, INPUT); // ADC
}
void loop() {
uint32_t Vbatt = 0;
for(int i = 0; i < 16; i++) {
Vbatt = Vbatt + analogReadMilliVolts(A0); // ADC with correction
}
float Vbattf = 2 * Vbatt / 16 / 1000.0; // attenuation ratio 1/2, mV --> V
Serial.println(Vbattf, 3);
delay(1000);
}
以上内容来自 Seeed Studio 论坛用户 msfujino,原始发布地址: https://forum.seeedstudio.com/t/battery-voltage-monitor-and-ad-conversion-for-xiao-esp32c/267535。 我们建议您在尝试基于上述内容测量电池电压之前,具备良好的动手能力和更好的焊接技能,并谨慎避免电池短路等危险操作。
深度睡眠模式和唤醒
XIAO ESP32C3 设计支持深度睡眠模式和唤醒功能。对于这两个功能的使用,我们提供以下使用示例。
#define BUTTON_PIN_BITMASK 0x200000000 // 2^33 in hex
RTC_DATA_ATTR int bootCount = 0;
/*
Method to print the reason by which ESP32
has been awaken from sleep
*/
void print_wakeup_reason(){
esp_sleep_wakeup_cause_t wakeup_reason;
wakeup_reason = esp_sleep_get_wakeup_cause();
switch(wakeup_reason)
{
case ESP_SLEEP_WAKEUP_EXT0 : Serial.println("Wakeup caused by external signal using RTC_IO"); break;
case ESP_SLEEP_WAKEUP_EXT1 : Serial.println("Wakeup caused by external signal using RTC_CNTL"); break;
case ESP_SLEEP_WAKEUP_TIMER : Serial.println("Wakeup caused by timer"); break;
case ESP_SLEEP_WAKEUP_TOUCHPAD : Serial.println("Wakeup caused by touchpad"); break;
case ESP_SLEEP_WAKEUP_ULP : Serial.println("Wakeup caused by ULP program"); break;
default : Serial.printf("Wakeup was not caused by deep sleep: %d\n",wakeup_reason); break;
}
}
void setup(){
Serial.begin(115200);
delay(1000); //Take some time to open up the Serial Monitor
//Increment boot number and print it every reboot
++bootCount;
Serial.println("Boot number: " + String(bootCount));
//Print the wakeup reason for ESP32
print_wakeup_reason();
esp_deep_sleep_enable_gpio_wakeup(BIT(D1), ESP_GPIO_WAKEUP_GPIO_LOW);
//Go to sleep now
Serial.println("Going to sleep now");
esp_deep_sleep_start();
Serial.println("This will never be printed");
}
void loop(){
//This is not going to be called
}
如果您足够快地在 XIAO 进入深度睡眠之前打开串口监视器,那么您可以看到如下所示的消息输出。这意味着 XIAO 现在处于"睡眠"状态。

进入深度睡眠模式后,XIAO 的端口将消失,您需要唤醒它才能再次看到其端口号!
在程序中,我们使用 D1 低电平来唤醒。这意味着我们可以将按钮连接到引脚 D1,当我们按下按钮时 XIAO 将被唤醒。
目前 XIAO ESP32C3 仅支持 GPIO 唤醒,支持唤醒的引脚只有 D0~D3。此程序可能无法在其他引脚上工作。
故障排除
Q1: 我的 Arduino IDE 在向开发板上传代码时卡住了
您可以首先尝试在开发板连接到 PC 时单击一次 RESET BUTTON 来重置开发板。如果这不起作用,请按住 BOOT BUTTON,在按住 BOOT 按钮的同时将开发板连接到 PC,然后释放它以进入 bootloader 模式。
Q2: 我的开发板在 Arduino IDE 中没有显示为串行设备
请按照上面 Q1 的相同答案操作。
Q3: 我想用出厂固件重新刷写 bootloader
您可以简单地通过 USB Type-C 将开发板连接到 PC,并使用 ESP RF Test Tool 用出厂固件重新刷写 bootloader。
-
步骤 1. 按住 BOOT BUTTON 并将 XIAO ESP32C3 连接到 PC 以进入 bootloader 模式
-
步骤 2. 连接后,释放 BOOT BUTTON
-
步骤 3. 访问此页面并下载 ESP RF Test Tool and Test Guide

- 步骤 4. 解压 .zip 文件,导航到
ESP_RF_Test_EN\ESP_RF_Test_EN\EspRFTestTool_v2.8_Manual
并打开 EspRFTestTool_v2.8_Manual.exe

- 步骤 5. 选择 ESP32C3 作为 ChipType,您的 COM 端口,115200 作为 BaudRate 并点击 open

您将看到以下输出

- 步骤 6. 选择 Flash 并点击 Select Bin

-
步骤 7. 下载 XIAO ESP32C3 的出厂固件并选择它。
-
步骤 8. 最后点击 Load Bin

刷写成功时您将看到以下输出

MicroPython GitHub 仓库
资源
-
📄**[PDF]** ESP32C3 数据手册
-
📄 [PDF] Seeed Studio XIAO ESP32C3 原理图
-
🗃️ [ZIP] Seeed Studio XIAO ESP32C3 KiCAD 库
-
🗃️ [ZIP] Seeed Studio XIAO ESP32C3 Eagle 库
-
🗃️ [ZIP] Seeed Studio XIAO ESP32C3 出厂固件
-
📄 [XLSX] Seeed Studio XIAO ESP32C3 引脚图表
-
🔗 [STEP] Seeed Studio XIAO ESP32C3 3D 模型
-
🔗 [GitHub] Seeed Studio XIAO ESP32C3 MicroPython 库
-
🔗 [WiKi] Seeed Studio XIAO ESP32C3 初探 XIAO ESP32C3 的绝佳入门指南,涵盖关键特性和基本用法。
-
📚 [电子书] XIAO: 大功率,小板子 掌握 Arduino 和 TinyML 在 XIAO 开发板上掌握 Arduino 和 TinyML 的优秀指南。
-
🔗 [Kicad] Seeed Studio XIAO ESP32C3 封装
课程资源

技术支持与产品讨论
感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。