
Seeed Studio XIAO MG24(Sense) 入门指南
介绍
Seeed Studio XIAO MG24 是一款基于 Silicon Labs MG24 的迷你开发板。XIAO MG24 采用 ARM Cortex-M33 内核、32 位 RISC 架构,最高主频 78MHz,支持 DSP 指令和 FPU 浮点运算,具备强大的计算能力,并内置 AI/ML 硬件加速器 MVP,可高效处理 AI/机器学习算法。其次,它具有出色的射频性能,发射功率最高可达 +19.5 dBm,接收灵敏度低至 -105.4 dBm。它支持 Matter、Thread、Zigbee、Bluetooth LE 5.3、Bluetooth mesh 等多种物联网和无线传输协议。
规格参数
| 产品 | XIAO MG24 | XIAO MG24 Sense |
|---|---|---|
| 处理器 | Silicon Labs EFR32MG24 ARM Cortex-M33 @ 78MHz | |
| RAM | 256kB | |
| Flash | 1536KB + 4MB 板载 | |
| LED | 1x 用户 LED 1x 电源 LED | |
| 传感器 | - | 1x 板载模拟麦克风 1x 板载 6 轴 IMU |
| 接口 | 22 个引脚(全部支持 PWM): 19x 模拟 19x 数字 1x I²C 2x UART 2x SPI | |
| 按键 | 1x RESET 按键 | |
| 安全性 | 硬件加密加速器、真随机数发生器、ARM® TrustZone®、安全启动、安全调试解锁等。 | |
| 低功耗(典型) | 1.95μA | |
| 正常工作(典型) | 6.71mA | |
| 睡眠(典型) | 1.91mA | |
| 软件兼容性 | Arduino IDE | |
| 支持的天线 | 最大 2.4GHz 陶瓷天线:4.97dBi | |
| 工作温度 | -20°C~70°C | |
| 尺寸 | 21×17.8 mm | |
特性
- 强大的 CPU:ARM Cortex-M33 内核,最高主频 78MHz,支持 DSP 指令和 FPU 浮点运算,32 位 RISC 架构。
- 超低功耗:接收电流 4.6mA/发射电流 5mA(0dBm),支持多种低功耗睡眠模式
- 强大的 AI 能力:内置 AI/ML 硬件加速器 MVP,能够高效处理 AI/机器学习算法。
- 多样的无线传输方式:集成 2.4GHz 多协议无线收发器,支持 Matter、OpenThread、Zigbee、Bluetooth LE 5.3、Bluetooth mesh 等多种物联网协议。
- 更佳的射频性能:出色的射频性能,发射功率最高可达 +19.5 dBm,接收灵敏度低至 -105.4 dBm(250kbps DSSS)
- 强大的安全性:具备 Secure Vault 的强大安全特性,包括安全启动、加密、随机数生成、防篡改、安全调试等。
- 超小尺寸:21 x 17.8mm。
- 丰富的片上资源:最大 1536KB Flash 和 256KB RAM,提供充足的存储空间。
- 丰富的接口:集成 12 位 1Msps ADC、温度传感器、模拟比较器、DCDC 等丰富外设,并提供多达 22 个引脚、2 个 USART、2 个低功耗 UART、1 个 IIC 等接口。
硬件概览
| XIAO MG24 Sense 示意图 |
|---|
![]() |
| XIAO MG24 示意图 |
![]() |
| XIAO MG24/ XIAO MG24(Sense) 引脚列表 |
![]() |
这两款开发板的区别在于,MG24 Sense 带有麦克风传感器和六轴加速度传感器,而 MG24 不具备这些传感器。
- 5V - 这是来自 USB 端口的 5V 输出。你也可以将其用作电压输入,但必须在外部电源和该引脚之间串联某种二极管(肖特基、信号或功率二极管),二极管阳极接电池,阴极接 5V 引脚。
- 3V3 - 这是板载稳压器的稳压输出。
- GND - 电源/数据/信号地
引脚映射
| XIAO Pin | 功能 | 芯片引脚 | 复用功能 | 描述 |
|---|---|---|---|---|
| 5V | VBUS | 电源输入/输出 | ||
| GND | ||||
| 3V3 | 3V3_OUT | 电源输出 | ||
| D0 | 模拟 | PC00 | GPIO, ADC | |
| D1 | 模拟 | PC01 | GPIO, ADC | |
| D2 | 模拟 | PC02 | GPIO, ADC | |
| D3 | 模拟 | PC03 | GPIO, SPI, ADC | |
| D4 | 模拟,SDA | PC04 | GPIO, I2C 数据, ADC | |
| D5 | 模拟,SCL | PC05 | GPIO, I2C 时钟, ADC | |
| D6 | 模拟,TX0 | PC06 | GPIO, UART 发送, ADC | |
| D7 | 模拟,RX0 | PC07 | GPIO, UART 接收, ADC | |
| D8 | 模拟,SCK0 | PA03 | GPIO, SPI 时钟, ADC | |
| D9 | 模拟,MISO0 | PA04 | GPIO, SPI 数据, ADC | |
| D10 | 模拟,MOSI0 | PA05 | GPIO, SPI 数据, ADC | |
| D11 | 模拟 | PA09 | SAMD11_TX | GPIO, UART 接收, ADC |
| D12 | 模拟 | PA08 | SAMD11_RX | GPIO, UART 发送, ADC |
| D13 | 模拟 | PB02 | GPIO, I2C 时钟, ADC | |
| D14 | 模拟 | PB03 | GPIO, I2C 数据, ADC | |
| D15 | 模拟,MOSI1 | PB00 | GPIO, SPI 数据, ADC | |
| D16 | 模拟,MISO1 | PB01 | GPIO, SPI 数据, ADC | |
| D17 | 模拟,SCK1 | PA00 | GPIO, SPI 时钟, ADC | |
| D18 | 模拟,CS | PD02 | Csn | GPIO, Csn, ADC |
| ADC_BAT | PD04 | 读取电池电压值 | ||
| RF Switch Port Select | PB04 | 切换板载天线和 UFL 天线 | ||
| RF Switch Power | PB05 | 射频电源 | ||
| Reset | RESET | 复位 | ||
| CHARGE_LED | VBUS | CHG-LED_红色 | ||
| USER_LED | PA07 | 用户指示灯_黄色 |
入门
为了让你更快地开始使用 XIAO MG24,请先阅读下面的硬件和软件准备内容,以完成对 XIAO 的准备工作。
出厂流程
我们为每一块新的 XIAO MG24 和 XIAO MG24 Sense 预先烧录了一个简单的出厂程序。
- XIAO MG24
常规版本预设的出厂程序是闪烁灯。当你给 XIAO 上电时,橙色的用户指示灯会亮起。

- XIAO MG24 Sense
常规版本预设的出厂程序是:你喊得越大声,灯就会越亮。

硬件准备
你需要准备以下物品:
- 1 x Seeed Studio XIAO MG24
- 1 x 电脑
- 1 x USB Type-C 线缆
有些 USB 线缆只能供电,不能传输数据。如果你没有 USB 线缆,或者不确定你的 USB 线缆是否可以传输数据,你可以查看 Seeed USB Type-C support USB 3.1。
软件准备
推荐用于 XIAO MG24 的编程工具是 Arduino IDE,因此你需要完成 Arduino 的安装作为软件准备的一部分。
如果这是你第一次使用 Arduino,我们强烈建议你参考Arduino 入门指南。
- 步骤 1. 根据你的操作系统下载并安装稳定版本的 Arduino IDE。
- 步骤 2. 启动 Arduino 应用程序。
- 步骤 3. 将 XIAO MG24 板卡包添加到 Arduino IDE 中并点击
OK。 - 步骤 4. 关闭 Arduino IDE 并重新打开。
添加 XIAO MG24 开发板
要安装 XIAO MG24 开发板,请按照以下步骤操作:
https://siliconlabs.github.io/arduino/package_arduinosilabs_index.json
- 将上述开发板管理器 URL 添加到 Arduino IDE 的首选项中。
.png)
- 下载 XIAO MG24 开发板包。
.png)
如果输入后仍然找不到,请重新打开 Arduino IDE。
- 选择
XIAO_MG24变体。

现在开始享受编程的乐趣吧 ✨。
运行你的第一个 Blink 程序
-
步骤 1. 启动 Arduino 应用程序。
-
步骤 2. 依次进入 File > Examples > 01.Basics > Blink,打开该程序。
.png)
- 步骤 3. 将开发板型号选择为 XIAO MG24,并选择正确的端口号上传程序。

当程序成功上传后,你会看到如下输出信息,并且可以观察到 XIAO MG24 右侧的橙色 LED 在闪烁。
| MG24 闪烁代码 | LED 闪烁显示 |
|---|---|
![]() | ![]() |
电池使用
XIAO MG24 内置电源管理芯片,可以通过电池为 XIAO MG24 独立供电,或者通过 XIAO MG24 的 USB 接口为电池充电。
如果你想为 XIAO 接电池,我们建议你购买合格的可充电 3.7V 锂电池。焊接电池时,请注意区分正负极。电源负极应连接在靠近 USB 接口的一侧,电源正极则连接在远离 USB 接口的一侧。

焊接时请务必注意不要让正负极短路,以免烧毁电池和设备。
电池使用说明:
- 请使用符合规格要求的合格电池。
- 使用电池时,XIAO 仍可以通过数据线连接到你的电脑设备,请放心,XIAO 内置电路保护芯片,是安全的。
- 当 XIAO MG24 使用电池供电时,不会有任何 LED 亮起(除非你编写了特定程序),请不要通过 LED 的状态来判断 XIAO MG24 是否在工作,而应根据你的程序进行合理判断。
- 很抱歉,目前我们无法通过软件帮助你检测剩余电量(因为没有多余的芯片引脚可用),你需要定期为电池充电或使用万用表检测电池电量。
同时,我们为电池充电设计了一个红色指示灯,通过指示灯的显示来告知用户当前电池的充电状态。
- 当 XIAO MG24 未连接电池时,插入 Type-C 线缆红灯会亮起,并在 30 秒后熄灭。
- 当连接电池并插入 Type-C 线缆进行充电时,红灯会闪烁。
- 当连接 Type-C 为电池充满电后,红灯会熄灭。

读取电池电压
软件代码
/*
AnalogReadSerial
Reads an analog input on pin 0, prints the result to the Serial Monitor.
Graphical representation is available using Serial Plotter (Tools > Serial Plotter menu).
Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.
This example code is in the public domain.
https://www.arduino.cc/en/Tutorial/BuiltInExamples/AnalogReadSerial
*/
// the setup routine runs once when you press reset:
void setup() {
Serial.begin(115200);
pinMode(PD3, OUTPUT);
digitalWrite(PD3, HIGH);
}
void loop() {
int voltageValue = analogRead(PD4);
float voltage = voltageValue * (2 * 3.3 / 4095.0);
Serial.print("Voltage: ");
Serial.print(voltage, 2);
Serial.println(" V");
delay(1000); // delay in between reads for stability
}
显示结果

深度睡眠与睡眠示例
示例 1:睡眠模式与唤醒
/*
ArduinoLowPower timed sleep example
The example shows the basic usage of the Arduino Low Power library by putting the device to sleep for a period of time.
The device will enter sleep mode for 2000ms. During sleep the CPU is stopped but the RAM retains its contents.
This example is compatible with all Silicon Labs Arduino boards.
Author: Tamas Jozsi (Silicon Labs)
*/
#include "ArduinoLowPower.h"
void setup()
{
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LED_BUILTIN_INACTIVE);
Serial.println("Sleep with timed wakeup");
}
void loop()
{
digitalWrite(LED_BUILTIN, LED_BUILTIN_ACTIVE);
delay(500);
digitalWrite(LED_BUILTIN, LED_BUILTIN_INACTIVE);
delay(500);
Serial.printf("Going to sleep at %lu\n", millis());
LowPower.sleep(2000);
Serial.printf("Woke up at %lu\n", millis());
}
示例 2:深度睡眠模式与唤醒
/*
ArduinoLowPower deep sleep example with external or timed wakeup
The example shows the basic usage of the Arduino Low Power library by putting the device into deep sleep.
The device will remain in deep sleep until the sleep timer expires.
During deep sleep the whole device is powered down except for a minimal set of peripherals (like the Back-up RAM and RTC).
This means that the CPU is stopped and the RAM contents are lost - the device will start from the beginning of the sketch after waking up.
This example is compatible with all Silicon Labs Arduino boards.
Author: Tamas Jozsi (Silicon Labs)
*/
#include "ArduinoLowPower.h"
void setup()
{
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LED_BUILTIN_INACTIVE);
Serial.println("Deep sleep timed wakeup");
}
void loop()
{
digitalWrite(LED_BUILTIN, LED_BUILTIN_ACTIVE);
delay(500);
digitalWrite(LED_BUILTIN, LED_BUILTIN_INACTIVE);
delay(500);
Serial.printf("Going to deep sleep for 10s at %lu\n", millis());
LowPower.deepSleep(10000);
}
示例 3:带 flash 的深度睡眠模式与唤醒
如果你想让 flash 进入深度睡眠,需要使能 0xb9 寄存器
/*
ArduinoLowPower deep sleep example with external or timed wakeup
The example shows the basic usage of the Arduino Low Power library by putting the device into deep sleep.
The device will remain in deep sleep until the sleep timer expires.
During deep sleep the whole device is powered down except for a minimal set of peripherals (like the Back-up RAM and RTC).
This means that the CPU is stopped and the RAM contents are lost - the device will start from the beginning of the sketch after waking up.
This example is compatible with all Silicon Labs Arduino boards.
Author: Tamas Jozsi (Silicon Labs)
*/
#include <Arduino.h>
#include "ArduinoLowPower.h"
#define CS_PIN PA6
#define CLK_PIN PA3
#define MOSI_PIN PA5
#define MISO_PIN PA4
#define READ_DATA 0x03
#define WRITE_ENABLE 0x06
#define PAGE_PROGRAM 0x02
#define SECTOR_ERASE 0x20
void sendSPI(byte data) {
for (int i = 0; i < 8; i++) {
digitalWrite(MOSI_PIN, data & 0x80);
data <<= 1;
digitalWrite(CLK_PIN, HIGH);
delayMicroseconds(1);
digitalWrite(CLK_PIN, LOW);
delayMicroseconds(1);
}
}
void writeEnable() {
digitalWrite(CS_PIN, LOW);
sendSPI(WRITE_ENABLE);
digitalWrite(CS_PIN, HIGH);
}
void setup()
{
//Serial.begin(115200);
pinMode(PA7, OUTPUT);
digitalWrite(PA7, LOW);
pinMode(CS_PIN, OUTPUT);
pinMode(CLK_PIN, OUTPUT);
pinMode(MOSI_PIN, OUTPUT);
pinMode(MISO_PIN, INPUT);
//SW
pinMode(PD3, OUTPUT);
pinMode(PB5, OUTPUT);
pinMode(PB1, OUTPUT);
pinMode(PB0, OUTPUT);
pinMode(PA6, OUTPUT);
digitalWrite(PD3, LOW); //VBAT
digitalWrite(PB5, LOW); //RF_SW
digitalWrite(PB1, LOW); //IMU
digitalWrite(PB0, LOW); //MIC
digitalWrite(PA6, HIGH); //FLASH
//Serial.println("Deep sleep timed wakeup");
writeEnable();
digitalWrite(CS_PIN, LOW);
sendSPI(0xB9);
digitalWrite(CS_PIN, HIGH);
}
void loop()
{
delay(12000);
digitalWrite(PA7, HIGH);
delay(500);
//Serial.printf("Going to deep sleep for 10s at %lu\n", millis());
LowPower.deepSleep(600000);
}

防止 XIAO MG24 在深度睡眠期间变砖
XIAO MG24 是 Seeed Studio 推出的一款功能强大的微控制器开发板,但有用户反馈在进入深度睡眠模式后,设备会变得无响应(“变砖”)。本教程将解释问题的原因,提供详细的恢复方法,并给出预防措施,帮助你避免让 XIAO MG24 变砖。
XIAO MG24 会进入一种用于节省电能的 深度睡眠模式(EM4),但在某些情况下,它无法正常唤醒,从而无法上传新的草图程序。与其他 XIAO 开发板不同,MG24 没有专用的 BOOT 按钮,也没有文档化的进入 boot 模式的方法,这使得恢复过程更加困难。
预防措施
为了在使用深度睡眠模式时避免让 XIAO MG24 变砖,请遵循以下步骤:
- 使用逃生引脚(PC1)
XIAO MG24 内置了一个防止变砖的 逃生机制。如果在复位期间将 PC1 拉为 低电平,设备会进入一个无限循环,从而允许你上传新的草图程序。
- 在复位设备之前,将 PC1 连接到 GND。
- 复位之后,在设备处于循环状态时上传你的草图程序。
- 修改你的草图程序 在草图程序中添加以下代码,用于检测用户开关,如果按下则进入无限循环。这样在设备循环时,你就可以上传新的草图程序:
#define USER_SW PC3 // Example pin for user switch
void setup() {
// Other setup code...
pinMode(USER_SW, INPUT_PULLUP);
if (digitalRead(USER_SW) == LOW) {
Serial.println("Enable to upload new sketch");
while (true) {
digitalWrite(LED_BUILTIN, LOW);
delay(50);
digitalWrite(LED_BUILTIN, HIGH);
delay(50);
}
}
}
- 避免不必要的 Flash 睡眠
确保你的草图程序不会在非绝对必要的情况下让 Flash 存储器进入睡眠模式(Deep Power Down)。这可以避免在上传新草图程序时出现问题。
致谢
特别感谢 Seeed Studio 社区 对该问题提供的宝贵经验和解决方案。本教程中提到的恢复方法和预防措施,基于社区成员 msfujino 和 PJ_Glasso 等人的见解整理而成。
如需了解更多细节和讨论内容,请访问原始论坛帖子:
DeepSleep bricks XIAO_MG24 - Seeed Studio Forum
解除变砖
XIAO MG24 目前是唯一配备串口芯片的 XIAO 型号。与其他 XIAO 型号不同,它没有 BOOT 按钮,也没有 BOOT 恢复方法。这个设计疏漏会在设备进入睡眠模式或遇到软件异常时带来问题,使得无法通过串口上传程序。为了解决这一问题,我们提供了一种唤醒串口并恢复功能的方法。
Windows 解决方案
- 下载并解压压缩包
- 下载提供的 ZIP 文件。
- 将压缩包内容解压到电脑上的某个文件夹。
-
连接 XIAO MG24
- 使用 USB 线将无响应的 XIAO MG24 连接到电脑。
-
运行脚本
- 打开解压后的文件夹,找到脚本
flash_erase.bat。 - 双击脚本运行它。
- 脚本会擦除 Flash 存储器并重置设备。
- 打开解压后的文件夹,找到脚本
-
验证恢复情况
- 脚本运行完成后,XIAO MG24 应该已经恢复并可以正常使用。
macOS 解决方案
- 下载并解压压缩包
- 下载提供的 ZIP 文件(链接将会在此处添加)。
- 将压缩包内容解压到电脑上的某个文件夹。
-
连接 XIAO MG24
- 使用 USB 线将无响应的 XIAO MG24 连接到电脑。
-
允许 Terminal 访问权限
- 打开 System Preferences > Security & Privacy > Privacy。
- 在 Accessibility 下,确保 Terminal 被允许控制你的电脑。
- 如果列表中没有 Terminal,点击 + 按钮手动添加。
-
运行脚本
-
打开 Terminal。
-
使用
cd命令进入解压后的文件夹。例如:cd /path/to/extracted/folder -
使用以下命令运行脚本
xiao_mg24_erase.sh:./xiao_mg24_erase.sh -
脚本会使用 OpenOCD 擦除 Flash 存储器并重置设备。
-
-
验证恢复情况
- 脚本运行完成后,XIAO MG24 应该已经恢复并可以正常使用。
- 如果 macOS 无法识别 OpenOCD,请确保已安装 OpenOCD,并在脚本中使用了正确的路径。
- 提供的脚本是专门为 XIAO MG24 设计的,不应在其他 XIAO 型号上使用。
资源
适用于 Seeed Studio XIAO MG24
硬件设计
- 📄[Datasheet] Silicon Labs EFR32MG24 数据手册
- 📄[Reference Manual] Silicon Labs EFR32MG24 参考手册
- 📄[Schematic] XIAO MG24 原理图
- 🗃️[PCB Design Files] XIAO MG24 KiCad 工程
- 🗃️[PCB Design Libraries]
适用于 Seeed Studio XIAO MG24 Sense
硬件设计
- 📄[Datasheet] Silicon Labs EFR32MG24 数据手册
- 📄[Reference Manual] Silicon Labs EFR32MG24 参考手册
- 📄[Schematic] XIAO MG24 Sense 原理图
- 🗃️[PCB Design Files] XIAO MG24 Sense KiCad 工程
- 🗃️[PCB Design Libraries]
技术支持与产品讨论
感谢你选择我们的产品!我们将为你提供多种支持,确保你在使用我们产品的过程中尽可能顺利。我们提供多种沟通渠道,以满足不同的偏好和需求。






