查看原文
其他

有关MCU的一些科普

John Teel 半导体行业观察 2020-09-09

来源:内容由半导体行业观察(icbank)编译自「predictabledesigns」,作者:John Teel,谢谢。


为一个项目选择合适的微控制器涉及到许多因素。除了成本、性能、功耗和总体尺寸之外,适当的软件和硬件工具的可用性也是首要考虑的因素。


对所选平台的支持也非常重要——不仅来自供应商,而且来自整个社区。如果所选的微控制器有现成的开发板,也会有帮助。


最后,如果所选的微控制器具有广泛的、经过充分调试的、具有良好记录的应用程序编程接口或API的软件库,则可以显著减少开发时间。


在本文中,将只介绍通常满足上述条件的微控制器。


所有现代微控制器都有一些共同的基本特征。在处理单元的顶部,它们有一定数量的闪存用于存储应用程序代码、一些SRAM,在大多数情况下,还有一些EEPROM。


他们需要一个时钟源,这通常是由一个内部电阻电容(RC)振荡器,或通过使用外部晶体用于更多的时序关键应用。他们有一些数字IO端口,和至少一个计时器/计数器。


此外,除了非常低端的微控制器,大多数都至少有一个用于串行通信的UART。除此之外,微控制器的区别还在于它们的内存大小、集成在芯片上的其他外设的数量和类型,以及它们运行用户应用程序的速度。


这不仅取决于原始时钟速度。它还取决于处理器的数据宽度和所包含的任何硬件加速功能。


嵌入式系统的微控制器主要根据其数据总线的宽度分为三类:8位、16位和32位。还有其他的,但这些是最受欢迎的。


一般来说,8位微控制器是面向低端应用的,32位微控制器是面向高端应用的,16位微控制器是面向中端应用的。


到目前为止,我开发的大多数产品都倾向于集成32位微控制器,但对于低端、低成本的产品来说,8位或16位微控制器可能是一个不错的选择。


8位微控制器


如果应用程序对处理能力的要求不是很高,并且体积相对较小,那么考虑使用8位微控制器是有意义的。


作为参考,大多数Arduinos都基于8位微控制器。因此,如果你已经用Arduino构建了早期的原型,那么你就可以在最终产品中使用8位微控制器。


不要让价格指导你的决定,在很多情况下32位微控制器比8位芯片更便宜。


例如,Atmega328p是用于Arduino Uno的8位微控制器。批量达10,000件时,其成本略高于1美元。它以20 MHz运行,包含32 KB的闪存和2KB的RAM。


另一方面,您只需60美分即可购买运行于48 MHz且具有类似内存的32位微控制器。这可能是由于32位微控制器的普及降低了成本。


话虽如此,还有更便宜的8位微控制器可供选择,价格不到25美分。


对于专用于仅完成一项工作,用户界面有限且数据处理很少的应用,通常应考虑使用8位微控制器。


8位微控制器有各种尺寸,从小型6-pin设备到64 pin芯片。它们的闪存大小从512字节到256KB,SRAM大小从32到8KB或更多,EEPROM大小从0到4K或更多。一个最小的系统可以像一个单片机一样简单,供电轨上有一个旁路电容器。


最受欢迎的3个8位微控制器系列是8051系列、来自Microchip的PIC系列和Atmel的AVR系列,现在是Microchip的一部分。


8051系列


该微控制器最初来自英特尔,现在由其他公司生产,如今仍广泛使用,并已嵌入许多设备中。


尽管它们可作为独立设备使用,但8051现在主要用作IP(知识产权)核,这些核嵌入到特定于应用程序的芯片中,比如一些专用无线电收发器。


作为你的产品的主要微控制器,8051很少是正确的选择。


PIC系列


PIC微控制器非常流行,并且得到了Microchip和第三方的广泛支持。


Microchip提供了MPLAB®X集成开发环境(IDE),其中包括一个免费的C编译器。还有一个免费的IDE插件是MPLAB代码配置器,它为板载外设生成C代码。


然后可以将其集成到应用程序代码中。PIC模型有USART、SPI、I2C、ADC、USB、LIN、CAN等接口。Microchip还提供了多种开发工具,包括MPLAB PICkit 4、ICD 4和Real ICE。


更高质量的商业编译器,有更好的代码优化也可用。这是一个PIC微控制器的快速PDF参考指南。


AVR系列


AVR是另一个非常流行的8位微控制器系列。虽然它们与上面描述的PIC处于同一空间,而且性能也差不多,但它们有一个很大的特点:Arduino。


原始的Arduino,例如Uno,Leonardo和Mega,都使用AVR微控制器。由于Arduino的可用库种类繁多,因此即使仅用于概念证明原型,AVR也应认真考虑8位应用程序。


由于Arduino库是用C++编写的,因此可以很容易地将它们合并到用C/C++编写的任何应用程序中。


软件开发工具包括AVR studio,或者,如果使用Arduino,则Arduino IDE和平台IO都是常用的。在这些IDE中使用的编译器是AVR GCC,它是一个免费的、非常好支持和维护的C/C++编译器。


硬件开发工具包括Atmel ICE和PICkit 4。此外,成熟的工具,如STK600和AVR Dragon仍然广泛可用。这里有一个快速的AVR微控制器PDF参考指南的链接。


16位微控制器


16位微控制器是8位微控制器的升级版,同时仍然共享许多相同的属性。它们速度更快,支持更多的外设,而且通常提供更多的内存,包括flash和SRAM。


除了更多的IO pin外,与纯软件实现相比,它们中的大多数还具有明显更快的硬件倍增器,并且使用更少的程序内存。


很容易找到同时具有ADC和DAC的设备,或者同时具有电容式触摸传感器、分段LCD驱动程序和以太网的设备。


在内部,这些设备还具有通常在低端设备中找不到的硬件块。这些包括加密引擎,运算或可编程增益放大器,和DMA控制器。


尽管可以从各种制造商处找到16位微控制器,例如Microchip(他们的dsPIC33是一个流行的选择),NXP,Infineon或Cypress,但TI MSP430系列将在此作为该微控制器产品的典型示例。


TI MSP430系列


MSP430是一系列非常低功耗的16位微控制器,有多种型号可供选择。它们的范围从一般用途到非常专用的模型。


这些微控制器的特殊变体有一个有趣的地方,那就是它实际上分为两个极端:非常专用、非常低成本的模型,以及带有模拟传感器接口和数字信号处理(DSP)的高端模型。


一个高端应用的例子是这个超声波流量传感器。在低端市场,TI还生产基于MSP430的芯片,可以解决许多非常特定的硬件功能。


例如,想要SPI-to-UART接口、I/O扩展器或UART-to-UART桥接器?所有的都在里面,而且这个芯片的价格不到0.30美元。


最后,当然,MSP430得到许多低成本工具和开发套件的支持。


下面的表1显示了一些主流版本的附加特性。


表1 -主流MSP430的功能总结


32位微控制器


32位微控制器是功能强大的设备,具有类似微处理器的功能。一些高级功能包括指令流水线、分支预测、嵌套矢量中断(NVI)、浮点单元(FPU)、内存保护和板上调试器。


指令流水线处理意味着处理器内核提前预取了后续指令,而分支预测则预取了if-else条件的两个结果的下一条指令,从而加快了代码执行速度。


NVI提供了中断优先级,其中一个中断可以抢占较低优先级的中断。


FPU的浮点运算速度比SW实现的方法要快得多。


例如,内存保护可以确保应用程序代码不会无意中覆盖专门用于操作系统的关键部分。


最后,on-board调试允许窥视寄存器和系统的其他区域,以促进应用程序代码调试。所有这些都使这些微控制器能够运行大型、快速和强大的应用程序。


此外,它们的原始处理能力意味着它们可以很容易地支持实时操作系统(RTOS),从而提供多任务处理能力。


尽管市场上有很多32位的微控制器,但本文的重点将放在基于ARM Cortex M的设备上。


ARM控股实际上只设计处理器的核心IP,然后将其授权给各种半导体供应商,这些供应商将处理器和一些外围设备整合到自己的硅芯片中。许多芯片制造商提供基于Cortex-M架构的微控制器。


两家基于ARM的芯片的著名供应商是Atmel的SAM设备系列和STMicroelectronics的STM32产品系列。


由于SAM设备在一些与Arduino兼容的板中使用,因此在这里值得一提。然而,总的来说,STM32设备提供了更多的选择,在设计嵌入式32位微控制器时应该优先考虑。


STM32微控制器


ARM Cortex M内核有许多版本。最受欢迎的是M0 / M0 +,M1,M3,M4和M7,每个都提供越来越高的性能。STM32微控制器包含M0 / M0 +,M3,M4或M7内核。


图1显示了STM32系列基于ARM Cortex M的微控制器及其预期的应用领域。


图2–STM32系列微控制器


在图1所示的每个类别中,可以选择许多族来更紧密地匹配给定的应用程序。


例如,图2显示了“主流”类别中可用的主要变体及其相对性能曲线。请注意,在每个族本身中,有许多变体,它们具有外围设备和内存量的不同组合。


事实上,在这个时候,有超过300个STM32微控制器在这个类别中可用。


图3 – STM32主流类别中的微控制器系列


STM32硬件支持:STM32系列由ST Microelectronics和第三方提供的各种硬件工具支持。


STLink V2是一种廉价的电路内调试器/程序员。它由ST公司生产,可以从Digi Key等地方买到;当然,也可以买到非常便宜的山寨品。


ST Microelectronics在Nucleo和Discovery系列下还拥有大量开发板。


两者都包含一个STLink调试接口。所需要的只是一台带USB接口的计算机,运行合适的软件工具来评估所选的微控制器。


发现板包括额外的外部设备,如MEM传感器和电容触摸板。但是,Nucle具有与Arduino扩展板兼容的标头。


图4 –用于STM32F407微控制器的ST Discovery开发板


在离开本节之前,值得一提的是另一个非常便宜的开发板。这款平板电脑俗称“蓝色药丸”(Blue Pill),采用基于STM32F103 Cortex M3的芯片,从某些渠道购买的价格不到2美元。


该开发板的一个吸引人的功能是可以使其与Arduino兼容,从而可以使用Arduino IDE或Platform IO编写和下载代码以快速验证概念设计。


虽然Arduino兼容的过程有点复杂,但有几个地方出售Arduino板。只需搜索“STM32duino”。


STM32软件支持:意法半导体为其所有STM32产品线提供ARM Mbed开发套件版本。这包括一个IDE、编译器和一组广泛的库。


对于喜欢使用其他编译器的开发人员,ST提供了它的STMCube。这是一个代码生成器软件,它为STM32外围设备生成初始化代码。


这样,就不需要完全通过多个寄存器的位设置来设置外围设备,例如IO端口或定时器。


ESP32


ESP32是Espressif Systems的微控制器。如图3所示,它具有典型的32位微控制器上的所有功能。


图5–Espressif ESP32模块


然而,这个特殊的微控制器与其他的不同之处在于它的芯片上包含了WiFi和蓝牙硬件。


这不仅包括协议栈,还包括实际的无线电收发器。ESP32也可以作为一个集成天线的小型预认证模块使用。


对于需要WiFi或蓝牙连接的应用程序,ESP32值得认真考虑。ESP32的价格(包括分立芯片和模块)是非常实惠的价格,特别是考虑到该芯片的功能和性能的数量。


图6-ESP32功能框图


结论


微控制器可以说是您必须为您的产品选择的最重要的组件。在项目中期切换到新的微控制器可能是一场噩梦,所以一定要提前做出正确的选择。


设计中的其他组件通常可以在不需要大量系统级更改的情况下进行更改。但作为产品核心的微控制器却不是这样。


在选择微控制器时,通常希望选择一个能给您的产品增长空间的微控制器。例如,如果您确定需要16个GPIO pin,那么您就不想选择只有16个GPIO pin的微控制器。


如果您决定在未来添加一个新的按钮,因此需要另一个GPIO pin,会发生什么?如果你的微控制器没有给你足够的发展空间,那么你可能会发现,看起来简单的设计升级在未来将需要一个大规模的重新设计,因为一个新的微控制器是必要的。


另一方面,您不希望选择超出预期需要的性能或特性。


例如,如果您的产品只是简单地监测温度和湿度,那么您将永远不需要运行在数百兆赫的高级32位微控制器。那将会给你的产品增加不必要的成本和设计复杂性。


相反,你需要找到一个最佳的平衡点,既要有足够的发展空间,又不需要为永远不会真正需要的性能或功能付费。


为您的产品选择最佳的微控制器(以及所有其他组件)是我们可预测的硬件报告服务的关键部分。


*点击文末阅读原文,可阅读英文原文


*免责声明:本文由作者原创。文章内容系作者个人观点,半导体行业观察转载仅为了传达一种不同的观点,不代表半导体行业观察对该观点赞同或支持,如果有任何异议,欢迎联系半导体行业观察。


今天是《半导体行业观察》为您分享的第2223期内容,欢迎关注。

推荐阅读


小米造芯这五年

WiFi 6,好在哪里?

存储,江湖


半导体行业观察

半导体第一垂直媒体

实时 专业 原创 深度


识别二维码,回复下方关键词,阅读更多

“芯”系疫情|AI|TWS|ARM存储CMOS|德州仪器|MEMS



回复 投稿,看《如何成为“半导体行业观察”的一员 》

回复 搜索,还能轻松找到其他你感兴趣的文章!

点击文末,阅读英文原文!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存