微控制器(MCU)选型指南

描述

“ RP2040、ESP32、AVR、CH32V003、STM32...?各种各样的 MCU 挑花了眼,到底该如何选择? 

细心的读者可能注意到,我有时会调侃那些在可以用更简单、更便宜的控制方案的情况下,却选择了单板计算机(SBCs)用于项目的爱好者。  

焊接中的微控制器

我不是一个纯粹主义者;硬件和软件的选择没有最终结果重要。但某些决策实属自讨苦吃:若仅需控制几个 I/O 端口,树莓派搭载的完整 Linux 系统不仅带来延迟和调度抖动,还潜藏诸多隐患(如失控的后台服务数月间用临时文件或日志塞满SD卡)。 本文将超越调侃范畴,让我们快速了解一下您在嵌入式控制方面拥有的选择,将可编程芯片的应用场景划分为三大类进行解析。 场景一:流程控制

到目前为止,业余项目中最常见的需求是简单的自动化:即采集传感器或输入界面数据,按既定逻辑控制电机、小型显示屏或继电器。若满足以下条件,则适用本场景:

算法足够简单,对于可变变量或调用栈所需的 RAM 不超过 16 kB

每秒运算量不超过约 5 万次浮点运算或 3.2 万次 32 位乘除

I/O 操作频率低于10MHz

长期以来,这类任务由 8 位微控制器主导。早期产品源自 1970 年代 CPU 架构,后逐渐被Atmel开发(现由Microchip维护)的 AVR 系列等现代设计取代。该系列不仅包含经典 ATmega 芯片,还有性能更强、成本更低的 AVR Dx 系列,但相对来说,AVR Dx系列在爱好者群体中的知名度并不高。

现代 8 位 MCU 性能较早期 8 位微机提升了数个量级,但更注重易用性而非极致速度。此类芯片具备宽电压输入范围,集成丰富外设(ADC、DAC、运放、核心独立可配置逻辑等),并拥有超低功耗休眠模式。最关键的是其架构简洁,执行速度稳定可预测,无需担忧总线竞争、分支预测、缓存未命中或内存等待状态等问题。

近年来涌现出大量用途相似但简化的、低端的 32 位芯片(如意法半导体 STM32L0 系列、国产 CH32V003)。这些产品多基于 50 MHz 以下的 ARM Cortex-M0 或 RISC-V 内核,配备不足 32KB SRAM。尽管 32 位听起来在技术上更先进、更现代,但在这个特定的细分领域,32 位技术并没有带来真正的优势,反而存在一些隐藏的权衡:例如 CH32V003 缺失整数乘法电路。此类芯片存在的根本原因是,对于那些不是Microchip公司且没有内部8位芯片设计团队的公司来说,制造这类32位芯片的成本更低。

场景二:高性能计算 当涉及海量数据处理时,低成本平台的局限暴露无遗。典型场景包括摄像头信号流中的物体检测、视频流解压缩,或者运行《毁灭战士》游戏。 计算类芯片是高端芯片的领域,具备浮点运算单元、直接内存访问(DMA)控制器、几百K的快速内置RAM,以及最高可达约 500MHz 的时钟频率。旗舰产品多基于ARM Cortex-M7架构(部分厂商选择集成多个低端核心如 Cortex-M3)。这类 IC 可能集成高速 USB 或以太网专用电路,以及硬件加速的媒体编解码器或加密例程。 业务爱好者常用选项包括意法半导体 STM32H7 系列、Microchip SAM S70/PIC32CZ 系列。恩智浦、英飞凌、瑞萨等厂商虽提供同类产品,但因文档质量欠佳及参考代码稀缺,应用门槛较高。最后但同样重要的是依托树莓派生态的 RP2040/RP2350 系列,虽因无内置闪存略显不便(最新 RP2354 已改进),仍属优秀芯片。 高端 32 位芯片虽比 8 位产品更为复杂,但学习曲线并非想象中陡峭。以 Cortex-M7 芯片 ATSAMS70J21 的 "Hello World" 配置为例,其开发流程与 AVR MCU 类似。针对此类器件已形成成熟开源工具链,尽管需要整合多个独立组件。

场景三:网络互联

当独立微控制器无法胜任时,通常并非算力不足,而是需满足以下需求:高速无线连接、强劲的3D图形协处理器、数GB高速内存。简言之,即承载雅虎网站全量追踪器与广告所需的配置规格。

单板计算机(SBC)是比较适合处理这类任务。它们通常配备 ARM Cortex-A 处理器,并运行完整的操作系统。正如之前提到的,SBC 的输入 / 输出延迟往往较高且难以预测,其价格通常是自微控制器(MCU)的数倍;而且,SBC 的能效通常也很差。不过,它在某些情况下可能是完成任务的最佳选择。此外,还有一个好处就是熟悉度:它就是一个可以通过 SSH 登录的 Linux 系统。   最受业余爱好者欢迎的单板计算机(SBC)是树莓派系列,但市场上仍存在大量竞品与克隆产品可供选择。SBC 核心参数与传统 PC 无异:处理器性能、内存大小以及图形处理单元(GPU)。 撇开Linux系统不谈,还存在一个处于中间状态、比较特殊的射频微控制器子类别,它们支持Wi-Fi功能。由于 Wi-Fi 协议复杂度高且运算密集,传统方案多采用独立模块处理。但部分模块厂商发现,通过适度分配算力,可让用户在 Wi-Fi 芯片上直接运行代码。最具代表性的案例是乐鑫 ESP32 系列;其性价比难以超越,因而成为连接手机应用的简易物联网产品首选方案。若拆解「智能」咖啡机或智能猫砂盆,大概率会发现内置的乐鑫芯片。

成本权衡

人们很容易被市场上最便宜的微控制器所吸引,然而,人们也应该意识到,自己的时间是有价值的,不能仅仅因为价格而忽略其他因素。如果是在大规模生产廉价小饰品(trinkets),比如生产成千上万个产品,那么更换为比原来使用的芯片便宜0.10美元的微控制器可能是明智的。然而对于爱好者的项目或者小规模的产品生产,这种微小的成本节约可能不值得付出额外的精力和麻烦。 当你在考虑一个新的硬件平台时,你需要思考一个问题,那就是学习这个平台的架构是否会在未来为你打开更多的机会之门。如果你选择像ESP32或RP2040这样的平台,那么你在未来的选择会比较有限。如果你选择ST Microelectronics 或 Microchip 这样的平台,你将获得一个广泛的芯片选择。这些芯片具有不同的功能、不同的价格点,并且它们都使用一个通用的工具链和一组相似的API(应用程序编程接口)。这意味着,无论你选择哪种芯片,你都可以使用相同的开发工具和编程接口来进行开发。这为你提供了更大的灵活性和扩展性,因为你可以在不同的项目中选择最适合的芯片,而不需要重新学习新的开发环境。另一方面,如果你需要非常便宜的 Wi-Fi 功能,那么即使有成百上千种没有内置连接功能的产品,对你来说也是没有用的。

原文转载自:https://lcamtuf.substack.com/p/choosing-a-microcontroller,经过翻译及校验

      注意:如果想第一时间收到 KiCad 内容推送,请点击下方的名片,按关注,再设为星标。

常用合集汇总:

和 Dr Peter 一起学 KiCad

KiCad 8 探秘合集

KiCad 使用经验分享

KiCad 设计项目(Made with KiCad)

常见问题与解决方法

KiCad 开发笔记

插件应用

发布记录

审核编辑 黄宇

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分