1. 课程导入与开发环境搭建
Microchip SAM 系列是基于 Arm Cortex-M 内核的 32 位 MCU 产品线,覆盖从低功耗小容量到高性能带外部总线的多种型号。学习 SAM 外设驱动与板级适配,第一步不是急着写代码,而是把“选型—工具链—框架—硬件连接—最小工程”这条链路走通。本章围绕这条链路展开,目标是让你能独立完成一个可编译、可下载、可观察的 GPIO 点灯工程。
1.1 SAM 系列选型:先看内核与封装,再看外设与生态
SAM 家族常见分支包括 SAM D(Cortex-M0+/M23,主打低功耗与 USB)、SAM G(Cortex-M4F,带浮点与低功耗)、SAM E(Cortex-M4F,带以太网、CAN、LCD 等丰富外设)、SAM S(Cortex-M7,高性能)、SAM V(Cortex-A5,跑 Linux 级应用)以及 SAM L(Cortex-M23,超低功耗)。选型时建议按以下顺序判断:
- 内核与主频:是否需要 FPU/DSP、是否需要 100 MHz 以上主频;
- 存储与封装:Flash/RAM 是否够协议栈与缓冲,引脚数是否匹配 PCB 空间;
- 外设组合:Sercom(可配置为 UART/SPI/I2C)、ADC/DAC、USB、CAN、以太网、TCC 等;
- 生态与工具:是否被 Harmony v3 支持、是否有官方 Xplained Pro 板与例程。
例如做一个带 USB 与低功耗采集的节点,SAM D21(Cortex-M0+,48 MHz,256 KB Flash,32 KB RAM)通常足够;若需要以太网与 CAN,则 SAM E70(Cortex-M7,300 MHz)更合适。选型不是越强越好,而是“外设够用、封装可布、工具链支持”三者平衡。
1.2 Atmel Studio 与 MPLAB X IDE 对比
Atmel Studio 是早期 SAM/AVR 的官方 IDE,基于 Visual Studio 外壳,Windows 独占,对旧版 ASF 支持好,但已停止更新。MPLAB X IDE 是 Microchip 当前主推的跨平台 IDE(Windows/Linux/macOS),基于 NetBeans,配合 MCC(MPLAB Code Configurator)与 Harmony v3 使用,支持 XC32、XC16、XC8 编译器。对于新项目,应优先选择 MPLAB X IDE + Harmony v3;Atmel Studio 仅用于维护旧工程。
| 对比项 | Atmel Studio | MPLAB X IDE |
|---|---|---|
| 平台 | 仅 Windows | Windows / Linux / macOS |
| 框架 | ASF(旧) | Harmony v3 + MCC |
| 维护状态 | 停止更新 | 持续更新 |
| 推荐场景 | 旧工程维护 | 新项目开发 |
1.3 Harmony v3 框架简介
Harmony v3 是 Microchip 为 SAM 与 PIC32 提供的固件框架,采用分层结构:底层是 PLIB(外设库,直接操作寄存器),中间是驱动层(DRV),上层是系统服务(System Service)与中间件(USB、TCP/IP、文件系统等)。它通过 MCC 图形化配置生成初始化代码,把时钟、引脚、外设参数固化为配置结构,减少手写寄存器的工作量。理解 Harmony v3 的关键是分清“配置生成”与“应用逻辑”的边界:配置由 MCC 完成,应用逻辑写在生成的 app.c 或用户文件中。
1.4 开发板与调试器连接
以 SAM D21 Xplained Pro 为例,板载 EDBG 调试器通过 USB 与 PC 连接,同时提供虚拟串口与调试接口。若使用独立调试器(如 Atmel-ICE 或 PICkit 4),需连接 SWD 四线:SWCLK、SWDIO、GND、VTref。连接时注意:
- 目标板供电与调试器 VTref 电平一致(通常 3.3 V);
- SWD 线尽量短,避免与高频信号并行;
- 首次连接在 MPLAB X 中确认设备 ID 能被识别,再下载程序。
1.5 第一个 GPIO 点灯工程
在 MPLAB X 中新建 Harmony v3 工程,选择目标器件(如 ATSAMD21G18A),用 MCC 配置:系统时钟 48 MHz,将 PA17 配置为 GPIO 输出(对应板载 LED)。生成代码后,在应用层调用驱动接口翻转引脚。示例逻辑如下:
// 初始化后,在主循环中翻转 LED
while (1) {
GPIO_PinToggle(GPIO_PIN_PA17);
for (volatile uint32_t i = 0; i < 480000; i++); // 约 10 ms 延时
}
编译下载后,观察板载 LED 是否以约 50 Hz 闪烁(10 ms 翻转一次,周期 20 ms)。若 LED 不亮,依次检查:引脚配置是否为输出、时钟是否使能、下载是否成功、LED 极性是否接反。这个最小工程验证了工具链、调试器、时钟与 GPIO 驱动整条链路,是后续所有外设实验的基础。