【产品】8位、16位、32位MCU究竟该如何选择?
现在,当工程师们在选择微控制器(MCU)时,讨价还价正在变得越来越普遍。考虑到可以选择的各种MCU产品数以千计,分辨出哪种MCU对某种应用是否合适确实存在一定的困难。与以前针对专门应用决定采用最佳性价比MCU的方法相比,工程师不得不询问更为广泛的问题,而且这一趋势必将随着MCU新功能的增加而继续下去。那么,在众多各具特色的8位、16位、32位MCU中究竟该如何选择呢?
以领先的MCU供应商SILICON LABS为例,其拥有丰富的8位和32位MCU产品线。比如,其被称为8位MCU杀手锏的C8051F39x/7x系列 MCU,搭载的片上温度传感器可提供更大温度范围(高达105°C)和±2°C的精确度,比其他同类MCU产品的温度精度高出5倍,而且通过改进温度补偿处理例程,可获得更好的终端产品可靠性。此外,与其他MCU产品不同的是,该系列MCU产品中的温度传感器无需工厂校准,从而降低生产成本。通过在极小封装内集成高性能模拟外设和极速8051 CPU内核,C8051F39x/7xMCU系列产品为光传输模块、传感器接口以及电风扇、烘干机、吸尘器、遥控玩具车等无刷直流电机应用提供优化的解决方案。
SiliconLabs另一类备受瞩目的8位MCU系列产品是针对物联网领域推出的EFM8 MCU。该MCU系列产品包括三种高集成度、外设丰富的MCU,即EFM8 Busy Bee,EFM8 SleepyBee和EFM8Universal Bee,这些MCU特别针对高性价比、超低功耗电容式触摸控制和精简USB连接而进行了优化。EFM8 MCU为嵌入式开发人员所能想到的所有8位应用提供了业内领先的简便性、能效、性能和成本节省的综合优势,应用涵盖家居和楼宇自动化、可穿戴、消费类电子、玩具、电机控制和工业IoT等。
SiliconLabs不仅具有8位MCU系列产品,还拥有丰富的32位MCU产品。例如,EFM32Gecko系列MCU。该系列MCU产品采用创新低能耗技术,节能模式唤醒时间缩短,可搭配各种外围设备,是电池驱动应用及其他需要高性能和低功耗系统的理想选择。该系列MCU中有一款名为Happy Gecko的MCU产品带有USB功能,提供业界最低USB功耗,从而实现更长的电池使用寿命以及能源收集型应用。它基于ARM Cortex-M0+内核和低能耗外设,为各类IoT应用简化USB连接设计,这些应用包括智能仪表、智能家居和楼宇自动化、报警和安全系统、智能配件和可穿戴设备等。
通过上面的介绍可以看出,就Silicon Labs一家MCU供应商而言,就有如此众多的MCU产品,而且这些还只是其广泛MCU产品线中的一部分。所以,在数量如此众多的MCU中如何做出选择,真的是值得工程师深思熟虑。
近日,Silicon Labs发表了一篇技术文章,分析了如何在8位MCU和32位MCU之间进行选择,可为工程师提供借鉴。为了便于比较,这篇文章中32位MCU采用了ARM Cortex-M架构,8位MCU则采用嵌入式开发人员非常喜欢的,且易于理解的8051架构。主要从以下8个方面进行比较:
1)系统规模
第一个一般性原则是,ARM Cortex-M内核更适用于较大的系统规模(> 64KB代码),而8051器件适用于较小的系统规模(< 8KB代码)。中等规模的系统可以选择两种方式,这取决于系统要执行的任务。有必要注意一点,在大多数情况下,外设组合将会发挥重要作用。如果需要3个UART、1个LCD控制器、4个时钟和2个ADC,你可能并不会在8位MCU上找到所有这些外设。
2)易用性 VS 成本和尺寸
对于中等规模的系统来说,使用任何一种架构都可以完成工作。但主要的权衡是选择ARM内核带来的易用性,还是8051设备带来的成本和物理尺寸优势。
ARM Cortex-M架构具有统一的存储模式,并且在所有常见编译器中支持完整的C99,这使得这种架构非常易于写固件。此外,还可得到一系列库和第三方代码。当然,这种易用性的代价就是成本。对于高复杂性、上市时间较短的应用或缺乏经验的固件开发人员来说,易用性是个重要因素。
尽管8位与32位部件相比有些成本上的优势,但真正的区别就在于成本级别。大家经常会发现具有2KB/512B(Flash/RAM)的小容量8位器件,而却很少见低于8KB/2KB的32位器件。在不需要很多资源的系统中,该范围的存储容量能够让系统开发人员实现显著降低成本的解决方案。因此,对成本极为敏感或仅需较小存储容量的应用会更倾向于选择8051解决方案。
通常,8位器件也具有物理尺寸上的优势。例如:Silicon Labs提供的最小的32位QFN封装为4mm×4mm,而基于8051的8位器件的QFN封装可小至2mm×2mm。芯片级封装(CSP)的8位和32位架构之间的差异较小,但却使成本增加,且组装较难。对于空间严格受限的应用来说,通常需要选择8051设备来满足限制要求。
3)通用代码和RAM效率
8051 MCU成本较低的主要原因之一是它通常比ARM Cortex-M内核更高效的使用Flash和RAM,这允许系统采用更少资源实现。系统越大,这种影响就越小。
注意这种8位存储资源的优势并不总是如此,这一点很重要。在某些情况下,ARM内核会像8051内核一样高效或比其更高效。例如:32位运算仅需要一条ARM设备指令,而在8051 MCU上则需要多条8位指令。显然,这种代码在ARM架构上有更高的执行效率。
ARM架构在Flash/RAM尺寸较小时的两个主要缺点是:代码空间效率和RAM使用的可预测性。
首要也是最明显的问题是通用代码空间效率。8051内核使用1字节、2字节或3字节指令,而ARM内核使用2字节或4字节指令。通常情况下,8051指令更小,但这一优势因实际上花费许多时间而受到削弱,ARM内核比8051在一条指令下能做更多工作。32位运算就是这样一个示例。实践起来,指令宽度是能在8051上产生适度的更密集代码。
4)延迟时间
两种架构的中断和函数调用延时存在很大差异,8051比ARMCortex-M内核更快。此外,高级外设总线(APB)配备的外设也会影响延时,这是因为数据必须通过APB和AMBA高性能总线(AHB)传输。最后,当使用高频内核时钟时,许多基于Cortex-M的MCU需要分配APB时钟,这也增加了外设延时。
我做了个简单的实验,实验中的中断是通过I/O引脚触发的。该中断对引脚发出一些信号,并根据引发中断的引脚更新标志。然后我测量了一些参数,如下表所示。这里的列表显示了32位的实现。
8051内核在中断服务程序(ISR)进入和退出时显示出了优势。但是,随着中断服务程序越来越大和执行时间的增加,这些延迟将变得微不足道。和已有原则一致,系统越大,8051的优势越小。此外,如果中断服务程序涉及大量数据迁移或大于8位的整数数据运算,中断服务程序执行时间的优势将转向ARM内核。例如,一个采用新样本更新16位或32位移动平均的ADC ISR可能在ARM设备上执行得更快。
5)控制 VS 处理
8051内核的基本功能是控制代码,其中对于变量的访问是分散的,并且使用了许多控制逻辑(if、case等)。8051内核在处理8位数据时也是非常有效的,而ARM Cortex-M内核擅长数据处理和32位运算。此外,32位数据通道使得ARM MCU复制大包的数据更加有效,因为它每次可以移动4个字节,而8051每次仅能够移动1个字节。因此,那些主要把数据从一个地方移动到另一个地方(例如UART到CRC或者到USB)的流数据处理的应用更适合选择基于ARM处理器的系统。
来做个简单的实验。我们编译以下两种架构的函数,变量大小为uint8_t、uint16_t和uint32_t。
uint32_tfuncB(uint32_t testA, uint32_t testB){
return (testA * testB)/(testA—testB)
}
|data type | 32bit(-o3) | 8bit |
| uint8_t | 20 | 13 | bytes
| uint16_t | 20 | 20 | bytes
| uint32_t | 16 | 52 | bytes
随着数据量的增加,8051内核需要越来越多的代码来完成这项工作,最终超过了ARM函数的大小。16位的情况下在代码大小上几乎类似,在执行速度上稍好于32位内核,因为相同代码通常需要更少周期。还有一点很重要,那就是要注意到,只有采用优化的ARM编译代码时,这种比较才有效。未优化的代码需要花费几倍长的时间。
这并不意味着有大量数据移动或32位运算的应用就不应该选择8051内核完成。在许多情况下,其它方面的考虑将超过ARM内核的效率优势,或者说这种优势是不相关的。考虑使用UART到SPI桥接器。该应用花费大部分时间在外设之间复制数据,而ARM内核会更高效地完成该任务。然而,这也是一个非常小的应用,可能小到足以放入一个仅有2KB存储容量的器件就足够合适。
尽管8051内核效率较低,但它仍然有足够的处理能力去处理该应用中的高数据速率。对于ARM器件来说,可用的额外周期可能处于空闲循环或“WFI”(等待中断),等待下一个可用的数据片到来。在这种情况下,8051内核仍然最有意义,因为额外的CPU周期是微不足道的,而较小的Flash封装会节约成本。如果我们要利用额外的周期去做些有意义的工作,那么额外的效率将是至关重要的,且效率越高越可能越有利于ARM内核。这个例子说明,清楚被开发系统所关注的环境中的各种架构优势是何等重要。做出这个最佳的决定是简单但却重要的一步。
6)指针
8051器件没有像ARM设备那样的统一存储映射,而是对访问代码(Flash)、IDATA(内部RAM)和XDATA(外部RAM)有不同的指令。为了生成高效的代码,8051代码的指针会说明它指向什么空间。然而,在某些情况下,我们使用通用指针,可以指向任何空间,但是这种类型的指针是低效的访问。例如,将指针指向缓冲区并将该缓冲区数据输出到UART的函数。如果指针是XDATA指针,那么XDATA数组能被发送到UART,但在代码空间中的数组首先需要被复制到XDATA。通用指针能同时指向代码和XDATA空间,但速度较慢,并且需要更多的代码来访问。
专用区域指针在大多情况下能发挥作用,但是通用指针在编写使用情况未知的可重用代码时非常灵活。如果这种情况在应用中很常见,那么8051就失去了其效率优势。
7)内核优势
我已经注意到多次,运算倾向于选择ARM,而控制倾向于选择8051,但没有应用仅仅着眼于计算或控制。我们怎样才能表征广义上的应用,并计算出它的合适范围呢?
让我们考虑一个由10%的32位计算、25%的控制代码和65%的一般代码构成的假定应用时,它不能明确地归于8位或32位类别。这个应用也更注重代码空间而不是执行速度,因为它并不需要所有可用MIPS,并且必须为成本进行优化。成本比应用速度更为重要的事实在一般代码情形下将给8051内核带来微弱优势。此外,8051内核在控制代码中有中间等级的优势。ARM内核在32位计算上占上风,但是这并非是很多应用所考虑的。考虑到所有这些因素,这个特殊的应用选择8051内核更加合适。
如果我们做一细微的改变,假设该应用更关心执行速度而非成本,那么通用代码不会倾向于哪种架构,并且ARM内核在计算代码中全面占优。在这种情况下,虽然有比计算更多的控制代码,但是总的结果将相当均衡。
显然,在这个过程中有很多的评估,但是分解应用然后评估每一组件的技术将帮助确保我们了解在哪种情况下哪种架构有更显著的优势。
8)功耗
当查阅数据手册时,很容易根据功耗数据得出哪个MCU更优的结论。虽然睡眠模式和工作模式电流性能在某些类型MCU上确实更优,但是这一评估可能会非常具有误导性。
占空比(在每个电源模式上分别占用多少时间)将始终占据能耗的主导地位。除非两个器件的占空比相同,否则数据手册中的电流规格几乎是没有意义的。最适合应用需求的核心架构通常具有更低的能耗。
假设有一个系统,在器件被唤醒后添加一个16位ADC样本到移动平均,然后返回到休眠状态,直到获取下一个样本时才又被唤醒。该任务涉及大量16位和32位计算。ARM器件将能够进行计算,并比8051器件更快返回到休眠状态,这会让系统功耗更低,即使8051具有更好的睡眠和工作模式电流。当然,如果进行的任务更适合8051器件,那么MCU能耗由于相同的原因而对系统有利。
外设特性也能够以这样或那样的方式影响功耗。例如,大多数Silicon Labs的EFM32 32位MCU具有低功耗的UART(LEUART),能够在低功耗模式下接收数据,而却只有两个EFM8 MCU具有此功能。这一外设影响电源的占空比,且在任何需要等待UART通信的应用中都比缺乏LEUART的EFM8在很大程度上有利于EFM32MCU。遗憾的是,除了让MCU供应商的本地应用工程师利用EFM8来解决问题,没有简单的指南来评估这些外设因素。系统设计人员还应了解各种MCU能耗模式下可完成的处理任务。
看到这里您是否又有项目灵感需实现,点击下面开发软件帮你忙。
Silicon Labs Simplicity Studio平台开发工具 详情>>>
Silicon Labs 集成开发环境工具 详情>>>
Silicon Labs 配置向导2开发工具 详情>>>
Silicon Labs FLASH编程开发工具 详情>>>
Silicon Labs 8位MCU Keil PK51 开发工具 详情>>>
Silicon Labs ToolStick 开发工具 详情>>>
Silicon Labs μVision 调试驱动程序开发工具 详情>>>
Silicon Labs 生产编程器开发工具 详情>>>
Silicon Labs .HEX转化.SVF开发工具 详情>>>
Silicon Labs USB复位实用程序开发工具 详情>>>
- |
- +1 赞 0
- 收藏
- 评论 6
本网站所有内容禁止转载,否则追究法律责任!
评论
全部评论(6)
-
用户_4277 Lv3 2019-06-14学习了
-
闲云 Lv7. 资深专家 2019-03-27介绍的不错
-
新生物 Lv8. 研究员 2018-09-18学习了
-
Roonie Lv7. 资深专家 2018-03-15很不错
-
ZLongLee Lv5. 技术专家 2018-01-06初学者很适合看看
-
SunnyPlus Lv7. 资深专家 2017-11-19介绍很详细
相关推荐
【产品】小蜜蜂8位MCU助您轻松迎接物联网时代
Silicon labs推出了一款集小封装和高性价比于一身的多用途8位MCU EFM8BB1,可轻松替代普通8051家族的MCU产品。
【产品】3x3mm极小封装高性能8位MCU,关闭模式下耗电电流仅仅0.2μA
Silicon Labs的EFM8LB1系列激光小蜜蜂8-bit 微控制器系列集成丰富的外设模块,体积小,适合高性能模拟应用产品的设计。
【产品】EFM8 Busy Bee系列EFM8BB1 8位MCU,是空间受限应用的理想选择
Silicon Labs(芯科科技)推出的EFM8BB1 是 Busy Bee 系列的 MCU,是一款小封装且功能全面的多用途 8-位微控制器。此产品以小封装集成了先进的模拟和通信外围设备,是空间受限应用的理想选择。EFM8BB1 系列采用高效的 8051 内核、增强的脉冲宽度调制和精密模拟,也是嵌入式应用的最佳选择。
SILICON LABS 8-bit Microcontroller选型表
SILICON LABS 8位MCU选型,MCU Core 8051,频率20MHz~100MHz,Flash存储2kB~120kB,RAM存储0.25kB~8kB。
产品型号
|
品类
|
系列
|
Frequency(MHz)
|
Flash (kB)
|
RAM (kB)
|
Vdd min(V)
|
Vdd max(V)
|
Package Type
|
Package Size (mm)
|
Internal Osc.
|
Dig I/O Pins
|
ADC 1
|
Temp Sensor
|
Timers (16-bit)
|
PCA Channels
|
DAC
|
Comparators
|
UART
|
SPI
|
I2C
|
HS I2C Slave
|
EMIF
|
CAN
|
LIN
|
VREF
|
Debug Interface
|
C8051F392-A-GM
|
8位MCU
|
C8051F39x Small Form Factor
|
50
|
16
|
1
|
1.8
|
3.6
|
QFN20
|
4x4
|
±2
|
17
|
10-bit, 16-ch., 500 ksps
|
Temp Sensor
|
6
|
3
|
10-bit, 2-ch.
|
1
|
1
|
1
|
2
|
0
|
0
|
0
|
0
|
VREF
|
C2
|
选型表 - SILICON LABS 立即选型
【经验】如何正确使用8位MCU的PortMatch功能
Silicon Labs的8位MCU(C8051和EFM8)都具有PortMatch功能,此功能允许一个或多个端口IO引脚上的逻辑电平变化触发系统事件。
【经验】8位MCU EFM8SB2擦除Flash会复位的解决方法
SILICON LABS的EFM8SB2是最节能的小封装8位MCU。采用高效的8051内核,最低睡眠电流为50nA,功耗可达170μA/MHz,可应用手持设备、电池驱动式消费电子设备、传感器接口等。
【经验】8位MCU EFM8LB1 FLASH擦写操作步骤
EFM8LB1系列是silabs专门针对光模块以及消费市场推出的高度集成的3x3mm小封装8位MCU,内部自带温度传感器,+/-3℃温度范围,可选0-4路DAC,UART或者SMBUS bootloader,以及其他通用接口。本文主要介绍EFM8LB1系列Flash的擦写方式以及步骤。
【经验】8位MCU EFM8BB3 UART0波特率设置方法
EFM8BB3系列MCU是Silicon Labs公司推出的一款小封装、多用途8位MCU,该MCU还集成了多种通信功能,包括UART、SPI(主/从)、SMBus/I2C(主/从)接口,其中UART0是一个异步、全双工串口,它提供标准8051串行口的方式1和方式3,那么有没有一种简单,方便,快捷的波特率设置方法呢?本文将对其进行介绍。
EFM8LB低功耗8位MCU在使用BOOTLOADER时,如何让程序进入BOOTLOADER?
EFM8LB的芯片进入BOOTLOADER有三种方法。第一种:上电后如果0X0000地址的数据为0XFF,程序会直接进入BOOTLOADER. 第二种:在上电复 位时,如果C2D引脚保持低电平超过50uS,程序会进入BOOTLOADER.第三种: 应用程序将R0赋值为0XA5,然后执行软启动,启动后程序会自动进入 BOOTLOADER。
【经验】EFM32系列低功耗32位MCU芯片加密详解
本文主要介绍以Silicon Labs EFM32系列低功耗32位MCU为核心的方案打造加密系统。
【经验】 8位MCU EFM8UB3从Snooze模式唤醒方法
EFM8UB3系列是Silicon labs公司推出的带有USB功能的8位MCU,支持六种工作模式可供选择,有Normal(正常),Idle(空闲),Suspend(挂起),Stop(停止),贪睡模式(Snooze),停机模式(Shutdown)六种工作模式,其中Snooze(睡眠)模式,在实际产品中,最常用到,本文将详细从Snooze模式唤醒MCU的方法。
【技术】预安装BOOT的新一代的8位MCU
Silicon labs的EFM8系列MCU是C8051F的升级换代产品。较C8051F不同的是,其在出厂时已经固化好BOOT程序。
【技术】小封装、多用途8位MCU EFM8BB3系列MCU工作模式详解
EFM8BB3系列MCU是Silicon Labs公司推出的一款小封装、多用途8位MCU,该MCU最高运行频率可达49MHz,其RAM容量最大为4352B,FLASH容量最大可达64KB。
【经验】32位MCU LEUART位周期抖动大,该如何解决?
Silicon Labs 32位MCU EFM32,当基于32.768kHz时钟使用LEUART(@9600bps)进行通讯的时候,发现存约1%误码,原因是什么?如何解决?
【应用】32位MCU在中高端音频处理系统中的应用
音频信号处理涉及多方面,如采集、去除噪声等等,普通MCU很难用一颗芯片集成如此众多的功能。
电子商城
现货市场
服务
可定制插座连接器的间距1.25mm~2.54mm;列数:单列/双列/三列/四列;端子类型:直焊针、直角焊针、表面贴装式、无焊柔性针压接、绕接、载体.;镀层、车针长度/直径、连接针长度等参数可按需定制。
最小起订量: 1 提交需求>
可定制单位/双位/三位/四位LED数码管的尺寸/位数/发光颜色等性能参数,每段亮度0.8~30mcd,主波长470~640nm,电压2~10.2V。
最小起订量: 1000 提交需求>
登录 | 立即注册
提交评论