任务介绍
本次活动我选择的任务是 MCU(2) - 复刻Seeed Studio XIAO SAMD21核心板
模块介绍
根据任务要求我参照XIAO SAMD21重新设计一款MCU核心板,保证了:
- 使用TQFP-48封装的器件替换掉原设计中的QFN-48封装的器件,器件的资源跟原设计一致,只有封装发生了变化
- 用到的MCU芯片需在DigiKey官网 上有货且正常售卖
- 核心板上的其它器件以及管脚连接与原设计完全一致
- 核心板的样式、尺寸跟原设计一致
ATSAMD21G18A-AU芯片DigiKey链接:ATSAMD21G18A-AU Microchip Technology | 集成电路(IC) | DigiKey
模块主要性能指标和管脚定义
主要性能指标
类型 | MCU核心板 |
---|---|
核心芯片 | ATSAMD21G18A-AU |
内核 | Arm Cortex-M0+ |
时钟频率 | 48MHz |
SRAM | 32KB |
Flash | 256KB |
IO数量 | 14 |
板卡尺寸 | 21mm x 17.8mm |
供电电压 | 3.3V |
输出信号电平 | 3.3V |
管脚定义
管脚定义和原Seeed Studio XIAO SAMD21核心板一致
引脚编号 | 引脚名称 | 功能描述 |
---|---|---|
DAC/D0/A0 | DAC 输出 / 数字输入输出 / 模拟输入 | 具有 DAC 功能,可输出真正的模拟信号;也可作为数字输入输出;也可作为模拟输入 |
D1/A1 | 数字输入输出 / 模拟输入 | 可作为数字输入输出;也可作为模拟输入 |
D2/A2 | 数字输入输出 / 模拟输入 | 可作为数字输入输出;也可作为模拟输入 |
D3/A3 | 数字输入输出 / 模拟输入 | 可作为数字输入输出;也可作为模拟输入 |
SDA/D4/A4 | I²C 通信 (数据线)/数字输入输出 / 模拟输入 | I²C 总线的数据线,用于连接 I²C 设备;也可作为数字输入输出;也可作为模拟输入 |
SCL/D5/A5 | I²C 通信 (时钟线)/数字输入输出 / 模拟输入 | I²C 总线的时钟线,用于连接 I²C 设备;也可作为数字输入输出;也可作为模拟输入 |
TX/D6/A6 | 串口通信 (发送)/数字输入输出 / 模拟输入 | UART 串口的发送线,用于发送数据;也可作为数字输入输出;也可作为模拟输入 |
RX/D7/A7 | 串口通信 (接收)/数字输入输出 / 模拟输入 | UART 串口的接收线,用于接收数据;也可作为数字输入输出;也可作为模拟输入 |
SCK/D8/A8 | SPI 通信 (时钟线)/数字输入输出 / 模拟输入 | SPI 总线的时钟线,用于同步数据传输;也可作为数字输入输出;也可作为模拟输入 |
MISO/D9/A9 | SPI 通信 (主输入从输出线)/数字输入输出 / 模拟输入 | SPI 总线的主输入从输出线,用于接收数据从 SPI 设备;也可作为数字输入输出;也可作为模拟输入 |
MOSI/D10/A10 | SPI 通信 (主输出从输入线)/数字输入输出 / 模拟输入 | SPI 总线的主输出从输入线,用于发送数据到 SPI 设备;也可作为数字输入输出;也可作为模拟输入 |
3V3 | 电源 | 提供 3.3V 电源 |
5V | 电源 | 提供 5V 电源 |
GND | 地 | 作为电路的公共地 |
设计思路
- 场景定位
• 超小型、低功耗、通用型 Cortex-M0+ 控制器模块,可直接贴片或插面包板。
• 兼容 Arduino/CircuitPython,方便教育、可穿戴、传感器节点等快速原型。 - 设计目标
• 21 mm × 17.8 mm 极限尺寸(≈1 枚硬币)。
• 单面器件、背面裸铜邮票孔,便于回流焊贴片。
• 全引脚引出 14×GPIO(含 11×ADC、1×DAC、10×PWM、1×I²C、1×SPI、1×UART、SWD)。
• 一颗 Type-C 口完成供电 + 原生 USB CDC 下载/调试。
• 板载 32.768 kHz 晶振 + PLL 提供 48 MHz 主时钟,无需外部时钟源即可工作。 - 可靠性
• 预留 SWD 测试点与 Reset 测试点,方便量产离线烧录;
• 邮票孔 + 1.27 mm 排针双兼容,适配不同组装方式。
关键器件选型表
功能 | 选型型号 / 规格 | 选型理由 |
---|---|---|
MCU | ATSAMD21G18A-AU (TQFP-48) | 和官方 XIAO PIN脚定义相同,为TQFP48封装,方便焊接。 |
USB 连接器 | Type-C 16 Pin | 16 Pin 版本兼容完整 CC/SBU 信号,可正反插,便于量产测试 |
3.3 V LDO | XC6206P332MR (SOT-23-3) | 超低静态电流 1 µA,150 mA 输出,外围仅需 10 µF 去耦,成本低、体积小 |
晶振 | FC-12M 32.768 kHz (2.0 × 1.2 mm) | 负载电容 12 pF,提供精确温度的时钟信号 |
去耦电容 | 100 nF X7R 0402 × 3 + 1µF X7R 0402 × 1 | 电源脚就近布置,抑制高频噪声 |
LED | 0402 LED × 4 | 限流 电阻1 kΩ: Power、User(PA17)、TX、RX指示灯 |
复位 | 10 kΩ 上拉 + 100 nF 电容 | 短接0.8 mm 圆焊盘 (RST/GND)进行RC复位,节省按键空间 |
扩展接口 | 2×7 Pin 2.54 mm 排针 | 共 14 Pin,含 SWD/GPIO/电源 |
原理图和PCB模块介绍
原理图
PCB
电源管理部分
稳压电路:核心板中包含了一个稳压电路,用于将USB供电转换为核心板所需的3.3V稳定电压。采用了一个低压差线性稳压器XC6206P332MR来实现,以确保为微控制器和其他元件提供干净、稳定的电源。
电源去耦电容:在电源引脚附近会放置去耦电容,用于滤除电源线上的高频噪声,保证电源的稳定性,提高电路的抗干扰能力。
时钟电路
SAMD21微控制器通常具有内部时钟源,但在某些情况下,为了获得更高的时钟精度和稳定性,可能会使用外部晶振或时钟发生器。原理图中使用了一个32.768K的无源晶振连接到SAMD21的时钟输入引脚。
复位电路
包含一个复位电路,由一个电容和上拉电阻组成,用于在需要时手动复位微控制器,确保其重新启动并从初始状态开始运行。
3D效果图
XIAO SAMD21核心板的尺寸仅为19.2mm x 15.6mm,便于集成到各种小型项目和设备中。这个板子上有4个LED,分别是:
用户LED:板上有一个用户LED,连接到PA17,可用于指示程序运行状态或作为简单的输出指示器,开发者可通过编程控制其亮灭。
电源LED:板上有一个电源LED,用于指示核心板的电源状态,当核心板正常供电时,该LED会亮起,显示电源正常。
串口下载LED:板上有两个LED用于串口下载,分别是RX和TX LED。这两个LED在串口通信时会闪烁,表示数据正在传输或接收。它们也可以通过编程进行控制。
PCB我重新打板了一次,原因是我用的官方的Type-C 接口PCB封装库有问题,他们的孔径更小,焊接不上。现在我已经重新修改好了,具体文件参考附件
调试软件
Seed XIAO SAMD21 的 ATSAMD21G18A 在硬件复位后默认从 0x0000 0000 取第一条指令。若 Flash 中没有 USB Bootloader,MCU 便无法枚举为 USB CDC/MSC 设备。所以我们要为焊接好的板子烧录Bootloader。
烧录 Seed XIAO SAMD21 Bootloader 的标准流程可归纳为 4 个步骤:
1、准备烧录环境
硬件:SWD 调试器(J-Link / CMSIS-DAP / ATMEL-ICE)、待烧录的开发板、杜邦线
我使用的是XIAO SAMD21(已烧录 Arduino Bootloader),可以通过以下配置把它配置为DAPLink 调试器:
1)从 Seeed 官方 Wiki 下载适用于 XIAO SAMD21 的 DAPLink 固件simple_daplink_xiao.uf2
2)使用数据线连接 XIAO 到电脑,将 XIAO 上的 RESET 和GND焊盘快速短接两次,此时电脑会识别出一个名为 “Arduino” 的 USB 驱动器(U盘)
3)将下载的 simple_daplink_xiao.uf2 文件拖入该驱动器,烧录完成后,XIAO 会自动重启,并识别为 DAPLink CMSIS-DAP 设备
软件:OpenOCD 或 pyOCD,以及官方的Bootloader文件:bootloader-XIAO_m0-v3.7.0-33-g90ff611-dirty.bin 。
我使用的软件是pyOCD(pip 安装,轻量):
1)安装:已装 Python 3.6+(Python 官网下载并勾选“Add to PATH”)。
打开 CMD 或 PowerShell,执行:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -U pyocd
安装完成后验证:
pyocd --version
2、连接 SWD 接口
将调试器的排针引脚接到要烧录的 XIAO 板对应的SWDIO、SWCLK、GND、3V3测试点和电源脚 。
3、擦除并写入 Bootloader
由于pyOCD 默认并没有内置 ATSAMD21G18 的完整支持,需要用 CMSIS-Pack 来补全。需要通过Microchip 官方包索引页下载:Microchip SAMD21 系列器件支持(3.6.144)
然后win+R用命令行烧录:
pyocd flash ^
--pack "C:\Users\Tide\Desktop\Seeeduino XIAO\Microchip.SAMD21_DFP.3.6.144.atpack" ^
-t atsamd21g18a ^
"C:\Users\Tide\Desktop\Seeeduino XIAO\ArduinoCore-samd-master\bootloaders\XIAOM0\bootloader-XIAO_m0-v3.7.0-33-g90ff611-dirty.bin"
pyocd flash 子命令:把文件烧录进芯片 Flash
pack 指向你下载的 Microchip.SAMD21_DFP.3.6.144.atpack 文件
target 目标芯片型号,与Pack 里的名字必须一致,为 atsamd21g18a
最后一个参数 待烧录文件bootloader-XIAO_m0-v3.7.0-33-g90ff611-dirty.bin 路径
写入成功截图
4、验证 Bootloader 功能
断开调试器,双击 RESET
电脑应出现 “Arduino” 或 “XIAO” U 盘
打开 Arduino IDE → 选 Seeeduino XIAO (SAMD21) → 上传 Blink 示例,LED 闪烁即成功
LED闪烁
心得体会
完成这个复刻Seeed Studio XIAO SAMD21核心板的项目是一次宝贵的学习和实践经历。在整个过程中,我不仅加深了对Cortex-M0+微控制器的理解,还掌握了更多关于电路设计、PCB布局和USB通信的知识。从最初的设计思路到最终的产品实现,每一个环节都充满了挑战,但同时也带来了成长。
在设计阶段,我学会了如何根据项目需求选择合适的器件,并考虑封装、尺寸和兼容性等因素。在PCB设计过程中,我意识到了细节的重要性,比如焊盘设计、电源去耦和信号完整性等,这些都直接影响到电路的性能和可靠性。调试过程中,我学会了使用各种工具和软件,比如pyOCD,来验证和调试硬件。
这个项目不仅提升了我的技术能力,也增强了解决复杂问题的信心,为我未来的电子设计之路打下了坚实的基础。