常见开发板选型与信息速查
一句话结论
如果不确定买什么,按这个优先级买:ESP32-S3 DevKitC 一块 + STM32F103C8T6 蓝丸两块 + 树莓派 5(或 4B)一台。这三块覆盖了「联网 IoT」「裸机/实时控制」「Linux 应用」三条完全不同的技术路线,加起来不到 500 元。剩下的板子等具体需求出现了再买。
一、按层级速查总表
1.1 入门 MCU 级(8/32 位单片机,无操作系统)
| 板卡 | 主控/架构 | 主频 | SRAM / Flash | 可用 GPIO | 关键外设 | 典型功耗 | 参考价格 | 最适合 | 不适合 |
|---|---|---|---|---|---|---|---|---|---|
| Arduino Uno R3 | ATmega328P(AVR 8 位) | 16 MHz | 2 KB / 32 KB(+1 KB EEPROM) | 14(6×PWM)+ 6×ADC | UART×1、SPI、I2C、无无线 | 约 40–60 mA | 国产兼容 ¥25–45,原装 ¥150+ | 纯零基础教学、点灯、读传感器、丰富的 Shield 生态 | 联网、低功耗电池、任何 RAM > 2 KB 的需求 |
| Arduino Nano | ATmega328P(CH340 克隆为主) | 16 MHz | 2 KB / 32 KB | 14 + 8×ADC | UART、SPI、I2C | 约 20–40 mA | ¥12–25 | 面包板原型、体积受限的小作品 | 同上,且无 DC 插孔,供电能力弱 |
| Arduino Nano Every | ATmega4809(AVR) | 20 MHz | 6 KB / 48 KB | 14 + 8×ADC | UART×2、SPI、I2C | 约 25 mA | ¥60–90 | 想要 Uno 生态但资源不够用 | 性价比敏感场景 |
| Arduino Nano 33 IoT | SAMD21 Cortex-M0+ | 48 MHz | 32 KB / 256 KB | 14 + 8×ADC(12 位) | WiFi + BLE(NINA W102 协处理)、6 轴 IMU | 约 40 mA | ¥150–220 | 要 Arduino 官方生态 + 官方无线支持 | 性价比、深度定制无线 |
| STM32F103C8T6「蓝丸」 | Cortex-M3 | 72 MHz | 20 KB / 64 KB(多数实为 128 KB) | 约 32 | 2×SPI、2×I2C、3×USART、CAN、USB 2.0 FS、10 通道 12 位 ADC | 30–60 mA | ¥12–25 | 实时控制、CAN 总线、学 HAL/RTOS、工业小批量 | 联网(需外接模块)、内存吃紧的算法 |
| STM32F407VE/ZE 开发板 | Cortex-M4F(FPU + DSP) | 168 MHz | 192 KB / 512 KB | 约 50–80 | 以太网 MAC、DCMI 摄像头、2×CAN、USB OTG FS/HS、DAC | 80–150 mA | ¥45–90 | 网络 + 控制混合、跑 FreeRTOS/LwIP/USB 主机 | 电池供电、极低成本 |
| STM32F411CEU6「黑丸」 | Cortex-M4F | 100 MHz | 128 KB / 512 KB | 约 30 | USB Type-C、SPI/I2C/USART、无以太网 | 40–80 mA | ¥20–35 | 想要 M4 性能但板子要小 | 需要以太网/DCMI 的项目 |
| CH32V003 开发板 | 沁恒 RISC-V RV32EC | 48 MHz | 2 KB / 16 KB | 18 | UART、SPI、I2C、ADC、无 USB(需 CH32V003 无 USB,用串口下载) | 约 10 mA | 板 ¥10–20,芯片 ¥0.5–1.5 | 极致成本量产、替代 8 位机 | 原型开发、需要 USB/无线 |
| GD32F103C8T6 开发板 | 兆易 Cortex-M3 | 108 MHz | 20 KB / 64–128 KB | 约 32 | 与 STM32F103 引脚兼容 | 30–60 mA | ¥10–20 | STM32 缺货时的国产替代 | 直接烧录 STM32 二进制固件 |
1.2 无线 IoT 级(自带 WiFi / BLE)
| 板卡 | 主控/架构 | 主频 | SRAM / Flash | 可用 GPIO | 关键外设 | 典型功耗 | 参考价格 | 最适合 | 不适合 |
|---|---|---|---|---|---|---|---|---|---|
| ESP8266(D1 mini / NodeMCU) | Tensilica L106 32 位 | 80 / 160 MHz | 约 50 KB 可用 / 外挂 4 MB | 11(D1 mini) | WiFi 802.11 b/g/n 2.4G、无 BLE、仅 1 路 ADC(0–1 V) | 深度睡眠 ~20 µA,峰值 ~170 mA | ¥10–20 | 老项目维护、极低成本 WiFi 开关 | 新项目(ESP32 全面更优)、BLE、多路 ADC |
| ESP32 DevKitC(WROOM-32) | Xtensa LX6 双核 | 240 MHz | 520 KB / 外挂 4 MB | 约 26–34 | WiFi 4 + BT 4.2(含经典蓝牙)、TWAI(CAN 控制器)、电容触摸×10、2×8 位 DAC、18 通道 ADC | 深度睡眠 ~10 µA,峰值 240 mA+ | ¥20–40 | IoT 主力、MQTT、蓝牙网关、Mesh | 超低功耗电池长期(C3 更省)、USB 原生设备 |
| ESP32-C3 | RISC-V 单核 | 160 MHz | 400 KB / 外挂 4 MB | 22 | WiFi 4 + BLE 5、无 DAC、原生 USB CDC(部分型号) | 深度睡眠 ~5 µA | ¥10–18 | 量产首选、低成本 + 安全特性齐全 | 需要 DAC/双核/多 IO |
| ESP32-S2 | Xtensa LX7 单核 | 240 MHz | 320 KB / 外挂 4 MB | 43 | WiFi 4、原生 USB OTG、无蓝牙、电容触摸 | 同上量级 | ¥18–30 | USB 设备(HID/CDC)+ WiFi | 需要蓝牙 |
| ESP32-S3 | Xtensa LX7 双核 | 240 MHz | 512 KB / 8–16 MB + PSRAM | 45 | WiFi 4 + BLE 5、原生 USB OTG、向量指令(AI/ DSP 加速)、DCMI 摄像头、LCD 接口 | 峰值 300 mA+ | ¥25–50 | 摄像头、语音、本地 AI、USB HID、IO 密集型 | 极致成本(选 C3) |
| ESP32-C6 | RISC-V 32 位 | 160 MHz | 512 KB / 外挂 4 MB | 30 | WiFi 6 + BLE 5 + 802.15.4(Thread/Zigbee) | 低功耗 | ¥20–35 | Matter / Thread 智能家居、WiFi 6 | 生态尚在成熟中 |
| ESP32-H2 | RISC-V 32 位 | 96 MHz | 320 KB / 外挂 4 MB | 19 | BLE 5 + 802.15.4(Zigbee/Thread),无 WiFi | 极低 | ¥15–28 | Zigbee / Thread 网关节点 | 需要 WiFi 的项目 |
| RP2040 + 无线(Pico W) | 双核 Cortex-M0+ | 133 MHz | 264 KB / 板载 2 MB QSPI | 26 | WiFi 4 + BLE 5(CYW43439)、8×PIO 状态机、原生 USB | 休眠较低,峰值 ~100 mA | ¥35–45 | PIO 波形 + 联网、MicroPython 教学 | ADC 精度、模拟前端要求高的项目 |
1.3 Linux 单板级(跑完整操作系统)
| 板卡 | 主控/架构 | 主频 | RAM / 存储 | GPIO | 关键外设 | 典型功耗 | 参考价格 | 最适合 | 不适合 |
|---|---|---|---|---|---|---|---|---|---|
| Raspberry Pi Zero 2 W | BCM2710A1 四核 Cortex-A53 | 1 GHz | 512 MB / microSD | 40 pin | WiFi b/g/n + BT 4.2、mini-HDMI、1×micro-USB OTG、CSI(窄排线) | 空闲 ~0.5 W,满载 ~2 W | ¥80–150 | 体积/功耗受限的 Linux 节点、机器人子节点 | 桌面、重算力、多 USB |
| Raspberry Pi 4B | BCM2711 四核 Cortex-A72 | 1.5 / 1.8 GHz | 1/2/4/8 GB / microSD | 40 pin | 2×micro-HDMI(4K30)、2×USB3.0 + 2×USB2.0、GbE、WiFi 5 + BT 5.0、CSI、DSI | 空闲 ~2.7 W,满载 ~7 W(5 V/3 A) | ¥300–550 | Home Assistant、NAS、ROS 主机、OpenCV 入门 | 极致低功耗、硬实时 |
| Raspberry Pi 5 | BCM2712 四核 Cortex-A76 | 2.4 GHz | 4/8 GB / microSD + PCIe 2.0 ×1 | 40 pin | 2×4-lane MIPI CSI/DSI、2×micro-HDMI(双 4K60)、GbE、WiFi 5 + BT 5.0、RTC + 电源键、风扇接口 | 5 V/5 A PD(27 W),满载 ~12 W | ¥450–700 | 桌面替代、NVMe 高速存储、PCIe 加速棒(Hailo-8L / Coral TPU)、多路摄像头 | 电池供电、无散热空间 |
| BeagleBone Black Rev C | TI AM3358 Cortex-A8 | 1 GHz | 512 MB / 4 GB eMMC | 2×46 pin(65 个 IO) | 2×PRU 200 MHz 实时协处理器、micro-HDMI、USB、无 WiFi(需 dongle) | 2–5 W | ¥250–400 | 工业 IO 密集、硬实时脉冲(PRU)、学 Device Tree / 驱动 | 桌面、生态新项目、无线 |
| NanoPi NEO3 / R2S / R4S | RK3328 / RK3399 | 1.4–1.8 GHz | 1–4 GB / microSD | 24–30 pin | 千兆网口(部分双网口)、USB3.0 | 3–8 W | ¥150–450 | 软路由、OpenWrt、轻量服务器 | GPIO 生态、新手入门 |
| NanoPi R5S / R6S | RK3568 / RK3588S | 2.0–2.4 GHz | 4–8 GB / eMMC + NVMe | 26–30 pin | 2.5G 双网口 + M.2 NVMe、RK3588 6 TOPS NPU | 5–15 W | ¥450–900 | 软路由 + 边缘 NPU 推理、旁路由 | 需要官方长期支持的 GPIO 库 |
| Orange Pi Zero 2W / 3B / 5 | 全志 H618 / H616 / RK3588S | 1.5–2.4 GHz | 1–16 GB / microSD + eMMC/NVMe | 26–40 pin | WiFi + BT、USB3.0、HDMI、部分带 NPU | 3–12 W | ¥80–600 | 超低成本 Linux、自制小设备、RK3588 玩法 | 主线内核支持滞后、新手踩坑 |
| Lichee Pi Zero / 4A | 全志 V3s(A7)/ TH1520(RV64) | 1.2 GHz / 1.85 GHz | 64 MB SiP / 8–16 GB | 26–40 pin | 极低成本、可自制核心板、RISC-V 版本 | 0.5–8 W | ¥60–500 | 学 linux-sunxi、做最小 Linux 系统、RISC-V 尝鲜 | 内存小、资料零散 |
1.4 边缘 AI / 异构计算级
| 板卡 | 主控/架构 | 算力 | RAM / 存储 | GPIO | 关键外设 | 典型功耗 | 参考价格 | 最适合 | 不适合 |
|---|---|---|---|---|---|---|---|---|---|
| Jetson Nano 4GB(B01) | Tegra X1,四核 A57 + 128 CUDA(Maxwell) | 472 GFLOPS(FP16) | 4 GB / microSD 或 eMMC | 40 pin(兼容 Pi 排布) | 4×USB3.0、GbE、2×MIPI CSI-2、HDMI、DisplayPort | 10 W 模式(5 V/4 A) | ¥500–900(已停产,价高) | 学 JetPack / CUDA / TensorRT、老项目维护 | 新项目(选 Orin Nano Super) |
| Jetson Orin Nano Super(8 GB) | 六核 Cortex-A78AE + Ampere GPU(1024 CUDA / 32 Tensor Core) | 67 TOPS(INT8) | 8 GB / NVMe 推荐 | 40 pin | M.2 NVMe、4×USB3.2、GbE、多路 CSI | 7 / 15 / 25 W 可调 | ¥1200–2000 | YOLOv8/v11 实时推理、ROS 2 机器人、多路视觉 | 预算极低、电池供电 |
| Jetson Orin NX(16 GB) | 八核 A78AE + Ampere GPU | 最高 157 TOPS(INT8) | 16 GB / NVMe | 40 pin | 多路 CSI、PCIe ×4、NVMe | 10–40 W | ¥2500–4500 | 端侧多模态、具身智能、多路 SLAM | 入门学习(性能过剩) |
| 树莓派 5 + Hailo-8L | BCM2712 + Hailo-8L(PCIe M.2 HAT) | 13 TOPS(INT8) | 4–8 GB / NVMe | 40 pin | 需购买 AI Kit(约 ¥500–700) | 额外 2–3 W | 板 + Kit 约 ¥1000–1300 | 想留在树莓派生态又要像样 NPU | 对延迟/多模型并发要求高 |
| 树莓派 4B / 5 + Coral TPU | USB 或 PCIe 加速棒 | 4 TOPS(INT8,仅支持 TensorFlow Lite) | — | — | USB 3.0 / M.2 | 2–4 W | ¥300–600(棒) | 轻量分类/检测、低功耗推理 | 新项目(Coral 已停售,生态收缩) |
| BeagleBone AI-64 | TDA4VM:双 A72 + 4×R5F + 2×C66x DSP + 4×EVE | 8 TOPS | 4 GB / 16 GB eMMC | 双 46 pin | 4×CSI、PCIe、双千兆网(含工业 TSN) | 5–15 W | ¥1200–1800 | 工业 + AI 混合、学异构 SoC(R5F 实时核 + DSP) | 新手、快速出成果 |
| K230 / K210(嘉楠) | RISC-V 双核 + KPU | 0.2–6 TOPS | 8 MB–1 GB | 约 30 | 摄像头直连、LCD、低功耗 | 0.3–3 W | ¥80–300 | 超低功耗视觉 AI(人脸/分类) | 复杂模型、通用 Linux 开发 |
1.5 FPGA 入门板(可选)
| 板卡 | 芯片 | 逻辑资源 | 存储 | 工具链 | 参考价格 | 最适合 | 不适合 |
|---|---|---|---|---|---|---|---|
| Tang Nano 9K / 20K | 高云 GW1NR-9 / GW1N-20 | 8640 / 20736 LUT | 8 Mb PSRAM + SDRAM(部分型号) | Gowin EDA(免费 license 需申请) | ¥60–150 | 国内最便宜的 Verilog 入门、HDMI 输出实验 | 需要开源工具链(yosys+nextpnr 支持有限) |
| 正点原子 达芬奇 / 新起点 | Xilinx Artix-7 XC7A35T / XC7A100T | 33k / 101k LUT | DDR3 | Vivado(免费 WebPack) | ¥400–900 | 学 Vivado、IP 核、MicroBlaze 软核 | 便携/低成本 |
| iCEBreaker / iCE40UP5K | Lattice iCE40UP5K | 5280 LUT | — | 全开源:yosys + nextpnr + iceprog | ¥200–350 | 想用完全开源工具链、理解综合实现流程 | 大设计、高速接口 |
⚠️ 注意:以上价格为国内电商(含关税波动与缺货行情)的参考区间,行情变化很快,下单前请以当日实际报价为准。芯片级原厂涨价时,克隆板价格可以差 3–5 倍,务必看清主控丝印。
二、选型决策树
2.1 按需求直接对号入座
| 你的需求 | 首选 | 备选 | 关键理由 |
|---|---|---|---|
| 只点个灯、读个温湿度、做教学演示 | Arduino Nano(¥12) | Arduino Uno R3 | 生态最厚,翻车率最低,5 V 电平抗造 |
| 要联网(MQTT / HTTP / Home Assistant)+ 便宜 | ESP32-C3 | ESP32-S3 | 单芯片 WiFi+BLE,深度睡眠 µA 级,Arduino/ESP-IDF/MicroPython 全支持 |
| 要联网 + 摄像头 / 语音 / USB HID / 很多 IO | ESP32-S3(带 PSRAM) | ESP32 原版(仅 IO 够用) | 512 KB SRAM + 8 MB PSRAM + 向量指令,原生 USB OTG |
| 要蓝牙(BLE)低功耗传感器节点 | ESP32-C3 / nRF52840 | ESP32-H2(Zigbee/Thread) | 深度睡眠电流 µA 级,nRF52840 生态偏 Zephyr |
| 要硬实时、精确时序、PWM 死区、电机 FOC | STM32F103C8T6 / F407 | RP2040(PIO 做波形) | 定时器/高级定时器资源完整,中断延迟确定 |
| 要 CAN 总线(车载 / 工业) | STM32F103(需 CAN 收发器) / F407(双 CAN) | ESP32(TWAI + 收发器) | STM32 的 CAN 外设与生态最成熟 |
| 要跑 Linux、写 Python、跑 Docker、Home Assistant | 树莓派 5(或 4B) | NanoPi / Orange Pi(预算紧) | 资料最多,GPIO 生态最全,出问题最好搜 |
| 要跑 Linux 且体积/功耗受限 | Raspberry Pi Zero 2 W | Orange Pi Zero 2W | 四核 A53 + WiFi,成本不到百元 |
| 要做视觉 / 跑 YOLO / ROS 2 机器人 | Jetson Orin Nano Super 8 GB | 树莓派 5 + Hailo-8L | JetPack 自带 CUDA/TensorRT/VPI,模型部署链路最顺 |
| 要多路摄像头 + SLAM + 端侧大模型 | Jetson Orin NX 16 GB | 工控机 + 独显 | 带宽和算力都需要,预算也要够 |
| 要工业级硬实时 + 大量 IO | BeagleBone Black(PRU) | STM32 + Linux 主机 | PRU 是 200 MHz 确定性协处理器,可在 Linux 旁做硬时序 |
| 要超低成本量产(BOM < ¥5) | CH32V003 / ESP32-C3 | GD32F103 / STM32F030 | 芯片单价 ¥1 级,但开发效率要权衡 |
| 想理解数字电路 / 写 Verilog / 做高速并行 | Tang Nano 9K | Artix-7 板 | 并行是 FPGA 的核心优势,别拿它跟 MCU 比"谁快" |
| 想学 Device Tree、内核驱动、U-Boot | BeagleBone Black / 全志板 | 树莓派(主线支持好但闭源 boot) | 全志/BB 的资料更偏"底层",树莓派偏"应用" |
2.2 决策流程(逐级自问)
Q1. 需要跑 Linux 吗?
├─ 需要 ──→ Q2
└─ 不需要(裸机/RTOS)──→ Q4
Q2. 需要 GPU 算力跑神经网络吗?
├─ 需要 ──→ Jetson Orin Nano Super / Orin NX(> 40 TOPS 选 NX)
│ 预算不足则 树莓派 5 + Hailo-8L(13 TOPS)
└─ 只需要通用 Linux ──→ Q3
Q3. 预算和体积?
├─ 体积/功耗优先 ──→ Raspberry Pi Zero 2 W
├─ 通用推荐 ──→ Raspberry Pi 5(4 GB 够用,8 GB 留给多容器)
└─ 预算 < 200 或要网口/软路由 ──→ Orange Pi Zero 2W / NanoPi R2S
Q4. 需要无线(WiFi / BLE)吗?
├─ 需要 ──→ Q5
└─ 不需要 ──→ Q6
Q5. 无线的形态?
├─ 只要 WiFi,成本敏感 ──→ ESP32-C3
├─ WiFi + BLE + 更多 IO / 摄像头 / USB ──→ ESP32-S3
├─ Zigbee / Thread / Matter ──→ ESP32-C6 或 ESP32-H2
└─ 要 PIO 精确波形 + 联网 ──→ Pico W
Q6. 需要硬实时 / CAN / 精确定时器吗?
├─ 需要 ──→ Q7
└─ 只是点灯读传感器 ──→ Arduino Nano(教学)或 CH32V003(量产)
Q7. 资源需求?
├─ 入门、量产、成本敏感 ──→ STM32F103C8T6(注意买带 CAN 收发器底板)
├─ 需要以太网 / 摄像头 / 更高主频 ──→ STM32F407
└─ 需要国产替代 / 供货保障 ──→ GD32F103(注意不兼容 STM32 二进制)
2.3 三种常见错误选型
| 错误做法 | 后果 | 正确做法 |
|---|---|---|
| 用树莓派做精确脉冲控制(步进电机、WS2812 严格时序) | Linux 非实时,脉冲抖动导致丢步或灯珠乱闪 | 用 STM32 / RP2040(PIO)做下位机,树莓派做上位机发指令 |
| 用 ESP8266 开新项目 | 资源紧张、无 BLE、官方 Arduino Core 维护放缓 | 直接上 ESP32-C3,价格差距已不到 ¥5 |
| 用 Arduino Uno 做联网项目 | 需外挂 ESP-01 + 电平转换,AT 指令调试地狱 | ESP32 单芯片解决,还省一块板 |
| 用 Jetson Nano 开新 AI 项目 | 已停产,价格被炒高,性能只有 Orin Nano 的 1/5 | Jetson Orin Nano Super,价格接近但性能强很多 |
| 只看"主频"选 MCU | 168 MHz 的 STM32 做实时控制远胜 1.5 GHz 的树莓派 | 先问"要不要跑 Linux/要不要确定性时序",再比参数 |
三、逐板详解:规格 / 上手资源 / 常见坑
3.1 Arduino Uno R3 / Nano
关键规格
| 项 | Uno R3 | Nano(国产克隆) |
|---|---|---|
| 主控 | ATmega328P | ATmega328P |
| 工作电压 | 5 V | 5 V |
| 输入电压 | 7–12 V(DC 插孔 / VIN) | 7–12 V(VIN)或 5 V(5V 脚) |
| 数字 IO | 14(D0/D1 为串口,D3/5/6/9/10/11 支持 PWM) | 14(同样 6 路 PWM) |
| 模拟输入 | A0–A5,10 位 ADC | A0–A7,10 位 ADC |
| 每脚最大电流 | 20 mA(推荐),40 mA(绝对最大) | 同 |
| 5V 脚最大输出(外部供电时) | 约 400–500 mA | 受 USB / 板上稳压限制,更小 |
| Flash / SRAM / EEPROM | 32 KB / 2 KB / 1 KB | 同 |
| USB 转串口芯片 | ATmega16U2(原装)/ CH340(克隆) | CH340 为主,少数 FT232 |
上手资源
- 官方:arduino.cc → Documentation → Language Reference
- 引脚图搜索关键词:
Arduino Nano pinout、Arduino Uno pinout diagram - IDE:Arduino IDE 2.x(见本系列第 2 篇环境配置)
常见坑
- D0/D1 被串口占用:上传程序时 D0(RX)/D1(TX) 必须空闲,接了外设会上传失败(报
avrdude: stk500_recv(): programmer is not responding)。 - SRAM 只有 2 KB:
String拼接、递归、大数组极易爆栈,症状是程序随机复位或串口输出乱码。用char buf[]+snprintf,字符串常量放F()宏:Serial.println(F("hello"))。 - Nano 的 5 V 脚供电能力弱:直接带继电器 / 舵机会把板子拉复位。舵机、继电器必须单独供电,只共地。
- CH340 驱动:Windows 10/11 一般自动装;Linux 需确认
ch341内核模块;macOS 新版需手动允许内核扩展。 - A6/A7(Nano 专属)只能做模拟输入,不能
digitalRead。 - 5 V 电平:与 3.3 V 器件(ESP32、树莓派)直连会烧毁对方的 IO。用分压电阻或电平转换模块。
3.2 ESP8266(D1 mini / NodeMCU)
关键规格
| 项 | 参数 |
|---|---|
| 主控 | Tensilica L106 32 位,80 MHz(可超频 160 MHz) |
| SRAM | 约 80 KB,用户可用约 50 KB(其中堆 ~40 KB) |
| Flash | 外挂 SPI flash,常见 4 MB(D1 mini 为 4 MB) |
| GPIO | D1 mini 引出 11 个(D0–D8 + A0 + 部分复用) |
| ADC | 仅 1 路,输入范围 0–1 V(D1 mini/NodeMCU 板载 220 kΩ/100 kΩ 分压,可测 0–3.3 V) |
| 无线 | WiFi 802.11 b/g/n 2.4 GHz,无蓝牙 |
| 深度睡眠 | 约 20 µA(需 GPIO16 接 RST 唤醒) |
| 峰值电流 | 约 170 mA(WiFi TX 瞬间可更高) |
上手资源
- Arduino Core:
https://arduino.esp8266.com/stable/package_esp8266com_index.json - 官方文档:arduino-esp8266.readthedocs.io
- 引脚图搜索:
Wemos D1 mini pinout
常见坑
- GPIO 编号 ≠ 丝印编号:代码里用
D1对应 GPIO5,digitalWrite(D1)才对;直接写5也对,但写1就错了(GPIO1 是 TX)。D1 mini 的D0=GPIO16、D1=GPIO5、D2=GPIO4、D3=GPIO0、D4=GPIO2。 - 上电时的 Strapping 引脚:GPIO0 拉低 = 下载模式,GPIO2 必须高,GPIO15 必须低。外接电路若把这些脚拉到错误电平,板子会无法正常启动(不断重启或进不了程序)。
- 不能同时用 ADC 和 WiFi 的某些模式:ADC 读取时 WiFi 会短暂干扰,精度一般。
- 电源必须给足:USB 口劣质线或电脑前置面板供电不足,表现为 WiFi 连接时反复重启。加 100 µF + 0.1 µF 电容靠近 VCC。
- Flash 模式:老版本需手动设置 DOUT/DIO/QIO,选错会启动即崩。新工具默认 DIO,一般无需改。
⚠️ 注意:ESP8266 只有 1 路 ADC 且量程 0–1 V。往 A0 直接灌 3.3 V/5 V 会烧 ADC 甚至整片。
3.3 ESP32 / ESP32-C3 / ESP32-S3
关键规格对比
| 项 | ESP32(WROOM-32) | ESP32-C3 | ESP32-S3 |
|---|---|---|---|
| 内核 | Xtensa LX6 双核 | RISC-V 单核 | Xtensa LX7 双核 |
| 主频 | 240 MHz | 160 MHz | 240 MHz |
| SRAM | 520 KB | 400 KB | 512 KB |
| Flash | 外挂 4 MB(最大 16 MB) | 外挂 4 MB | 外挂 8/16 MB + 可选 PSRAM |
| 无线 | WiFi 4 + BT 4.2(BR/EDR + BLE) | WiFi 4 + BLE 5 | WiFi 4 + BLE 5 |
| USB | 无原生(需 CP210x/CH340 桥接) | 部分芯片有原生 USB Serial/JTAG | 原生 USB OTG(可作 HID/CDC/MSC) |
| DAC | 2×8 位 | 无 | 无 |
| ADC | 18 通道 12 位(ADC2 与 WiFi 冲突) | 6 通道 12 位(GDMA 支持) | 20 通道 12 位 |
| 电容触摸 | 10 路 | 无 | 14 路 |
| 可用 GPIO | 约 26–34 | 22 | 45(大部分可用) |
| 安全特性 | Secure Boot V1/V2、Flash Encryption、eFuse | Secure Boot V2、Flash Encryption、HMAC、数字签名外设 | 同 C3,另加 |
| 参考价格 | ¥20–40 | ¥10–18 | ¥25–50 |
上手资源
- Arduino Core 索引:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json - 官方文档(ESP-IDF):docs.espressif.com
- 编程指南《ESP-IDF 编程指南》中文版质量很高,建议直接读官方而不是二手博客
- 引脚图搜索:
ESP32 DevKitC pinout、ESP32-S3 DevKitC-1 pinout
常见坑(这条最重要,逐条记住)
- GPIO 6–11 接内部 Flash,绝对不可用。用了会直接崩(Cache 异常 / 无法启动)。
- GPIO 34/35/36/37/38/39 是输入专用(GPI),没有输出驱动,也没有内部上拉(部分有)。
digitalWrite()无效。 - GPIO 0 / 2 / 5 / 12(MTDI) / 15(MTDO) 是 Strapping 引脚,上电时的电平决定启动模式与 Flash 电压:
- GPIO0 拉低 → 进入下载模式(正常运行时必须浮空/上拉)
- GPIO12 上拉会导致 Flash 电压被设为 1.8 V → 板子不启动。老 ESP32 板若 GPIO12 被外接拉高,表现为"下载成功但一直重启"。新版本芯片可用 eFuse 关闭该 Strapping。
- ADC2(GPIO 0/2/4/12–15/25–27)在 WiFi 开启时完全不可用,
analogRead()会失败或返回随机值。需要 ADC 就用 ADC1(GPIO 32–39)。 - EN 脚需要上拉 + 电容到地才能保证可靠复位。自制板最常见的不启动原因就是 EN 处理不对。
- 下载需要手动进 Boot 模式? DevKitC 一般有自动下载电路(DTR/RTS 控制 EN+GPIO0)。自制板/裸模块需要手动按住 BOOT 键再点 EN。
- Flash 频率与模式:menuconfig / Arduino 工具里 Flash 频率选 80 MHz(DIO 或 QIO)。超到 80 MHz OPI 可能不稳;PSRAM 型号选错会
PSRAM ID read error。 - 3.3 V 供电,绝不接 5 V。所有 IO 也是 3.3 V 电平,5 V 直连即烧。
- WiFi 峰值电流大:USB-TTL 的 3.3 V LDO(尤其 CH340 板)带不动,症状是 WiFi 一连上就重启。用独立 3.3 V ≥ 500 mA 电源 + 100 µF 电容。
芯片/Flash 快速确认命令
# 读芯片 ID 与 Flash 信息(先按住 BOOT 或确保能自动进下载模式)
esptool.py chip_id
esptool.py flash_id
# 读取 eFuse 摘要(看是否有安全特性已启用)
espefuse.py summary
3.4 STM32F103C8T6「蓝丸」与 STM32F407
关键规格
| 项 | F103C8T6(蓝丸) | F407VET6(黑板) |
|---|---|---|
| 内核 | Cortex-M3 @ 72 MHz | Cortex-M4F @ 168 MHz(含 FPU、DSP) |
| SRAM / Flash | 20 KB / 标称 64 KB(多数实为 128 KB) | 192 KB / 512 KB |
| 调试接口 | SWD(SWDIO/SWCLK)+ 串口下载 | SWD + JTAG |
| 通信 | 2×SPI、2×I2C、3×USART、1×CAN、USB 2.0 FS | 3×SPI、3×I2C、6×USART、2×CAN、USB OTG FS/HS、以太网 MAC、DCMI |
| ADC | 2×10 通道 12 位(1 MSPS) | 3×16 通道 12 位(2.4 MSPS) |
| 定时器 | 2×高级(6 路互补 PWM,带死区)+ 4×通用 | 2×高级 + 10×通用 + 2×基本 |
| 5 V 容忍引脚 | 部分 IO 支持 5 V(标 FT) | 部分支持 |
| 供电 | 3.3 V(板上 LDO 由 5 V 降压) | 3.3 V |
| 参考价格 | ¥12–25 | ¥45–90 |
上手资源
- ST 官方:STM32CubeMX、STM32CubeIDE(免费)、HAL/LL 库文档
- 参考手册必须看:
RM0008(F1)、RM0090(F4),Datasheet 看引脚定义与电气特性 - 数据手册搜索:
STM32F103C8T6 datasheet、STM32F407VET6 datasheet - 中文资料:正点原子、野火的 F1/F4 教程(适合入门,但注意库版本)
常见坑
- USB 的 D+ 上拉电阻错值:标准 USB 全速设备需在 D+(PA12)接 1.5 kΩ 上拉到 3.3 V。很多廉价蓝丸焊的是 4.7 kΩ 或 10 kΩ,导致电脑识别成"无法识别的 USB 设备"或干脆不枚举。解决办法:换 1.5 kΩ 电阻(板上 R10),或在 PA12 与 3.3 V 之间手动飞一个 1.5 kΩ。
- 丝印打磨的假芯片:低价蓝丸常见 STM32 打磨片。判断方法:看丝印是否清晰、用
st-info --probe读芯片 ID(F103 的 IDCODE 为0x1BA01477)、看 128 KB Flash 是否真的可用。 - BOOT0/BOOT1 跳线:BOOT0=1 进系统 Bootloader(串口下载),BOOT0=0 从用户 Flash 启动。下载完忘记把跳线拨回来 = "程序不运行"。
- SWD 被禁用:如果用户程序把 PA13/PA14 配成了普通 GPIO,且没接复位,ST-Link 就再也连不上了。救砖方法:按住 RESET → 点连接 → 松手瞬间连上(Connect under reset)。
- 读保护 RDP Level 1:一旦设置,调试器读不出 Flash。量产前才设,调试期间不要设 Level 2(不可逆)。
- PA13/PA14/PA15/PB3/PB4 默认是 JTAG 脚,当普通 IO 用必须先
__HAL_RCC_AFIO_CLK_ENABLE(); __HAL_AFIO_REMAP_SWJ_NOJTAG();(或禁用 JTAG 保留 SWD)。 - ADC 参考电压:多数小板的 VDDA 直接接 3.3 V 数字电源,噪声大,ADC 读数漂。要求精度就要外部基准(如 TL431 / REF3033)或软件多次采样平均。
- 不要热插拔 SWD 排线:带电插拔极易打坏调试口。
⚠️ 注意:STM32 的 IO 虽然部分标称 5 V tolerant(FT),但仅在配置为输入/开漏且数字功能时成立。配置为模拟或输出时灌 5 V 照样烧。稳妥做法:与 5 V 系统(Arduino)通信一律加电平转换。
3.5 Raspberry Pi Pico / RP2040
关键规格
| 项 | 参数 |
|---|---|
| 主控 | RP2040,双核 Cortex-M0+ @ 133 MHz(可超频,但不保证) |
| SRAM | 264 KB |
| Flash | 板载 2 MB QSPI(Pico),其它型号 2–16 MB |
| GPIO | 26 个(Pico 引出 26,其中 4 路可用 ADC:GPIO26–28 + 内部温度传感器在 GPIO29) |
| ADC | 12 位 SAR,但实际 ENOB 约 8.5–9 位;参考电压来自 3.3 V 电源 |
| 特色 | 8 个 PIO 状态机:可编程 IO,能精确生成/采样任意波形(DVI、VGA、SDIO、WS2812、曼彻斯特编码等) |
| USB | 原生 USB 1.1(可作 Device;Pico 需借助软件库支持 Host,硬件上支持) |
| 无线 | 无(Pico W 有 CYW43439:WiFi 4 + BLE 5) |
| 供电 | 1.8–5.5 V(通过 VSYS),板载 3.3 V LDO(约 300 mA 输出) |
| 参考价格 | Pico ¥15–25 / Pico W ¥35–45 |
上手资源
- 官方《Get Started with MicroPython on Raspberry Pi Pico》(PDF,中文版有)
- 官方 C/C++ SDK 文档、Pico SDK Examples
- 引脚图搜索:
Raspberry Pi Pico pinout(官方那张彩色 PDF 必存)
常见坑
- Pico W 的板载 LED 不在 GPIO25,而是连在无线芯片(CYW43439)上。要用
machine.Pin("LED", machine.Pin.OUT)(MicroPython)或cyw43_arch_gpio_put()(C SDK),直接控 GPIO25 无效。 - ADC 参考电压是板载 3.3 V,所以电源噪声直接进 ADC。要精度就:外部 3.3 V 低噪声基准 + AGND 脚(Pin 33)接地 + 软件过采样。
- GPIO 编号 ≠ 物理管脚号:Pico 的 Pin 1 是 GP0,Pin 2 是 GP1……但中间穿插 GND/电源脚。写代码用
GPx编号,接杜邦线数物理号。 - 烧录方式:按住 BOOTSEL 上电 → 出现
RPI-RP2U 盘 → 拖入.uf2。之后所有烧录仍需重新进 BOOTSEL(除非用 SWD 或picotool)。 - 没有用户 EEPROM/Flash 区:要存配置得用外部 EEPROM/Flash,或者占用 Flash 末尾扇区(注意磨损与擦除粒度 4 KB)。
- 3.3 V IO,5 V 即烧。Pico 的 VBUS 是 5 V(Pin 40),别把 VBUS 接到信号脚上。
3.6 Raspberry Pi 4B / 5 / Zero 2 W
关键规格对比
| 项 | Zero 2 W | 4B | 5 |
|---|---|---|---|
| SoC | BCM2710A1(A53 四核 1 GHz) | BCM2711(A72 四核 1.8 GHz) | BCM2712(A76 四核 2.4 GHz) |
| RAM | 512 MB LPDDR2 | 1/2/4/8 GB LPDDR4 | 4/8 GB LPDDR4X |
| GPU / VPU | VideoCore IV | VideoCore VI | VideoCore VII |
| 存储 | microSD | microSD(可从 USB 启动) | microSD + PCIe 2.0 ×1(M.2 HAT) |
| 显示 | mini-HDMI | 2×micro-HDMI,双 4K30 | 2×micro-HDMI,双 4K60 |
| USB | 1×micro-USB OTG | 2×USB3.0 + 2×USB2.0 | 2×USB3.0(5 Gbps)+ 2×USB2.0 |
| 网口 | 无 | 千兆(受 USB 总线限制,实约 300 MB/s 上限) | 千兆(独立,满速) |
| 无线 | WiFi b/g/n + BT 4.2 | WiFi 5(ac)+ BT 5.0 | WiFi 5 + BT 5.0 |
| 摄像头 | CSI(窄排线,与 Pi 4/5 不同) | 1×CSI(2-lane) | 2×4-lane CSI/DSI |
| 供电 | 5 V/2.5 A(micro-USB) | 5 V/3 A(USB-C,注意早期板有 CC 电阻 bug) | 5 V/5 A(USB-C PD) |
| 40-pin GPIO 电平 | 3.3 V | 3.3 V | 3.3 V |
| 参考价格 | ¥80–150 | ¥300–550 | ¥450–700 |
上手资源
- 官方文档:raspberrypi.com/documentation
- 引脚图:终端输入
pinout(需装python3-gpiozero),或gpio readall(wiringPi) - 镜像烧录:Raspberry Pi Imager(官方,支持预配置 SSH/WiFi/用户名)
常见坑
- GPIO 全部是 3.3 V 电平,且没有过压保护。往任意 GPIO 灌 5 V = 直接打穿 SoC。与 Arduino/5 V 传感器连接必须电平转换。即使是 5 V 供电的 HC-SR04 超声波,其 Echo 输出也是 5 V,必须分压(1 kΩ + 2 kΩ)后才能接。
- 电源不足导致的"玄学故障":Pi 4B 在 USB 外设多时峰值可超 3 A。欠压表现:右上角出现黄色闪电图标、USB 设备随机掉线、SD 卡损坏、无故重启。Pi 5 更严格:若检测不到 5 A 能力的 PD 电源,USB 口总电流会被限制到 600 mA。
- microSD 卡是最大故障源。建议用 A2 级高耐久卡,或直接上 NVMe/USB SSD(Pi 4B 需改
BOOT_ORDER,Pi 5 加 NVMe HAT 即可)。 - Pi 5 的 GPIO 库生态断层:
RPi.GPIO在 Pi 5 上支持不完整,官方推荐gpiozero(底层用lgpio)或直接libgpiod/python3-libgpiod。旧代码迁移要注意。 - Pi 5 必须主动散热(官方 Active Cooler 或风扇),否则 80 °C 就降频。
- 串口分配:Pi 上
ttyAMA0(PL011 高性能串口)与ttyS0(miniUART)的分配在蓝牙启用时会互换。默认蓝牙占用ttyAMA0,GPIO14/15 上是 miniUART(波特率随 CPU 频率漂移,不稳定)。要用稳定 UART:在config.txt加dtoverlay=disable-bt或dtoverlay=miniuart-bt。 - 1-Wire、SPI、I2C 默认关闭,需
raspi-config或手动改/boot/firmware/config.txt开启dtparam=i2c_arm=on等。
3.7 NVIDIA Jetson(Nano / Orin)
关键规格对比
| 项 | Jetson Nano 4GB | Orin Nano Super 8 GB | Orin NX 16 GB |
|---|---|---|---|
| GPU | Maxwell 128 CUDA | Ampere 1024 CUDA + 32 Tensor Core | Ampere 1024 CUDA + 32 Tensor Core |
| CPU | 四核 A57 @ 1.43 GHz | 六核 A78AE @ 1.7 GHz | 八核 A78AE @ 2.0 GHz |
| AI 算力 | 472 GFLOPS(FP16) | 67 TOPS(INT8,sparse) | 157 TOPS(INT8,sparse) |
| 内存 | 4 GB LPDDR4(25.6 GB/s) | 8 GB LPDDR5(102 GB/s) | 16 GB LPDDR5(102 GB/s) |
| 存储 | microSD 或 eMMC 模块 | microSD 或 NVMe(强烈推荐 NVMe) | NVMe |
| 功耗模式 | 5 W / 10 W | 7 W / 15 W / 25 W | 10 W / 25 W / 40 W |
| JetPack 版本 | 最高 JP 4.6.x(Ubuntu 18.04,已停更) | JP 6.x(Ubuntu 22.04) | JP 6.x(Ubuntu 22.04) |
| 摄像头 | 2×MIPI CSI-2(2-lane) | 多路 CSI(依载板) | 多路 CSI(依载板) |
| 载板 GPIO | 40 pin(Pi 兼容排布,3.3 V) | 40 pin | 40 pin |
| 参考价格 | ¥500–900(停产) | ¥1200–2000 | ¥2500–4500 |
上手资源
- 官方:developer.nvidia.com/embedded/jetson → JetPack SDK
- 刷机工具:SDK Manager(需一台 Ubuntu x86 宿主机)或
jetson-flash/ 命令行l4t_initrd_flash - 中文社区:NVIDIA 开发者论坛、JetsonHacks
常见坑
- Jetson Nano 已停产,新项目不要买。价格被炒到接近 Orin Nano,性能却只有其 1/5。
- 刷机必须用 Ubuntu 宿主机(SDK Manager 不支持 Windows 直刷)。没有 Linux 机器就装虚拟机,但虚拟机 USB 切换容易掉线,用物理机最稳。
- JetPack 版本与 Ubuntu 版本强绑定:JP 5 → Ubuntu 20.04,JP 6 → Ubuntu 22.04,JP 4 → Ubuntu 18.04。选错版本会导致 CUDA 库依赖错乱。
- Nano 供电需要跳线:用 DC 桶头供电时必须短接 J48 跳线帽(在载板边缘),否则不启动。用 micro-USB 供电时不能接 J48。
- 功耗模式要手动切:默认可能是低功耗模式,推理速度上不去。用
sudo nvpmodel -m 0切最高模式,sudo jetson_clocks锁频。 - 40-pin GPIO 电平 3.3 V,且部分引脚复用为其它功能(如 I2C 的 Gen2 与 Gen8 不同)。用
jetson-gpio库(pip 装Jetson.GPIO)而不是RPi.GPIO。 - 不要用
apt upgrade升级 NVIDIA 的 CUDA 相关包,会搞坏依赖。要升级就整体刷新的 JetPack 镜像。
3.8 BeagleBone / NanoPi / 全志系
BeagleBone Black
| 项 | 参数 |
|---|---|
| SoC | TI AM3358,Cortex-A8 @ 1 GHz |
| 内存 / 存储 | 512 MB DDR3 / 4 GB eMMC(部分版本) |
| GPIO | 2×46 pin,共 65 个 IO,多数带复用 |
| 实时 | 2×PRU-ICSS 200 MHz 可编程实时单元,可在 Linux 之外做确定性 IO(5 ns 级) |
| 显示 | micro-HDMI |
| 供电 | 5 V/2 A(DC 插孔,比 micro-USB 稳) |
| 参考价格 | ¥250–400 |
- 上手资源:beagleboard.org 官方最新 Debian 镜像(不要装老教程里的 Ångström)、
config-pin工具、Device Tree 官方文档 - 常见坑:
- 所有 IO 都是 3.3 V,单脚最大 4–6 mA(比树莓派弱很多),直接驱动 LED 都要串电阻,驱动继电器必须加三极管/MOSFET。
- 引脚默认复用不是 GPIO,必须用
config-pin P8.11 gpio或写 Device Tree Overlay 切换模式。这是新手最大的困惑来源。 - eMMC 版本要把镜像刷到 eMMC 才能从 eMMC 启动,否则一直从 SD 卡启动。
- 老教程里的
capemgr(Bone 3.8 内核)已废弃,新内核用config-pin+ overlays。
NanoPi / Orange Pi / 全志系
| 项 | NanoPi R5S | Orange Pi Zero 2W | Orange Pi 5 |
|---|---|---|---|
| SoC | RK3568(A55 四核 2.0 GHz) | 全志 H618(A53 四核 1.5 GHz) | RK3588S(A76×4 + A55×4) |
| NPU | 0.8 TOPS | 无 | 6 TOPS |
| 内存 | 2–8 GB | 1–4 GB | 4–32 GB |
| 网口 | 2×2.5 G | 无(WiFi) | 千兆 |
| 存储 | microSD + eMMC | microSD | microSD + eMMC + M.2 NVMe |
| 参考价格 | ¥400–600 | ¥80–150 | ¥350–700 |
- 常见坑:
- 镜像选择比板子本身更重要。同一块 Orange Pi,用厂商版 Ubuntu/Debian、OpenWrt、Armbian 主线内核,体验天差地别。GPIO/视频编解码通常只有厂商内核完整支持,主线内核可能没 NPU/没有 VPU。
- GPIO 库混乱:不同分支的 wiringPi、
OPi.GPIO、libgpiod混用会出错。优先用标准libgpiod(gpiodetect/gpioinfo/gpioget)。 - 供电与散热:RK3588 满载需 5 V/4 A + 主动散热,否则降频重启。
- 资料多为中文社区,英文搜索基本搜不到;同时资料时效性差,注意看发布日期与内核版本。
3.9 FPGA 入门板(Tang Nano 等)
- Tang Nano 9K:高云 GW1NR-9,8640 LUT,板载 8 Mb PSRAM,带 HDMI 输出(用 IO 模拟 TMDS)、1.14 寸 LCD 接口。工具链 Gowin EDA,免费 license 需在官网申请(绑定 MAC 地址)。
- Artix-7 板:Vivado WebPack 免费,生态最全,IP 核(DDR、PCIe、千兆网)现成。
- Lattice iCE40:唯一有完全开源工具链(yosys + nextpnr + icestorm)的选择,适合理解"综合—布局布线—生成比特流"全过程。
常见坑:
- 不要拿 FPGA 跟 MCU 比"性能"。FPGA 的价值是并行与确定性时序:同一时刻可以跑 100 个独立状态机,且每个都精确到 ns。但写一个 32 位除法器可能比 MCU 慢还更占资源。
- IO 电平由 Bank 的 VCCIO 决定,Tang Nano 常见 Bank 电压为 3.3 V,但也可能是 1.8 V,接错就烧。
- 时序约束不写 = 结果不可靠。不加
.sdc约束的综合结果在高速下会随机出错。 - 配置存储:多数 FPGA 是 SRAM 架构,掉电丢失,需外部 SPI flash 存比特流。
四、国产替代与供货考量
4.1 主流国产替代方案
| 原型号 | 国产替代 | 兼容性 | 注意事项 |
|---|---|---|---|
| STM32F103 系列 | 兆易创新 GD32F103 / GD32F303 | 引脚兼容,软件不兼容 | 主频可到 108 MHz;Flash 零等待(STM32 需等待周期),所以延时循环会跑快;需使用 GD 官方库或改 HAL;上电时序与 ADC 特性有差异 |
| STM32F4 系列 | GD32F4xx、APM32F4(极海) | 引脚部分兼容 | 性能接近,但 USB、以太网 PHY 时序需重新验证 |
| ATmega328P | 中微/兆易 8 位机、CH32V003 | 不兼容 | CH32V003 是 RISC-V,性能强很多但生态不同 |
| ESP8266 / ESP32 | 乐鑫本身就是国产(上海) | — | 供货稳定,是国产替代的首选目标而非被替代对象 |
| 树莓派替代 | 香橙派、NanoPi、Radxa、firefly | 部分 GPIO 兼容 | 软件生态差距是主要成本,不是硬件 |
| Jetson 替代 | 地平线 旭日 X3 / RDK X5、瑞芯微 RK3588(6 TOPS) | 不兼容 | 工具链不同;NVIDIA 的 CUDA 生态仍是最大壁垒 |
| 通用 8 位机 | 沁恒 CH32V003 / CH32V103(RISC-V) | 不兼容 | 单价 ¥1 级,自带 USB(V103/V203),开发需 WCH-LinkE 或串口下载 |
4.2 选型时的供货/成本现实
- 克隆板 vs 原装:STM32 蓝丸、Arduino Nano 的克隆板价格是原装的 1/5,但存在打磨片、缩水电容、错值电阻风险。做产品务必从正规代理拿货;做学习无所谓。
- 芯片级 vs 开发板级:量产时永远按芯片算 BOM。ESP32-C3 芯片约 ¥6–8,CH32V003 约 ¥0.5–1.5,GD32F103 约 ¥4–8(缺货时翻数倍)。
- 供货周期:ST 的 F1/F4 在 2021–2023 年暴涨过一轮,目前回落。国产 MCU(GD、CH、MM32、AT32)在缺货周期里是有效的备选,但要预留 2–4 周的适配时间。
- 开源硬件优势:树莓派 Pico(RP2040)、ESP32 的**参考设计与模块(WROOM/WROVER)**都容易直接用于量产——模块已过认证(FCC/CE),省掉 RF 认证费用,这是选 ESP32 做产品的重要理由。
- 认证成本:带无线的产品,用现成模组(ESP32-WROOM、ESP32-C3-MINI)比自己画 RF 电路省下十几万的认证费和 3 个月时间。
五、从安全视角看:板卡上的攻击面
这一节是把硬件当成"可被审计的对象"来看,是选型阶段就该考虑的事。
5.1 每块板都有的调试接口
| 接口 | 常见位置 | 暴露风险 | 防护 / 关闭方式 |
|---|---|---|---|
| UART | 板边 3–4 pin 排针(VCC/GND/TX/RX),或测试点 | IoT 设备最常见的 root shell 入口。波特率试 9600/19200/38400/57600/115200,连上常直接给 root | 生产时移除排针/丝印;软件里禁用 console;启用 Secure Boot 后关闭日志 |
| SWD(STM32) | PA13/SWDIO、PA14/SWCLK,10 pin 或 4 pin 排针 | 可全速 halt CPU、读/写全部 Flash 与 SRAM、绕过密码校验 | 设置 RDP Level 1(Level 2 不可逆);物理上灌胶 |
| JTAG | 4–5 pin(TMS/TCK/TDI/TDO/nTRST) | 同 SWD,且常见于 Linux 板(Jetson、 routers) | 熔断 JTAG 熔丝(如 Jetson 的 odmfusewrite);BGA 下不留测试点 |
| 串口 Bootloader | STM32 BOOT0 跳线、ESP32 GPIO0 | 可通过串口 dump 整个 Flash | STM32 设 RDP;ESP32 启用 Flash Encryption |
| SPI Flash 芯片 | 板上 8-pin SOIC(25Qxx 系列) | 用夹子(如 Pomona 5250)在线读取,或热风枪拆下放编程器读 | 启用 Flash Encryption(ESP32)、加密文件系统(Linux) |
| USB DFU / Recovery | Pi 的 USB-C(RPi Boot)、Jetson 的 Recovery 模式 | 可重新刷写,绕过系统内权限 | 物理封口;设 BOOT_ORDER 禁 USB 启动;加 eFuse 写保护 |
5.2 各平台的安全特性对比
| 平台 | 安全启动 | Flash 加密 | 调试口锁死 | 备注 |
|---|---|---|---|---|
| ESP32 | Secure Boot V1/V2(V2 基于 RSA-PSS,推荐) | Flash Encryption(AES-256-XTS) | eFuse DIS_DOWNLOAD_MODE、JTAG_DISABLE |
一旦烧 eFuse 不可逆,先在测试片上验证 |
| ESP32-C3/S3 | Secure Boot V2 + 数字签名外设 | Flash Encryption + XTS-AES | 同 | C3/S3 另有 HMAC、密钥管理单元 |
| STM32F1 | 无 | 无(只有 RDP 读保护) | RDP Level 1/2 | F1 年代久远,安全特性很弱 |
| STM32F4/L4/H5 | 部分型号有 RDP + PCROP;H5 有 TrustZone | 部分有 AES 硬件(CRYP) | RDP + MPU | 高安全需求选 L5/H5/U5 系列 |
| 树莓派 | 支持(需自行签名 + signing_key) |
需自行配置 LUKS 全盘加密 | 可禁 JTAG GPIO 复用 | 默认全部关闭,SD 卡拔下来就能读 |
| Jetson | Secure Boot(PKC/ SBK 密钥) | 磁盘加密 | ODM fuse 熔断后禁用调试 | 烧 fuse 不可逆,务必先小批量验证 |
5.3 选型时的安全红线
- 做产品就不要选 STM32F103 这种没有硬件安全特性的老型号,除非 BOM 压力极大。起码选带 RDP Level 2 或 TrustZone 的型号。
- ESP32 的 eFuse 操作不可逆:
DIS_DOWNLOAD_MODE、JTAG_DISABLE、Secure Boot 的公钥哈希一旦烧写就无法回退。开发阶段用开发板试,量产片单独走流程。 - 树莓派的 SD 卡等于明文硬盘:任何人拔下卡插到电脑上就能读全部文件。要做产品必须全盘加密 + 启用安全启动 + 禁用 USB 启动。
- 调试口留测试点 = 给攻击者留门。做 PCB 时把 UART/SWD 的测试点放到 BGA 下方或灌胶,成本几乎为零,收益极大。
⚠️ 注意:以上都是针对自己拥有或已授权测试的设备。对他人设备做未授权的固件提取、调试口读取,属于违法行为,不在本系列讨论范围内。本文的安全视角仅用于自己产品加固与理解攻击面。
六、入门采购清单建议
6.1 最小可用套装(约 ¥400)
| 数量 | 物品 | 参考价格 | 用途 |
|---|---|---|---|
| 1 | ESP32-S3 DevKitC-1(N8R8 或 N16R8) | ¥35 | 主力开发板,联网/USB/AI 都能玩 |
| 2 | STM32F103C8T6 蓝丸 | ¥30 | 学裸机/SWD 调试,坏一块不心疼 |
| 1 | ST-Link V2 调试器 | ¥20 | STM32 烧录与调试必备 |
| 1 | Raspberry Pi Pico(W 版可选) | ¥25 | 学 PIO、MicroPython |
| 1 | 面包板 + 830 孔 | ¥10 | 免焊接原型 |
| 1 | 杜邦线(母对母 / 公对母 / 公对公 各 20 根) | ¥15 | 最常缺的耗材 |
| 1 | 逻辑分析仪(8 通道 24 MHz,兼容 Saleae) | ¥40 | 查 I2C/SPI/UART 时序,比万用表好用 |
| 1 | 万用表(带蜂鸣档 + 电容档) | ¥50 | 通断、电压、短路检测 |
| 1 | 传感器模块包(DHT22、OLED SSD1306、MPU6050、HC-SR04、SG90 舵机、LED、按键、继电器、电阻包) | ¥80 | 覆盖第 3 篇全部实验 |
| 1 | 可调电源模块 / 5 V 3 A 电源 | ¥40 | 避免 USB 供电不足的玄学故障 |
| 1 | 电烙铁(推荐 T12 或 936)+ 焊锡 + 助焊剂 | ¥100 | 焊接排针、飞线 |
第二梯队(有具体需求再买):树莓派 5、Jetson Orin Nano Super、示波器(二手 100 MHz 约 ¥800–1500)、恒温烙铁/热风枪、直流稳压电源。
6.2 常用查询命令速查
# —— ESP32 / ESP8266 ——
esptool.py chip_id # 读芯片型号与 ID
esptool.py flash_id # 读 Flash 厂商、容量
esptool.py read_mac # 读 MAC 地址
espefuse.py summary # 查看 eFuse(安全特性状态)
esptool.py read_flash 0 0x400000 fw.bin # 备份整片 Flash(4MB)
# —— STM32 ——
st-info --probe # 识别 ST-Link 连接的芯片
st-info --flash --size # 查 Flash 大小
st-flash read firmware.bin 0x8000000 0x10000 # dump Flash
# —— 树莓派 ——
pinout # 打印 GPIO 排布图(终端内)
cat /proc/cpuinfo | grep Revision # 查板子 Revision
vcgencmd measure_temp # CPU 温度
vcgencmd get_throttled # 0x0 表示无欠压/无降频
cat /sys/firmware/devicetree/base/model
# —— Jetson ——
jetson_release # 打印 L4T/JetPack/CUDA 版本
jtop # 需 pip3 install -U jetson-stats
sudo nvpmodel -q # 当前功耗模式
tegrastats # 实时 CPU/GPU/内存/温度
# —— 通用 ——
lsusb # 看 USB 设备(CH340/CP210x/ST-Link)
dmesg -w # 插上设备看内核日志
ls /dev/ttyUSB* /dev/ttyACM* # 查串口设备
udevadm info -q property -n /dev/ttyUSB0 | grep ID_ # 查设备属性
七、延伸阅读与本系列导航
- 本系列第 2 篇:《嵌入式开发环境配置实战》——Arduino IDE / PlatformIO / ESP-IDF / STM32Cube / 树莓派 / Jetson 的环境搭建与排错
- 本系列第 3 篇:《硬件模块与通信协议基础》——UART/I2C/SPI/PWM/ADC/CAN 精讲 + 常用模块速查 + 电源与焊接
官方文档优先原则:板卡相关的问题,官方文档(Datasheet、Reference Manual、厂商 Wiki)永远比二手博客准确。二手博客只在"文档没写清楚的具体坑"上有价值——而这正是本系列要补的部分。