如何选择MCU平台?[关闭]


43

MCU平台众多,一旦有人习惯了它们,他们通常不愿意切换到另一个平台。

我的问题是:如果今天人们开始将MCU用于一般用途,那么如何选择一个呢?不同平台的独特卖点是什么?


2
让我们知道您要考虑的项目和数量,这将帮助我们回答问题。
Rocketmagnet 2012年

3
通用是太多太宽。使用相同的uC来闪烁自行车LED和具有高分辨率触摸彩色LCD的RTOS几乎没有意义。
Wouter van Ooijen

1
是的,理想情况下,您会拥有几个熟悉的芯片,以解决不同的尺寸问题-如果新芯片特别适合一项任务,则可以准备购买。
克里斯·斯特拉顿

2
@WoutervanOoijen这个问题的想法如下:任何平台都可以轻松处理许多任务(即通用任务)。这样便可以完全自由地在平台之间进行选择。在这种情况下,“软性因素”,例如易用性,外部组件数量等成为主要因素。-我想找出与其他平台相比,哪些平台做得好/差。
ARF 2012年

7
宗教
vicatcu,2012年

Answers:


30

一年过去了,我做了一个关于选择微控制器的话题(大约花了1.5个小时)。观众是高级软件程序员和制造商。绝大多数观众没有以前的μC经验,其余的仅在Arduino上玩过。观众人数约为30。因此,这是多播,而不是一对一诊所。

演讲的关键幻灯片是:

外型尺寸

比较微控制器。列表按降序排列。

  • 开发环境(工具链)
    • 开发环境
    • 我提到开发环境了吗?
  • 支持
    • 应用笔记
    • 对等支持:部落知识,朋友,论坛,代码[sic]
  • 特征
    • 记忆
    • 周边设备
    • 计算能力
  • 能量消耗
  • 成本

ps

我应该定义我的答案限于的范围。我通过两种镜头看这个平台选择的问题。第一个是原型设计师。第二个是专业设备的开发人员,其街道价格大约为3000美元,并且每年订购数百个。业余爱好者镜头也不远。在这些情况下,与开发成本或微控制器所使用的专业设备的成本相比,微控制器的增量成本很小。

当然,大规模生产的观点截然不同。当有人为便宜的设备选择微控制器以生产大量产品(主流玩具就是一个很好的例子)时,它们将受到硬件成本的驱动。适度节省硬件成本,再乘以大批量生产(成千上万或更多),可以证明使用笨拙的开发环境和价格便宜且带有中线支持的微控制器的痛苦。


您专注于开发环境。我感觉合理。你的结论是什么?
2012年

@ArikRaffaelFunke好吧,我上面的帖子中的那些符号是结论。还没有定论?我演讲的目的是:(1)提供一个最低限度的问题清单,在选择过程中需要提出这些问题。(2)显示在哪里以及如何寻找答案。我特别避免做出艰难的结论:如果……,家庭X是好的,如果……是家庭Y是好的
尼克·阿列克谢夫

1
对于小批量和典型要求,可以。但是有时您必须选择最好的技术。或者,如果数量巨大,那么如果每个小部件节省几美分,那么开发中相当头疼的事情就可以证明是合理的-包括对基于竞争零件的解决方案进行测试,并准备跳转。
克里斯·斯特拉顿

1
@ChrisStratton [除了高产量影响之外]功耗是另一回事,有时可以证明有些头痛。如果他想以极低的功耗运行,而uC(他选择的)无法支持,那几乎没人能做。
尼克·阿列克谢耶夫

9
专注于开发环境是绝对正确的。您可能拥有世界上最好的芯片,但是如果您无法对可恶的东西进行编程和调试,那也可能是一块砖。我听说过有关恩智浦的好消息,但没有直接经验。我以为Freescale很差,但是后来我尝试了TI(MSP,然后是DM36x),现在Freescale在我眼中是光彩照耀的灯塔。在任何开发环境中的最佳建议:在虚拟机中构建/安装它,并使其处于完全工作状态,以使其在移动计算机/升级操作系统等时不会损坏...
John U

25

由于这个问题并没有产生我所希望的平台比较,因此我尝试通过学习文献以及其他答案来创建自己。也许这可以在将来对其他人有所帮助。

如果有任何错误或可以添加的信息,请告诉我。


平台比较

关于比较的注意事项:

  • IDE:注释与免费版本有关

图片:

  • 迄今为止最便宜的入门级芯片
  • 许多都有内部稳压器
  • 以给定的价格,通常有更多更好的外围设备
  • 准行业标准:非常好的库和开发人员支持
  • IDE:基于NetBeans的出色的,完全脱机的模拟和调试
  • 第三方调试器:约25美元
  • 包装范围非常广泛
  • 独特的卖点:1. XLP =可用的超低功耗设备;2.许多现代芯片都具有用于触摸按钮等的电容感应模块。

AVR:

  • AVR通常落后于不断更新的外围设备,价格稍高一些。总体而言,AVR在功能和价格上与PIC非常相似。
  • 8位AVR芯片比8位PIC芯片快
  • 第三方模拟器:约20美元
  • 包装范围非常广泛

Arm Cortex-M:

  • 现代处理器架构:无内存存储,良好的多任务处理
  • 迄今为止最便宜的32位设备
  • 在不同芯片和不同制造商之间轻松切换
  • 设备通常比PIC需要更多的外部组件
  • 带有ROM引导程序的非常便宜的USB设备:NXP LPC1342 / LPC1343
  • 合理的图书馆支持
  • IDE:合理,无离线模拟
  • SWD界面允许使用易于构建的硬件进行系统内编程,调试和跟踪(
  • 廉价的恩智浦芯片仅采用小间距或无引脚封装
  • 卖点:1.最便宜的32bit平台;2.最便宜的平台,带有USB ROM引导程序

PSoc :(摘自Rocketmagnet的回答)

  • 模拟外设方面的王者:给定芯片可以在内部重新配置以提供不同的模拟和数字外设
  • 比PIC贵得多
  • IDE:很棒
  • $ 88程序员(它允许调试吗?)
  • 仅SMD封装

螺旋桨:(根据Rocketmagnet的回答)

  • 多核MCU:不同的核可以模拟完成不同的任务
  • 消除/减少了传统中断的需求
  • 很少的硬件外围设备,必须经过明确编码才能在其中一个内核上运行,从而提供了难以置信的灵活性
  • 在模拟外设方面比较弱
  • IDE:很棒
  • 提供DIP封装

按应用比较

USB:

以下列表的“图例”:

  • 引导程序=预编程的USB引导程序
  • 稳压器=无需外部稳压器即可从总线供电
  • 上拉=无需外部上拉
  • 阻抗匹配=无需外部匹配电阻
  • 精密振荡器=无需外部晶体

最便宜的设备的属性:(按价格顺序)

  • PIC:8位,低速和全速稳压器,上拉,阻抗匹配,ESD保护
  • 恩智浦:32位,自举程序,仅全速,ESD保护
  • 飞思卡尔:8位,仅低速,电压调节器,阻抗匹配,ESD保护
  • Atmel:8位,自举程序,仅全速,稳压器,上拉,ESD保护
  • STM:32位,自举程序,仅全速,上拉,阻抗匹配,ESD保护
  • Silicon Labs:8位,低速和全速,电压调节器,上拉,阻抗匹配,精密振荡器
  • TI:32位,引导加载程序,低速和全速,其他属性未知
  • PSoc:可配置为模块,其他属性未知
  • 螺旋桨:32位,仅bitbanging

以太网:

  • PIC:集成PHY的最便宜设备

1
这里的几点注意事项:Propeller根本没有中断,并且在官方IDE中不支持调试。取而代之的是,首选的调试机制似乎是将事物连接到电视,并使用提供的库在屏幕上显示变量。另外,据我所知,也没有代码完成,没有模拟器,没有与代码管理系统集成,包含的异常实现...。此外,除了每个内核有两个计数器之外,没有硬件外设。
AndrejaKo 2012年

2
关于螺旋桨的注意事项-它没有中断。完全没有。如果您需要类似于传统中断的功能,则可以启动一个额外的CPU内核,并使其旋转等待。
康纳·沃尔夫

4
这样的列表几乎是毫无意义的,已经过时了。所有制造商一直在相互竞争,大多数制造商都试图在每个类别中提供某些东西-您在需要时进行调查,选择解决方案,并且如果可行,则在需要时一起使用它为此有更好的解决方案。
克里斯·斯特拉顿

2
对于它的价值,您还可以在此处包括MSP430系列产品,以了解其超低功耗的特点
boardbite 2012年

2
“嵌入式系统/特定微处理器”具有有关如何选择处理器的类似信息,可以类似地对其进行编辑以(希望)使它保持最新并相对中立。
davidcary

7

您对MCU的选择在很大程度上取决于您将要从事的项目类型。您是否正在制造大容量,超便宜且简单的设备,例如闪烁的自行车灯?您是否正在开发复杂的原型机器人,该机器人必须处理众多奇怪的IO设备和传感器?

我主要负责后者。对我而言,主要问题是尝试找到具有所需外围设备的微控制器。这很困难,因为我们的要求似乎不是主流。我们想要5个PWM通道,5个正交解码器,2个非标准SPI端口和一个IO取反的UART之类的东西。

我看到的唯一可以轻松满足此类要求的MCU是PSoC和Propeller。

螺旋桨芯片

Propeller基本上在单个芯片中是八个32位MCU。如果您需要某种类型的外设,则只需对其中一个MCU进行编程即可执行该工作。因此,您可以拥有任何想要的东西。

PSoC

PSoC有3种和5种。3种是8051内核,而5种是ARM cortex M3。芯片上还包括可重新配置的数字和模拟模块,这些模块可用于各种外设:ADC,滤波器,运算放大器,DAC,SPI,UART,正交解码器,CRC发生器等。

开发环境很棒。您具有典型IDE的常规源代码编辑功能,但也具有原理图编辑器。您实际上可以连接任何喜欢的数字电路,并通过门,触发器等将外围设备连接起来。需要5个PWM吗?容易,只需将它们放入原理图中,将其连接起来即可。如果您想要的东西没有提供,您甚至可以在Verilog中编写自己的外围设备。您的大量应用程序都可以简单地用这种硬件来实现。

真正的好处是您可以坚持使用一个芯片,因为它知道它可以解决您将来要完成的许多项目。我发现对PIC感到烦恼的是,不断地在数十种设备中寻找所需的特定外围设备。现在我没有那个问题了。


螺旋桨是一个奇怪的概念。我必须考虑一下。关于PSoC:由于灵活性高,我过去曾考虑过这些,但是对我来说,需要250美元的编程器使它成为一个入门者。
ARF 2012年

@ArikRaffaelFunke-程序员只需88美元,不到ICD3价格的一半
Rocketmagnet'8

@ArikRaffaelFunke-另一个考虑因素是包装。如果您计划构建自己的原型,那么使用DIP包会容易得多。大多数PIC和ATmel AVR和Propeller都包含在DIP中。PSoC 3和5没有。
tcrosley

3
schmartboard有一个易于使用的smt蘸解决方案:youtube.com/watch?
v=-32orELxkpE

1
@ quantum231:我考虑过,但是:1)FPGA似乎通常比微控制器更大,价格也更高(而且机器人通常非常需要空间)。2)我对FPGA没有太多的经验,必须学习一个完全不同的工具集和仅用于一些次要应用程序的思维方式总是很麻烦的。
Rocketmagnet 2015年


3

可以使用多个平台。为每个作业选择最佳的作业,并选择与作业相关的代码和示例。

他们中的大多数人都有很好的开发工具,arduino有visual studio,pic有很好的工具,其他人也有。因此,对我来说,这是我能多么迅速,轻松地完成工作,以及有多少开源人员从事同一件事?


但是,如何在不被营销混乱误导的情况下找到此类信息。我的意思是,我们必须找到使用硬件和工具链来获取所有信息的人员。您如何在工作中找到这样的社区?还是您依赖于应用工程师告诉您的内容?
Quantum231

您可以在诸如此类的各种论坛上提问。解释您的应用程序并寻求帮助
Visual Micro

2

微控制器是一个瞬息万变的世界,在当前的“ in”芯片上学习具有许多优势,最流行的IDE最引人注目的是获得社区的帮助。作为PIC人士,我会说Aduino可能是目前针对新手最好的IDE和开发板,您可以在基本的aduino板上添加很多东西而无需碰到烙铁。

任何将aduino用于现实生活的人都可能会很快想继续前进,但是到那时,您将学到很多基本的数字电子学和一个很好的C子集,可以轻松地使用更合适的东西。

正如有人提到您为您的项目选择芯片时,我看到一些使用ARM芯片作为简单温度传感器或AD转换器的项目,就像我看到aduinos和PIC 16被推到极限以生成太空入侵者游戏一样,FPGA如果您认真地从事电子设计,也很高兴,而且它对HDL很有帮助。.但是不幸的是,在现实世界中,没有多少项目需要使用最多的工作,即小批量,快速设计和价格受限以及这是8位uC统治的地方


我知道,一个人会导致一个人超越他们的Arduino的局限性是什么?ARM是否具有比PIC和Arduino更大的处理能力,是否具有PIC和Arduino中不存在的外围设备,或者其工具链优于PIC和Arduino?为什么基于ARM的芯片有这么多噪音。我知道它们的功耗非常低,但是为什么还要为“严肃的”项目选择ARM?
量子231

1

由于许多已发布的答案都集中在业余爱好者的使用上,因此这里有各种针对专业开发人员的建议。

最低要求
如果MCU无法满足所有这些要求,则不应使用它。

  • 投入生产至少1年。
  • Silicon errata可用,并且已至少修订过一次。
  • 内部看门狗。
  • 内部低压/掉电检测。
  • 片上闪存。
  • ESD保护。
  • JTAG / SWD或某些单线调试接口。
  • 内核使用8位字节和2的补码符号。
  • 样品和评估板随时可用。
  • 直接从制造商那里获得快速响应的技术支持。

警告标志-MCU硬件
这些是您不应该在2019年浪费时间的事情。

  • 程序员必须处理的晦涩寻址模式。包括使用晦涩,非标准的关键字来访问ROM数据。
  • 严重的堆栈内存或堆栈深度限制。
  • 16位int,这反过来又带来了C语言整数促销的所有潜在危险。
  • 无法开始沸腾就无法执行16或32位算术运算。
  • 如果您在数据部分中执行代码,则不会捕获。
  • 没有指令跟踪缓冲区。
  • 随附您不需要的奇特硬件外设。

警告标志-工具链

  • 依靠PC或某种方式的引导程序中的软件模拟器,而不是刷新整个MCU并使用片上执行/调试功能。
  • 没有专业人士编写的预制驱动程序/示例/库。依靠开发人员重新发明轮子或互联网论坛/开源。
  • C编译器的CRT不满足此处列出的要求。
  • C编译器附带了一长串不支持的标准C功能。
  • C编译器仍然不支持C11(无论您是否打算使用它)。
  • 第一次尝试“ hello world”程序时,IDE会向您发出多个奇怪的链接器错误。
  • 在使用的最初几周内遇到了许多IDE或编译器错误。

这过于教条。您已经完全省略了成本,包装选项,(开放源代码!=非专业),外围设备的质量等信息。我一般都不会反对大多数,但是诸如“堆栈限制”之类的东西意味着您首先需要了解导致这些限制的权衡。
awjlogan

@awjlogan成本和包装选项是特定于项目的,因此在这里解决没有意义。我并不是说开源不是专业的,但是一家将工具链外包给开源并且对诸如SO之类的网站的支持的公司并不专业。尽管贡献者太少的开源项目也不是专业人士,但是正如我们看到的,通过开放源代码编译器移植到各种奇特的MCU上一样。在2019
Lundin

当然,它们是特定于项目的,但是您通过在列表中指定16/32位(Digikey的快速扫描)直接增加了基准成本,而且我最近还没有看到6针M0。如果您不需要某些东西(包括时间),请不要在上面花额外的钱,这就是您作为专业人士应该做出的决定。但是,是的,良好的工具至关重要,无法达成共识。
awjlogan

@awjlogan LPC81X已经存在超过5年了。我刚刚发现有关Cypress PSoC4的信息,看起来很有趣。等等。引脚数通常不是参数,而只是封装尺寸和类型。如果您可以忍受QFN或BGA,则可以获得非常小的芯片。
隆丁

同意这一点,您的选择将缩小到较小的尺寸(尽管与任何体系结构相同)。我的总体观点是,尽管列表中的所有内容都是理想的,但您也应该足够清楚地知道何时打破它们。
awjlogan

0

如果您要执行可以进行模拟和数字处理的通用任务,那么我将首选PSoC作为其IDE,调试器以及您可以做的很多事情。

我在大学中已经为项目使用过PSoC3,并且掌握起来非常简单。唯一的问题是,如果您需要一些性能芯片,则仍然需要单独购买它们。它具有足够好的端口。因此,如果您在寻找一些性能芯片以及开发套件,最好选择单独的组件。


1
可能值得在PSoC上添加更多信息以使其更有用,已经有其他一些答案。
PeterJ 2014年

@PeterJ:我想以此作为对Rocketmagnet答案的评论,但我没有任何声誉可以发表评论。
ganesh737

您是否没有理由不进行基于软核的设计,例如在Altera FPGA上使用Nios II或在Xilinx FPGA上进行微火/ picoblaze?它们可以用来获得与PSoC相同的效果,我认为在许多方面都是更好的选择。
quantum231

1
@ quantum231:我可以接受,但是当时对我来说主要的限制是预算,这可以在我们的电子部门免费获得。
ganesh737 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.