Skip to main content

Seeed Studio XIAO ESP32C6 入门指南

Seeed Studio XIAO ESP32C6

介绍

Seeed Studio XIAO ESP32C6 由高度集成的 ESP32-C6 SoC 驱动,基于两个 32 位 RISC-V 处理器构建,其中包含一个运行频率高达 160 MHz 的高性能 (HP) 处理器,以及一个可时钟频率高达 20 MHz 的低功耗 (LP) 32 位 RISC-V 处理器。芯片上有 512KB SRAM 和 4 MB Flash,提供更多编程空间,为物联网控制场景带来更多可能性。

XIAO ESP32C6 凭借其增强的无线连接能力,原生支持 Matter。无线协议栈支持 2.4 GHz WiFi 6、Bluetooth® 5.3、Zigbee 和 Thread (802.15.4)。作为首个兼容 Thread 的 XIAO 系列成员,它非常适合构建符合 Matter 标准的项目,从而在智能家居中实现互操作性。

规格参数

产品XIAO ESP32C6XIAO ESP32C3XIAO ESP32S3
处理器乐鑫 ESP32-C6 SoC乐鑫 ESP32-C3 SoC乐鑫 ESP32-S3R8
两个 32 位 RISC-V 处理器,高性能处理器运行频率高达 160 MHz,低功耗处理器时钟频率高达 20 MHzRISC-V 单核 32 位芯片处理器,具有四级流水线,运行频率高达 160 MHzXtensa LX7 双核,32 位处理器,运行频率高达 240 MHz
无线完整的 2.4GHz Wi-Fi 6 子系统完整的 2.4GHz Wi-Fi 子系统
BLE:蓝牙 5.0,蓝牙 MeshBLE:蓝牙 5.0,蓝牙 MeshBLE:蓝牙 5.0,蓝牙 Mesh
Zigbee,Thread,IEEE 802.15.4//
片上存储器512KB SRAM & 4MB Flash400KB SRAM & 4MB Flash8M PSRAM & 8MB Flash
接口1x UART,1x LP_UART,1x IIC,1x LP_IIC,1x SPI,11x GPIO(PWM),7x ADC,1xSDIO 2.0 从设备1x UART,1x IIC,1x SPI,11x GPIO(PWM),4x ADC1x UART,1x IIC,1x IIS,1x SPI,11x GPIO(PWM),9x ADC,1x 用户 LED,1x 充电 LED
1x 复位按钮,1x 启动按钮
尺寸21 x 17.8 mm
电源输入电压Type-C:5V
BAT:4.2V
电路工作电压(准备运行)USB:5V@9mA
BAT:3.8V@9mA
Type-C:5V@19mA
BAT:3.8V@22mA
电池充电电流100mA350mA100mA
功耗模式(供电电压:3.8V)调制解调器睡眠模式~ 30 mA~ 24 mA~ 25 mA
浅睡眠模式~ 2.5 mA~ 3 mA~ 2 mA
深度睡眠模式~ 15 μA~ 44 μA~ 14 μA
工作温度-40°C ~ 85°C-40°C ~ 65°C

特性

  • 增强连接性:集成 2.4 GHz Wi-Fi 6 (802.11ax)、蓝牙 5(LE) 和 IEEE 802.15.4 无线连接,支持 ThreadZigbee 协议的应用。
  • Matter 原生支持:支持构建符合 Matter 标准的智能家居项目,确保不同智能设备之间的互操作性。
  • 芯片级安全加密:利用 ESP32-C6 提供安全启动、加密和可信执行环境 (TEE) 功能,增强智能家居项目的安全性。
  • 出色的射频性能:配备板载天线,BLE/Wi-Fi 范围可达 80m,并提供连接外部 UFL 天线的接口,确保可靠的连接性。
  • 优化功耗管理:提供四种工作模式,包括功耗低至 15 μA 的深度睡眠模式,同时支持锂电池充电管理。
  • 双 RISC-V 处理器:集成两个 32 位 RISC-V 处理器,高性能处理器运行频率可达 160 MHz,低功耗处理器可达 20 MHz
  • 经典 XIAO 设计:保持 21 x 17.8mm 的拇指大小外形尺寸和单面贴装设计,非常适合空间受限的项目,如可穿戴设备。

硬件概述

XIAO ESP32C6 指示图
XIAO ESP32C6 引脚列表
RF 开关

RF 开关功能允许您通过配置 GPIO14 在内置陶瓷天线和外部天线之间切换。要启用此功能,您必须首先将 GPIO3 设置为低电平,因为这会激活 RF 开关控制。

  • GPIO14 低电平(默认设置):设备使用内置陶瓷天线。
  • GPIO14 高电平:设备切换到外部天线。

默认情况下,GPIO14 设置为低电平,启用内置天线。要使用外部天线,请将 GPIO14 设置为高电平。请参考下面的示例代码,了解如何配置 GPIO3GPIO14 以激活外部天线:

void setup() {
pinMode(WIFI_ENABLE, OUTPUT); // pinMode(3, OUTPUT);
digitalWrite(WIFI_ENABLE, LOW); // digitalWrite(3, LOW); // Activate RF switch control

delay(100);

pinMode(WIFI_ANT_CONFIG, OUTPUT); // pinMode(14, OUTPUT);
digitalWrite(WIFI_ANT_CONFIG, HIGH); // digitalWrite(14, HIGH); // Use external antenna
}

入门指南

为了让您更快地开始使用 XIAO ESP32C6,请阅读下面的硬件和软件准备,以准备好 XIAO。

硬件准备

您需要准备以下物品:

tip

一些 USB 数据线只能供电而无法传输数据。如果您没有 USB 数据线或不知道您的 USB 数据线是否可以传输数据,您可以查看 Seeed USB Type-C support USB 3.1

焊接排针

XIAO ESP32C6 默认出货时不带排针,您需要准备自己的排针并将其焊接到 XIAO 的相应引脚上,这样您就可以连接到扩展板或传感器。

由于 XIAO ESP32C6 的微型尺寸,焊接排针时请小心,不要将不同的引脚粘在一起,也不要将焊料粘到屏蔽层或其他组件上。否则,可能会导致 XIAO 短路或无法正常工作,由此造成的后果将由用户承担。

BootLoader 模式

有时我们使用错误的程序会使 XIAO 出现丢失端口或无法正常工作的情况。具体表现为:

  • 连接到计算机,但找不到 XIAO 的端口号。
  • 计算机已连接并出现端口号,但上传程序失败。

当您遇到上述两种情况时,可以尝试将 XIAO 置于 BootLoader 模式,这可以解决大多数设备无法识别和上传失败的问题。具体方法是:

  • 步骤 1. 按住 XIAO ESP32C6 上的 BOOT 按钮不松开。
  • 步骤 2. 保持按住 BOOT 按钮,然后通过数据线连接到计算机。连接到计算机后松开 BOOT 按钮。
  • 步骤 3. 上传 Blink 程序来检查 XIAO ESP32C6 的运行情况。

复位

当程序运行异常时,您可以在上电期间按一次复位键,让 XIAO 重新执行上传的程序。

当您在上电时按住 BOOT 键,然后按一次复位键,也可以进入 BootLoader 模式。

软件准备

XIAO ESP32C6 的推荐编程工具是 Arduino IDE,因此您需要完成 Arduino 安装作为软件准备的一部分。

tip

如果这是您第一次使用 Arduino,我们强烈建议您参考 Getting Started with Arduino

并且 XIAO ESP32C6 的板载包至少需要 2.0.8 版本才可用。

  • 步骤 1. 根据您的操作系统下载并安装稳定版本的 Arduino IDE。


  • 步骤 2. 启动 Arduino 应用程序。

  • 步骤 3. 将 XIAO ESP32C6 板载包添加到 Arduino IDE 并点击 OK

  • 步骤 4. 关闭 Arduino IDE 并重新打开。

添加 XIAO-C6 开发板

要安装 XIAO ESP32C6 开发板,请按照以下步骤操作:

https://espressif.github.io/arduino-esp32/package_esp32_index.json
  1. 将上述开发板管理器 URL 添加到您的 Arduino IDE 首选项中,该 URL 来自 Installing - Arduino ESP32
  1. 下载 XIAO ESP32C6 开发板包。
note

仅在 esp32 开发板版本大于 3.0.0 时可用。

  1. 选择 XIAO_ESP32C6 变体。

现在开始享受编程吧 ✨。

  • 步骤 1. 启动 Arduino 应用程序。

  • 步骤 2. 导航到 File > Examples > 01.Basics > Blink,打开程序。

  • 步骤 3. 选择开发板型号为 XIAO ESP32C6,并选择正确的端口号来上传程序。

程序成功上传后,您将看到以下输出消息,并且可以观察到 XIAO ESP32C6 右侧的橙色 LED 正在闪烁。

电池使用

XIAO ESP32C6 系列具有内置电源管理芯片,允许其通过电池独立供电或通过USB端口为电池充电。

为您的XIAO连接电池时,我们建议使用合格的可充电3.7V锂电池。焊接电池时,请仔细区分正负极。负极焊盘应位于左侧靠近丝印标记"D8"的位置,而正极焊盘应位于右侧靠近丝印标记"D5"的位置。

caution

使用电池供电时,5V引脚上不会有电压。

红色指示灯

XIAO ESP32C6 具有电池充电红色指示灯,类似于 XIAO ESP32S3

XIAO ESP32C6 的红灯行为如下:

  • 当未连接电池时:
    • 连接Type-C线缆时红灯亮起,30秒后熄灭。
  • 当连接电池并插入Type-C线缆充电时:
    • 红灯闪烁。
  • 当电池通过Type-C连接完全充满时:
    • 红灯熄灭。

读取电池电压

要监控XIAO ESP32C6上的电池电压,类似于XIAO ESP32C3,您需要焊接一个200k电阻以1:2配置。此设置将电压减半,允许通过A0模拟端口安全监控。

示例代码

下面的代码初始化A0端口上的ADC并平均16次读数来计算电池电压,根据分压器的1:2衰减比进行调整。

#include <Arduino.h>

void setup() {
Serial.begin(115200);
pinMode(A0, INPUT); // Configure A0 as ADC input
}

void loop() {
uint32_t Vbatt = 0;
for(int i = 0; i < 16; i++) {
Vbatt += analogReadMilliVolts(A0); // Read and accumulate ADC voltage
}
float Vbattf = 2 * Vbatt / 16 / 1000.0; // Adjust for 1:2 divider and convert to volts
Serial.println(Vbattf, 3); // Output voltage to 3 decimal places
delay(1000); // Wait for 1 second
}

这段代码从ADC获取16次测量值,对它们求平均值,然后补偿分压器的1:2比例,以三位小数精度输出电池电压(单位:伏特)。

深度睡眠模式和唤醒

XIAO ESP32C6 具有完整的深度睡眠模式和唤醒功能。这里我们将展示ESP提供的两个更常见的示例。

示例1:使用外部唤醒的深度睡眠

这段代码展示了如何使用深度睡眠,以外部触发器作为唤醒源,以及如何在RTC内存中存储数据以便在重启后使用。

/*
Hardware Connections
======================
Push Button to GPIO 0 pulled down with a 10K Ohm
resistor

NOTE:
======
Bit mask of GPIO numbers which will cause wakeup. Only GPIOs
which have RTC functionality can be used in this bit map.
For different SoCs, the related GPIOs are:
- ESP32: 0, 2, 4, 12-15, 25-27, 32-39
- ESP32-S2: 0-21
- ESP32-S3: 0-21
- ESP32-C6: 0-7
- ESP32-H2: 7-14
*/

#define BUTTON_PIN_BITMASK (1ULL << GPIO_NUM_0) // GPIO 0 bitmask for ext1

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();

/*
First we configure the wake up source
We set our ESP32 to wake up for an external trigger.
There are two types for ESP32, ext0 and ext1, ext0
don't support ESP32C6 so we use ext1.
*/

//If you were to use ext1, you would use it like
esp_sleep_enable_ext1_wakeup(BUTTON_PIN_BITMASK,ESP_EXT1_WAKEUP_ANY_HIGH);

//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
}

演示2:使用定时器唤醒的深度睡眠

ESP32 提供了深度睡眠模式以实现有效的功耗节省,因为功耗是物联网应用的重要因素。在此模式下,CPU、大部分 RAM 以及所有由 APB_CLK 时钟驱动的数字外设都会断电。芯片中唯一仍可保持供电的部分是:RTC 控制器、RTC 外设和 RTC 存储器。

此代码展示了最基本的深度睡眠模式,使用定时器唤醒,以及如何在 RTC 存储器中存储数据以便在重启后使用。

/*
Simple Deep Sleep with Timer Wake Up
=====================================
This code is under Public Domain License.

Author:
Pranav Cherukupalli <[email protected]>
*/

#define uS_TO_S_FACTOR 1000000ULL /* Conversion factor for micro seconds to seconds */
#define TIME_TO_SLEEP 5 /* Time ESP32 will go to sleep (in seconds) */

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();

/*
First we configure the wake up source
We set our ESP32 to wake up every 5 seconds
*/
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
Serial.println("Setup ESP32 to sleep for every " + String(TIME_TO_SLEEP) +
" Seconds");

/*
Next we decide what all peripherals to shut down/keep on
By default, ESP32 will automatically power down the peripherals
not needed by the wakeup source, but if you want to be a poweruser
this is for you. Read in detail at the API docs
http://esp-idf.readthedocs.io/en/latest/api-reference/system/deep_sleep.html
Left the line commented as an example of how to configure peripherals.
The line below turns off all RTC peripherals in deep sleep.
*/
//esp_deep_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);
//Serial.println("Configured all RTC Peripherals to be powered down in sleep");

/*
Now that we have setup a wake cause and if needed setup the
peripherals state in deep sleep, we can now start going to
deep sleep.
In the case that no wake up sources were provided but deep
sleep was started, it will sleep forever unless hardware
reset occurs.
*/
Serial.println("Going to sleep now");
Serial.flush();
esp_deep_sleep_start();
Serial.println("This will never be printed");
}

void loop(){
//This is not going to be called
}
tip

如果您想学习使用更多的深度睡眠模式和唤醒功能,您可以在 Arduino IDE 中找到更多由 ESP 官方为该芯片编写的示例程序。

资源

课程资源

技术支持与产品讨论

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

Loading Comments...