3. 嵌入式硬件平台:典型开发板硬件组成与接口

做嵌入式开发,光啃芯片手册是不够的。你得手里有块板子,眼睛看着原理图,心里琢磨着外设怎么接。这一章,我就带你看看三块最典型的开发板——STM32、树莓派、BeagleBone。它们代表了嵌入式世界的三个方向:微控制器、应用处理器、以及介于两者之间的“工业派”。

核心观点: 选板子不是选参数,是选生态。STM32 适合裸机或 RTOS 的深度控制,树莓派适合跑 Linux 做原型验证,BeagleBone 则更适合需要实时 I/O 的工业场景。

3.1 STM32 系列:微控制器的标杆

STM32 是意法半导体的拳头产品。我最早接触的是 STM32F103,也就是大家常说的“F1”。那时候刚入门,觉得这芯片真复杂。后来做多了才发现,它的设计其实很规整。

3.1.1 硬件组成

一块典型的 STM32 开发板(比如 NUCLEO-F446RE),核心部件包括:

  • 主控芯片: ARM Cortex-M 系列内核。F4 系列带 FPU,做浮点运算很顺手。
  • 时钟源: 外部晶振(8 MHz 主晶振 + 32.768 kHz RTC 晶振)。内部也有 RC 振荡器,但精度差一些。
  • 电源: 3.3V 供电。有些板子带 USB 转串口芯片(比如 ST-Link),可以直接从 USB 取电。
  • 调试接口: SWD(Serial Wire Debug)或 JTAG。我个人习惯用 SWD,只需要两根线(SWDIO + SWCLK),省引脚。

3.1.2 关键接口

接口 说明 典型用途
GPIO 通用输入输出,可配置推挽/开漏/上拉/下拉 按键、LED、传感器中断
USART/UART 异步串行通信,波特率最高可达 4.5 Mbps 调试日志、蓝牙模块、GPS
SPI 全双工同步串行,主从模式 Flash 存储器、LCD 屏幕、SD 卡
I2C 半双工同步串行,多主多从 温度传感器、EEPROM、加速度计
ADC 12 位逐次逼近型,多通道 模拟量采集(电位器、光敏电阻)
定时器 高级/通用/基本定时器,支持 PWM 输入捕获 电机控制、舵机、频率测量

我的经验: 用 STM32 做项目,第一件事是看 参考手册(Reference Manual),不是数据手册(Datasheet)。数据手册讲电气特性,参考手册才讲寄存器怎么配。我见过太多人拿数据手册当圣经,结果连 GPIO 复用功能都找不到。

3.1.3 避坑指南

我曾经在一个项目里,用 STM32F4 驱动一个 SPI 屏幕。死活刷不上去,波形一看,时钟极性配反了。嗯,SPI 的 CPOL 和 CPHA 一定要对着从机手册来,别想当然。

3.2 树莓派:Linux 单板计算机的入门之选

树莓派(Raspberry Pi)是英国树莓派基金会推出的。它本质上是一台微型计算机,跑的是完整的 Linux 系统。我拿它做过家庭媒体中心,也做过物联网网关。

3.2.1 硬件组成

以树莓派 4 Model B 为例:

  • SoC: BCM2711,四核 Cortex-A72,主频 1.5 GHz。这性能,十年前能当台式机用。
  • 内存: 1/2/4/8 GB LPDDR4。选型时注意,内存越大发热越大。
  • 存储: MicroSD 卡槽。这是瓶颈,建议用高速卡(Class 10 以上)。
  • 网络: 千兆以太网 + 双频 Wi-Fi + 蓝牙 5.0。
  • 视频输出: 2 个 micro HDMI 接口,支持 4K 双屏显示。

3.2.2 关键接口

接口 说明 典型用途
GPIO(40-pin) 兼容 3.3V 逻辑,部分引脚有复用功能 LED、按键、传感器
USB 2.0/3.0 4 个 USB 口,可接键盘、鼠标、U 盘 外设扩展
CSI(摄像头接口) 15-pin 排线,连接专用摄像头模块 图像采集、视频监控
DSI(显示接口) 15-pin 排线,连接官方触摸屏 人机界面
I2C/SPI/UART 通过 GPIO 复用,需在 config.txt 中使能 与微控制器或传感器通信

注意: 树莓派的 GPIO 是 3.3V 逻辑,不能直接接 5V。我曾经烧过一个 GPIO 口,就是因为接了 5V 的舵机信号线。电平转换芯片(比如 74LVC245)是必须的。

3.2.3 树莓派 vs 传统 MCU

你想想看,树莓派跑 Linux,有进程调度、有虚拟内存、有完整的网络协议栈。做复杂应用很方便。但它的实时性很差,中断响应延迟可能到毫秒级。而 STM32 的中断响应是纳秒级的。所以,控制电机、采集高速信号,还是得用 MCU。

3.3 BeagleBone:工业级的开源硬件

BeagleBone 是 BeagleBoard.org 基金会推出的。它比树莓派更“硬核”,直接面向嵌入式工程师。我最早用 BeagleBone Black 做数据采集,印象最深的是它的 PRU(可编程实时单元)。

3.3.1 硬件组成

以 BeagleBone Black 为例:

  • SoC: AM3358,单核 Cortex-A8,主频 1 GHz。性能不如树莓派 4,但工业级温度范围。
  • 内存: 512 MB DDR3L。
  • 存储: 4 GB eMMC + MicroSD 卡槽。eMMC 比 SD 卡快,系统启动也稳。
  • 网络: 千兆以太网(实际受限于 USB 2.0 转接,吞吐约 300 Mbps)。
  • PRU: 2 个 32 位 RISC 协处理器,运行在 200 MHz,可独立访问 GPIO 和内存。

3.3.2 关键接口

接口 说明 典型用途
GPIO(92 个) 通过 2 个 46-pin 扩展口引出,3.3V 逻辑 大量 I/O 控制
I2C(2 个) I2C0 和 I2C2,支持多主多从 传感器总线、EEPROM
SPI(2 个) SPI0 和 SPI1,支持 DMA 高速 ADC、DAC
UART(6 个) 其中 UART0 用于控制台 串口设备、GPS、RS485
CAN(2 个) 控制器局域网,工业现场总线 汽车电子、工业控制
eQEP(3 个) 增强型正交编码器脉冲 电机位置反馈

BeagleBone 的杀手锏:PRU。 它可以在 Linux 系统之外,以极低的延迟(< 5 ns)控制 I/O。我做过一个项目,用 PRU 模拟高速 SPI 协议,直接驱动一个 10 MHz 的 ADC。这在纯 Linux 下几乎不可能实现。

3.4 三款开发板对比

我把它们放在一起,做个直观对比。你选板子的时候,可以对着这张表看。

特性 STM32(F4 系列) 树莓派 4 BeagleBone Black
内核 Cortex-M4F Cortex-A72 Cortex-A8
主频 ~180 MHz 1.5 GHz 1 GHz
操作系统 裸机 / FreeRTOS / RT-Thread Linux(Raspberry Pi OS / Ubuntu) Linux(Debian / Yocto)
实时性 极高(中断响应 < 100 ns) 低(受 Linux 调度影响) 中(PRU 可提供硬实时)
典型功耗 ~0.5 W ~5 W ~2 W
价格 ~$10 - $30 ~$35 - $75 ~$55
适用场景 传感器节点、电机控制、便携设备 多媒体、原型验证、桌面 Linux 应用 工业控制、数据采集、实时 I/O

3.5 知识体系结构图

下面这张图,帮你理清这三块板子的定位和关系。

嵌入式开发板知识体系结构图 嵌入式开发板知识体系 嵌入式系统 微控制器 (MCU) 应用处理器 (AP) 工业级 SoC STM32 (Cortex-M) 树莓派 (BCM2711) BeagleBone (AM3358) 裸机 / RTOS 低功耗 / 高实时 完整 Linux 系统 多媒体 / 网络 Linux + PRU 工业接口 / 硬实时 选型建议: 控制用 STM32,原型用树莓派,工业用 BeagleBone

3.6 小结

这一章,我们看了三块典型开发板的硬件组成和接口。STM32 是微控制器的代表,适合底层控制;树莓派是应用处理器的代表,适合跑 Linux 做复杂应用;BeagleBone 是工业级 SoC 的代表,兼顾了 Linux 的灵活性和 PRU 的实时性。

你选板子的时候,别只看参数。想想你的项目需要什么:是低功耗?是实时性?还是丰富的软件生态?想清楚了,再下手。我见过太多人买了一块树莓派,结果发现控制电机延迟太大,又回头买 STM32。嗯,提前规划,能省不少钱。