2025 Make Blocks阶段2 - MCU(2) - 复刻Seeed Studio XIAO SAMD21核心板
该项目使用了ATSAMD21G18A-AU,实现了XIAO SAMD21相似的设计,它的主要功能为:具有 14 个引脚,可用于 11 个数字接口、11 个模拟接口、10 个 PWM 接口(d1-d10)、1 个 DAC 输出引脚 D0、1 个 SWD 焊盘接口、1 个 I2C 接口、1 个 SPI 接口、1 个 UART 接口、串行通信指示灯(T/R)、通过引脚复用的闪烁灯(L)。
标签
嵌入式系统
2025 Make Blocks
ATSAMD21G18A-AU
豆腐Orz
更新2025-08-20
10

所选任务

选择的是参照XIAO SAMD21重新设计一款MCU核心板,要求:

  • 使用TQFP-48封装的器件替换掉原设计中的QFN-48封装的器件,器件的资源跟原设计一致,只有封装发生了变化
  • 用到的MCU芯片需在DigiKey官网 上有货且正常售卖
  • 核心板上的其它器件以及管脚连接与原设计完全一致
  • 核心板的样式、尺寸跟原设计一致
  • 考虑到TQFP-48封装的器件(9x9mm)相对于原设计中QFN-48封装的器件(7x7mm)占板面积稍大,自己设计的核心板可以将部分元器件放置在背后

模块设计思路及选型

根据任务要求,我选择了ATSAMD21G18A-AU这款TQFP-48的芯片,重新设计了Seeed Studio XIAO SAMD21。与原芯片相比,除封装外,所有外设资源相同,具有 14 个引脚,可用于 11 个数字接口、11 个模拟接口、10 个 PWM 接口(d1-d10)、1 个 DAC 输出引脚 D0、1 个 SWD 焊盘接口、1 个 I2C 接口、1 个 SPI 接口、1 个 UART 接口、串行通信指示灯(T/R)、通过引脚复用的闪烁灯(L)。LED 的颜色(电源、L、RX、TX)分别为绿色、黄色、蓝色和蓝色。此外,具有 Type-C 接口,可供电和下载代码。板上有两个复位按钮,可以短接它们来复位板子。

芯片的得捷链接:ATSAMD21G18A-AU

设计框图

原理图和PCB模块介绍

原理图

PCB


  • 强大的 CPU:ARM® Cortex®-M0+ 32 位 48MHz 微控制器(SAMD21G18),具有 256KB Flash 和 32KB SRAM。
  • 灵活的兼容性:兼容 Arduino IDE。
  • 简单的项目操作:适合面包板使用。
  • 小巧尺寸:拇指大小(21x17.8mm),适用于可穿戴设备和小型项目。
  • 多种开发接口:11 个数字/模拟引脚、10 个 PWM 引脚、1 个 DAC 输出、1 个 SWD 焊盘接口、1 个 I2C 接口、1 个 UART 接口、1 个 SPI 接口。

模块主要性能指标和管脚定义

主要性能指标

项目

参数

CPU

ARM Cortex-M0+ CPU(SAMD21G18),最高运行频率 48MHz

Flash 内存

256KB

SRAM

32KB

数字 I/O 引脚

11

模拟 I/O 引脚

11

I2C 接口

1

SPI 接口

1

QTouch

7 (A0,A1,A6,A7,A8,A9,A10)

UART 接口

1

供电和下载接口

Type-C

电源

3.3V/5V DC

尺寸

21×17.8×3.5mm

关于通用 I/O 引脚: MCU 的工作电压为 3.3V。如果连接到通用 I/O 引脚的电压输入高于 3.3V,可能会导致芯片损坏。


关于电源引脚: 内置的 DC-DC 转换电路能够将 5V 电压转换为 3.3V,因此可以通过 5V-PIN 使用 5V 电源为设备供电。

管脚定义

脚属性

管脚名

管脚编号

管脚名

管脚属性

I/O

PA02_A0_D0

1

14

+5V

P

I/O

PA4_A1_D1

2

13

GND

P

I/O

PA10_A2_D2

3

12

3V3

P

I/O

PA11_A3_D3

4

11

PA6_A10_D10_MOSI

I/O

I/O

PA8_A4_D4_SDA

5

10

PA5_A9_D9_MISO

I/O

I/O

PA9_A5_D5_SCL

6

9

PA7_A8_D8_SCK

I/O

I/O

PB08_A6_D6_TX

7

8

PB09_A7_D7_RX

I/O

板上设置及标识

标记

名称

默认状态

描述

D5

PWR

指示3.3V电压是否工作正常

D6

L

通过编程可以进行状态指示

D2、D3

串行通信指示灯

通过编程可以指示通信状态

调试过程

调试工具

使用PlatformIO,Arduino框架,硬件仅需一根usb线。

编程页面

数字输入和输出

  • 使用引脚6作为数字引脚:
const int buttonPin = 6;     // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin

int buttonState = 0; // variable for reading the pushbutton status

void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}

void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);

// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
} else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}

模拟读取

  • 使用引脚6作为模拟引脚:
void setup() {
// declare the ledPin as an OUTPUT:
pinMode(ledPin, OUTPUT);
}

void loop() {
// read the value from the sensor:
sensorValue = analogRead(sensorPin);
// turn the ledPin on
digitalWrite(ledPin, HIGH);
// stop the program for <sensorValue> milliseconds:
delay(sensorValue);
// turn the ledPin off:
digitalWrite(ledPin, LOW);
// stop the program for for <sensorValue> milliseconds:
delay(sensorValue);
}

串口

  • 串口试验:
void setup() {
Serial.begin(115200);
while (!Serial);
}

void loop() {
Serial.println("Hello,World");
delay(1000);
}

DAC

  • 使用13作为输出管脚,实现DAC功能
#define DAC_PIN 13 // Make code a bit more legible
float x = 0; // Value to take the sin of
float increment = 0.02; // Value to increment x by each time
int frequency = 440; // Frequency of sine wave

void setup()
{
analogWriteResolution(10); // Set analog out resolution to max, 10-bits
analogReadResolution(12); // Set analog input resolution to max, 12-bits

Serial.begin(9600);
}

void loop()
{
// Generate a voltage value between 0 and 1023.
// Let's scale a sin wave between those values:
// Offset by 511.5, then multiply sin by 511.5.
int dacVoltage = (int)(511.5 + 511.5 * sin(x));
x += increment; // Increase value of x

// Generate a voltage between 0 and 3.3V.
// 0= 0V, 1023=3.3V, 512=1.65V, etc.
analogWrite(DAC_PIN, dacVoltage);

// Now read A1 (connected to A0), and convert that
// 12-bit ADC value to a voltage between 0 and 3.3.
float voltage = analogRead(A1) * 3.3 / 4096.0;
Serial.println(voltage); // Print the voltage.
delay(10); // Delay 10ms
}

试验效果图

详细试验效果请观看视频

心得体会

这次我使用KiCAD设计了板子,既巩固了设计能力,又熟悉了KiCAD,还使用了PlatformIO,用于管理项目和使用Arduino框架十分方便。

附件下载
XIAO_SAMD21 0623.7z
PCB工程文件
原理图.pdf
PCB原理图
t1.zip
示例代码
团队介绍
个人
评论
0 / 100
查看更多
猜你喜欢
2025 Make Blocks阶段1 - MCU(2) - 复刻Seeed Studio XIAO SAMD21核心板该项目使用了使用TQFP-48封装的ATSAMD21G18A-AU,实现了原理图和KiCad的核心板的设计,它的主要功能为:具有 14 个引脚,可用于 11 个数字接口、11 个模拟接口、10 个 PWM 接口(d1-d10)、1 个 DAC 输出引脚 D0、1 个 SWD 焊盘接口、1 个 I2C 接口、1 个 SPI 接口、1 个 UART 接口、串行通信指示灯(T/R)、通过引脚复用的闪烁灯(L)。LED 的颜色(电源、L、RX、TX)分别为绿色、黄色、蓝色和蓝色。此外, 具有 Type-C 接口,可供电和下载代码。板上有两个复位按钮,可以短接它们来复位板子。
豆腐Orz
100
2025 Make Blocks阶段1 - MCU(2) - 复刻Seeed Studio XIAO SAMD21核心板该项目使用了KiCad软件,实现了复刻Seeed Studio XIAO SAMD21核心板的设计,它的主要功能为:基于 ATSAMD21G18A-AU(TQFP-48封装)实现​​高性能实时信号处理​​,通过​​12-bit ADC(5.2MSPS)​​ 完成多路数据采集,搭配​​128KB SRAM​​缓存与​​DSP指令集​​进行FFT等实时运算;​​30个可编程IO​​通过​​DIP40蛇形孔​​直连小脚丫FPGA扩展板,支持SPI/I²C/USB通信;板载​​双供电模式​​(USB Type-C输入/3.3V 500mA输出)与​​3.0V低噪LDO​​确保ADC精度;​​双LED指示​​电源状态与用户可编程信号,并通过​​SWD接口​​实现快速调试,完全兼容原设计尺寸(18×52mm)与示波器开发需求。。
sren
19
2025 Make Blocks阶段2 - 复刻Seeed Studio XIAO SAMD21核心板该项目使用了ATSAMD21G18A-AU,实现了Seeed Studio XIAO SAMD21核心板的设计,它的主要功能为:原设计使用的是QFN48封装的器件,为方便自己手动焊接,使用TQFP-48封装。
Tide
15
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号