3、实物平台选型:常见硬件平台与选型依据

好,咱们接着聊。仿真跑通了,代码调好了,下一步就是把它搬到真正的硬件上。这一步,说白了就是「选板子」。

我见过不少朋友,仿真做得漂漂亮亮,一到选实物平台就卡壳。要么选了个性能过剩的,成本下不来;要么选了个太寒酸的,外设接口对不上,最后硬生生把项目拖黄了。嗯,今天我就把这块掰开揉碎了讲。

3.1 三大主流平台:Arduino、STM32、树莓派

目前市面上最常见的,无非这三家。我挨个说说我的看法。

3.1.1 Arduino —— 入门快,生态好

Arduino 最大的优势是什么?「快」。从拆包装到点亮LED,十分钟搞定。我刚开始带团队时,经常用 Arduino 做快速原型验证。

  • 核心芯片:ATmega328P(8位AVR),主频16MHz
  • 内存:2KB SRAM,32KB Flash
  • 典型价格:几十元人民币(国产兼容版)
  • 适合场景:传感器采集、简单控制、教学演示
我的经验:如果你只是验证一个逻辑,或者做毕业设计,Arduino 绝对够用。但别指望它跑复杂的算法——2KB内存,你想想看,连一张图片都存不下。

3.1.2 STM32 —— 性能强,工业级

STM32 是我个人用得最多的平台。为什么?因为它「能打」。从简单的电机控制到复杂的实时系统,它都能扛。

  • 核心芯片:ARM Cortex-M系列(M0/M3/M4/M7)
  • 主频:从72MHz到480MHz不等
  • 内存:几十KB到几MB的SRAM,Flash可达2MB
  • 典型价格:几十到几百元(视型号而定)

我在项目中遇到过一件事:用 Arduino 做的一个数据采集器,采样率死活上不去。后来换成 STM32F4,同样的传感器,采样率直接翻了10倍。说白了,性能差距就在那里。

注意:STM32 的入门门槛比 Arduino 高不少。你需要熟悉寄存器配置、中断优先级、时钟树这些东西。我曾经带过一个新人,光配置一个定时器就折腾了两天。

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)
关键判断:如果你的项目需要微秒级响应(比如电机控制、高频采样),选STM32。如果只是每隔几秒读一次温度,Arduino绰绰有余。如果需要跑OpenCV做图像识别,那就得上树莓派。

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亮度
避坑指南:我曾经做一个项目,需要同时驱动一个摄像头(SPI接口)和一个SD卡(也是SPI接口)。结果发现芯片只有一个SPI外设。后来只能软件模拟SPI,但速度上不去。所以,选型时一定要数清楚外设数量。

最后说一句:没有最好的平台,只有最合适的平台。你想想看,用树莓派去点一个LED,是不是有点大材小用?用Arduino去跑人脸识别,是不是有点强人所难?

嗯,选型这事,多花点时间想清楚,后面能省下大把的调试时间。


专注资料整理