较长的电池续航时间,对提高消费类设备的用户满意度至关重要。对于电池供电的物联网 (IoT) 端点,延长电池续航时间可降低维护成本,提高可靠性。由于这些设备所使用的微控制器功耗相对较大,因此设计人员需要选择并应用合适的架构以满足这些应用的需求。事实证明,多数情况下16位微控制器正是选择。
虽然8位微控制器的功能逐渐强大,但是鉴于处理能力和可寻址存储器有限,性能上存在固有限制,以致于高性能应用通常不会选用8位微控制器。另一方面,基于32位内核的系统对于这些应用往往又稍显过火,尤其是导致不必要的功耗过大时。
解决方案恰恰位于8位和32位内核中间的平衡点——16位微控制器。这类器件既像简单的单电源8位微控制器一样功耗较低,又具有32位内核的部分性能和存储器优势。如果应用不要求很多线程同时处理,存储器要求也不太高,那么16位微控制器可以提供适当的性能水平并能显著节能。
本文介绍了16位微控制器的架构及其如何成为许多电池供电的消费类设备和物联网端点应用的佳选择。此外,还介绍了Microchip Technology和Texas Instruments推出的几款16位微控制器,并说明如何使用16位内核着手设计。
微控制器选型
在设计过程中,定义项目要求后的第一步就是为应用选择合适的微控制器。三种主流选项分别是8位、16位和32位微控制器。
不夸张地说,8位微控制器应用极为普遍,堪称设计人员的主力器件。低成本、低功耗的8位微控制器几乎适用于任何小功率应用:主流微控制器中功耗低的器件,某些器件待机电流低于100nA。
使用也相对简单,8位微控制器大多基于累加器,尽管一些较新的架构具有寄存器组,因而编程模型简单且有限:累加器或带单个状态寄存器的小寄存器组、堆栈指针,以及一个或多个变址寄存器。堆栈往往都是硬件堆栈,并且固件无法访问程序计数器 (PC)。
尽管8位架构广受青睐,可一旦涉及网络和通信就遇到了瓶颈。几乎所有通信堆栈和网络协议都采用16位或32位,因此不必考虑8位架构。此外,即便是高端8位微控制器也往往局限于16位寻址,不具备分页机制,限制了固件的大小和复杂性。
另一方面,32位微控制器在所有高性能应用中广泛应用。基于寄存器的架构可轻松支持网络和通信;通常使用32位寻址,支持浮点运算和高等代数运算,并且时钟速率可达千兆赫级。32位内核具有更复杂的编程模型,包括多个状态寄存器、固件可访问的PC、复杂的中断管理以及两层或多层固件执行权限。
16位微控制器虽都基于寄存器,但架构同8位内核一样简单。因此,16位内核往往都具有良好的低功耗性能,电流消耗明显低于32位架构,功耗则几乎与8位内核一样低。如果应用需要进行高等数学运算,一些16位微控制器具有数学协处理器,在相同的内部时钟速度下其数学性能可与32位内核媲美。
此外,许多通信协议栈都支持16位微控制器联网。对于以太网、CAN、USB和Zigbee 等协议栈,只要应用程序代码的性能足以支持堆栈,那么使用16位微控制器的运行速度可与32位微控制器一样快。
支持大型闪存阵列寻址
32位与16位架构的一大差异在于存储器寻址范围。32位微控制器具有32位地址总线,可以访问高达4GB的存储器。传统16位微控制器使用16位寻址,只能访问64KB的存储器。不过,如今许多16位架构都使用高达24位的扩展寻址,相当于扩充了16MB的地址空间。
Microchip Technology的低功耗 PIC24F微控制器系列是扩展寻址方式的典型范例。其中一款微控制器PIC24FJ1024GA,32MHz的16位微控制器具有1MB的板载闪存和32KB的板载SRAM,使用类似于许多8位微控制器的简单编程模型(图1)。
图1:Microchip的PIC24F编程模型类似于高端8位微控制器,采用基于寄存器的架构,具有16个通用16位寄存器、堆栈指针、PC和5个辅助寄存器。(图片来源:Microchip Technology)
PIC24具有23位程序计数器,可以访问高达8MB的程序闪存。16个16位寄存器,称为工作寄存器(WREG),记作W0至W15:W0至W13寄存器是通用寄存器 (GP),可在固件控制下用于存储数据;W15 是专用堆栈指针 (SP),除了可以通过函数和子例程调用、编程异常处理和调用返回使其自动递增和递减外,SP也可如W0至W13寄存器一样通过固件修改。
使用LINK和UNLINK汇编指令可将W14用作堆栈帧指针 (FP)。堆栈指针限制寄存器 (SPLIM) 是一个独立寄存器,可与SP配合使用以防止堆栈溢出。
PIC24采用具有独立地址和数据空间的哈佛架构。与特殊指令配合使用,数据表页地址 (TBLPAG) 寄存器和程序空间可视性页地址 (PSVPAG) 寄存器可用于访问并在地址和数据空间之间传输数据。这是32位架构的常用功能,但8位内核却鲜少具备。
16位重复循环计数器 (RCOUNT) 寄存器包含循环计数器,可用于REPEAT汇编指令。
16位CPU内核控制 (CORCON) 寄存器用于配置PIC24内核的内部操作模式。
16位状态寄存器包含PIC24内核状态的工作状态位,包括上次执行汇编指令所产生的结果状态。
根据Microchip Technology对PIC24FJ1024GA606T的性能评定,工作频率为32MHz时可达16MIPS。对于16位内核而言,这一指标着实令人印象深刻。该内核具有32位微控制器的许多功能,例如同时支持分数运算的17位 × 17位硬件乘法器以及32位/16位硬件除法器。对于需要对传感器数据进行计算的物联网端点而言,这些功能相当管用。此外,该架构还可以同时读写数据存储器,却丝毫不影响性能。
虽然PIC24FJ1024GA606T具有USB OTG等多种标准外设,但在电池供电应用中其功耗相当低。所需的供电电压仅为2.0V至3.6V,微控制器以32MHz的工作频率全速运行时电流消耗大值为7.7mA,换作是32位内核则极难实现这一指标。通过固件可以控制核心和外设时钟。目前有两种使器件进入低功耗模式的汇编指令:IDLE指令使PIC24内核停止运行,但外设可以继续工作;SLEEP指令将停止除看门狗(可选)和外部中断检测外所有器件的操作。空闲模式下,大电流仅为2.8mA,而休眠模式下,大电流范围为10至45?A,具体取决于外设配置。在低功耗模式,即休眠模式下,仍保存随机存取存储器(RAM) 中的内容,PIC24F的消耗电流低至190nA。
为了获得更高的性能,Microchip Technology在dsPIC?系列中推出高端16位微控制器。Microchip的dsPIC33EP512GP506T是其中一款16位70MIPS微处理器,具有512KB的闪存。dsPIC的内核寄存器与PIC24大致相同,只是增加了支持数字信号处理 (DSP) 指令的寄存器,包括两个40位累加器且支持32位乘法。如需对PIC24进行系统内升级,PIC24微控制器大多可以进行引脚兼容的dsPIC升级,因而使用同一块印刷电路板亦可提高性能。
当然,性能越高,功率也就越大。这款dsPIC33的供电电压为3.0至3.6V,运行速度达70MIPS时,大电流为60mA。
降低功耗,提高性能
Texas Instruments的MSP430FR599x微控制器系列采用该公司的铁电随机存取存储器 (FRAM) 程序存储器,实现更高的读/写性能,而功耗较之闪存微控制器更低。
MSP430FR5994IPNR16位微控制器是该系列产品之一,时钟频率达16MHz,具有256KB的FRAM。
MSP430FR微控制器内核的性能增强功能包括双向关联缓存(由四个行宽为64字节的缓存块组成),从而实现更高的FRAM性能;32位硬件乘法器可提高数学密集型操作的性能;以及独立于MSP430主内核的低能耗加速器 (LEA) 协处理器。该LEA可执行256点复数快速傅立叶变换 (FFT)、有限冲激响应 (FIR) 滤波器和矩阵乘法。根据TI的介绍,矩阵乘法的运算速度比Arm? Cortex?-M0+多快40倍。该LEA可提高传感器融合操作、图像增强和超声波传感器数据处理的性能。面对这些应用时,开发人员通常都优先考虑32位内核,而非超低功耗的16位微控制器。
MSP430R的编程模型非常简单(图2),共有16个16位寄存器R0至R15:R0是程序计数器,R1是堆栈指针,R2是状态寄存器,R3是常数发生器(用于立即操作数),R4至R15是通用寄存器。其他寄存器配置则采用内存映射方式,与多数32位内核类似。
图2:MSP430微控制器寄存器组配置与其他基于寄存器的16位内核类似。其他寄存器配置则采用内存映射方式。(图片来源:TexasInstruments)
虽然提高了性能,却丝毫没有增加功耗。待机模式下,TI的MSP430FR5994以实时时钟(RTC) 运行,电流消耗仅为350nA。关断模式下,电流消耗仅为45nA。这一指标低于目前市面上任何一款32位微控制器,甚至低于多数8位微控制器。
MSP430FR5994IPNR的工作电压范围为1.8至3.6V。固件以FRAM运行而缓存命中率为零时,MSP430FR的电流消耗仅为3mA。若从缓存运行代码,则电流消耗仅为790?A。结合LEA,这款16位微控制器可提供极高的处理性能和极低的功耗。
通过TI的MSP-EXP430FR5994 LaunchPad?可轻松开发MSP430FR5994系列的低功耗应用。该LaunchPad开发套件包含了开发人员着手MSP-EXP430FR5994微控制器编码和固件调试所需的一切(图3)。
图3:TI 的MSP-EXP430FR5994LaunchPad具有开发人员上手MSP-EXP430FR5994 16 位FRAM微控制器编码和固件调试所需的一切。(图片来源:Texas Instruments)
该LaunchPad具有两个按钮、两个LED和一个microSD卡插槽。为了证明MSP430FR5994微控制器的低功耗性能,该LaunchPad具有0.22F的超大电容为LaunchPad供电。将LaunchPad接入外部电源并将跳线J8设置为“充电”,即可为电容充电。只需2至3分钟就可将电容完全充满。三分钟后,将跳线J8设置为“使用”,移除外部电源,MSP430即可运行数分钟,具体视应用而定。
此外,该LaunchPad还可用于测量MSP430及其应用的电流消耗。J101隔离块具有包括3V电源跳线3V3在内的七根跳线。移除跳线3V3,即可通过这两个引脚测量应用的电流。
该LaunchPad还支持TI的EnergyTrace?技术,可以连接计算机使用Texas Instruments的EnergyTrace图形用户界面 (GUI),使开发人员能够实时观测MSP430微控制器和应用的功耗数据,从而微调应用以实现低功耗。
例如,实时电流监控和记录可以显示MSP430微控制器的电流消耗偶尔出现激增。电流激增会降低电池质量,缩短电池寿命。电流激增可能缘于片上外设的错误配置、外部电感或电容负载,甚至是由于固件试图同时启动所有功能。通过电流监控和记录,开发人员可以明确应该如何调整固件,从而控制尖峰电流。
总结
对于许多低功耗、中等性能的电池供电嵌入式应用而言,开发人员可以选择合适的16位微控制器,而非32位内核。如上所述,在许多应用中,16位微控制器的功耗比32位内核低得多,却仍然可以实现所需的性能。
精彩评论