3、实物平台选型:常见硬件平台与选型依据
好,咱们接着聊。仿真跑通了,代码调好了,下一步就是把它搬到真正的硬件上。这一步,说白了就是「选板子」。
我见过不少朋友,仿真做得漂漂亮亮,一到选实物平台就卡壳。要么选了个性能过剩的,成本下不来;要么选了个太寒酸的,外设接口对不上,最后硬生生把项目拖黄了。嗯,今天我就把这块掰开揉碎了讲。
3.1 三大主流平台:Arduino、STM32、树莓派
目前市面上最常见的,无非这三家。我挨个说说我的看法。
3.1.1 Arduino —— 入门快,生态好
Arduino 最大的优势是什么?「快」。从拆包装到点亮LED,十分钟搞定。我刚开始带团队时,经常用 Arduino 做快速原型验证。
- 核心芯片:ATmega328P(8位AVR),主频16MHz
- 内存:2KB SRAM,32KB Flash
- 典型价格:几十元人民币(国产兼容版)
- 适合场景:传感器采集、简单控制、教学演示
3.1.2 STM32 —— 性能强,工业级
STM32 是我个人用得最多的平台。为什么?因为它「能打」。从简单的电机控制到复杂的实时系统,它都能扛。
- 核心芯片:ARM Cortex-M系列(M0/M3/M4/M7)
- 主频:从72MHz到480MHz不等
- 内存:几十KB到几MB的SRAM,Flash可达2MB
- 典型价格:几十到几百元(视型号而定)
我在项目中遇到过一件事:用 Arduino 做的一个数据采集器,采样率死活上不去。后来换成 STM32F4,同样的传感器,采样率直接翻了10倍。说白了,性能差距就在那里。
3.1.3 树莓派 —— 跑系统,玩视觉
树莓派严格来说不算单片机,它是一台「微型电脑」。它跑的是 Linux 系统,可以接显示器、键盘、鼠标。
- 核心芯片:Broadcom BCM系列(ARM Cortex-A)
- 主频:1.2GHz ~ 1.8GHz
- 内存:1GB ~ 8GB LPDDR
- 典型价格:200 ~ 800元
树莓派适合做什么?图像处理、网络服务器、复杂的人机交互。但注意,它不适合做实时控制——因为 Linux 不是实时操作系统,你没法保证一个中断在微秒级响应。
3.2 选型依据:成本、性能、生态
选平台不是拍脑袋,我一般按三个维度来权衡。下面这张图是我自己总结的选型逻辑:
你看,这三个维度互相牵制。性能越强,成本越高;生态越好,开发越快,但可能性能受限。我一般会先定预算,再定性能底线,最后看生态能不能支撑开发周期。
3.2.1 成本
成本不只是板子的价格。你得算上:
- 开发板成本:几十到几百元不等
- 外设成本:传感器、执行器、通信模块
- 开发工具:调试器(如J-Link)、示波器、逻辑分析仪
- 时间成本:学习曲线、调试周期
我曾经帮一个学生选型,他预算只有200元。我直接推荐了Arduino Nano + 几个传感器。为什么?因为STM32的开发工具(比如ST-Link)就得花几十块,而且他之前没接触过寄存器编程,时间成本太高。
3.2.2 性能
性能不是越高越好。够用就行。我一般看这几个指标:
| 指标 | Arduino | STM32 | 树莓派 |
|---|---|---|---|
| 主频 | 16MHz | 72~480MHz | 1.2~1.8GHz |
| RAM | 2KB | 20KB~1MB | 1~8GB |
| Flash | 32KB | 64KB~2MB | SD卡扩展 |
| 实时性 | 一般 | 优秀 | 差(非实时OS) |
| 功耗 | 低(mA级) | 低(mA级) | 高(数百mA) |
3.2.3 生态
生态这东西,很多人不重视,但实际开发中它太重要了。
- Arduino生态:库最多,社区最活跃。随便一个传感器,搜一下就有现成的库。我经常说,Arduino的生态是「拿来主义」——你几乎不用自己写底层驱动。
- STM32生态:HAL库、LL库、CubeMX配置工具。官方文档很全,但学习曲线陡。我记得第一次用CubeMX生成代码,看到那一堆初始化函数,头都大了。
- 树莓派生态:Python库丰富,GPIO控制简单。但底层硬件接口(比如PWM、I2C时序)不如单片机灵活。
3.3 外设接口匹配
选好平台后,还得看外设接口能不能对上。我遇到过最坑的事:选了个STM32F103,结果项目需要5个UART接口,而这款芯片只有3个。最后只能换芯片,重新画板子。
常见的接口类型:
- GPIO:通用输入输出,控制LED、按键、继电器
- UART:串口通信,连接GPS、蓝牙模块、调试口
- I2C:两线制总线,连接温湿度传感器、OLED屏幕
- SPI:高速四线制总线,连接SD卡、显示屏、ADC
- ADC:模拟量采集,连接电位器、光敏电阻、电流传感器
- PWM:脉冲宽度调制,控制电机速度、LED亮度
最后说一句:没有最好的平台,只有最合适的平台。你想想看,用树莓派去点一个LED,是不是有点大材小用?用Arduino去跑人脸识别,是不是有点强人所难?
嗯,选型这事,多花点时间想清楚,后面能省下大把的调试时间。