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 知识体系结构图
下面这张图,帮你理清这三块板子的定位和关系。
3.6 小结
这一章,我们看了三块典型开发板的硬件组成和接口。STM32 是微控制器的代表,适合底层控制;树莓派是应用处理器的代表,适合跑 Linux 做复杂应用;BeagleBone 是工业级 SoC 的代表,兼顾了 Linux 的灵活性和 PRU 的实时性。
你选板子的时候,别只看参数。想想你的项目需要什么:是低功耗?是实时性?还是丰富的软件生态?想清楚了,再下手。我见过太多人买了一块树莓派,结果发现控制电机延迟太大,又回头买 STM32。嗯,提前规划,能省不少钱。