基于ARM的CPU在MCU领域无处不在,通常有几个可从同一个供应商处获得。每个 都针对一类特定的处理要求进行了优化,从低端功耗约束应用到高功耗性能优化的双核应用。目前,MCU设备中最流行的ARM CPU似乎是Cortex CPU。您如何确定哪种ARM Cortex CPU适合您的应用?让我们通过查看示例实现来探索一些更受欢迎的基于Cortex的MCU之间的主要区别,这些示例实现将帮助您确定哪一个适合您的下一个设计。
许多选项
找到许多不同的东西并不罕见单个MCU系列中的ARM Cortex CPU。 Cortex CPU及其可选扩展可满足各种应用需求,但都具有向后兼容的指令集,如图1所示。从Cortex-M0/M0 +/M1系列开始,指令集针对通用目的数据处理和IO任务。 Cortex-M3 CPU增加了高级数据处理和位域操作指令,可加速更复杂的控制和通用计算任务。 Cortex-M4 CPU增加了数字信号处理(D)指令,并提供单指令多数据(SIMD)操作,其中相同的数据处理指令可以同时对多个数据源进行操作。这些专业功能可以极大地加速复杂的数据处理任务,如音频和视频应用程序中的任务。当性能和精度都是目标算法的重要元素时,Cortex-M4 CPU还可以添加浮点单元(FPU)。例如,模拟传感和控制通常使用浮点来实现精度,但快速控制环闭合需要高性能。
图1:ARM Cortex MCU指令集兼容性。 (由ARM和Microelectronics提供)
这种常规和向后兼容指令集的一个关键优势是MCU制造商可以创建针对特定应用进行优化的设备,同时如果算法增长,则通过向上兼容性“覆盖所有赌注”目标系统生命周期中的复杂性。例如,您需要多少次添加更复杂的功能才能满足开发过程中的新要求? Cortex指令集架构(ISA)的向上兼容性使这很容易。在某些情况下,也可以简化目标架构,因为向下兼容性可以降低成本,如果可接受的性能较低。
STMicroelectronics在其STM32MCU系列中使用了多个ARM Cortex CPU。图2显示了各种Cortex CPU以及与每个MCU系列相关的关键硬件功能。请注意,Cortex-M0 CPU用于入门级STM32F030/50/051器件,而带有DSP和FPU的Cortex-M4用于高性能STM32F4xx(例如STM32F401RCT6)和STM32F3xx器件。中档设备使用Cortex-M3 CPU,其中不需要更复杂的DSP和FPU指令以获得最高性能。 (如果需要,这些指令可以用多个指令实现,大多数编译器提供了一种相当透明的方法,用于在硬件实现和多周期“软”实现之间切换。)
图2:STM32F MCU系列Cortex CPU和关键硬件功能。 (由STMicroelectronics提供)
其他供应商也支持多种ARM Cortex MCU,通常具有广泛的性能和成本范围。例如,Silicon Labs拥有使用ARM Cortex-M CPU的EFM32系列MCU(例如,EFM32ZG222F32-QFP48)。低端低功耗GZ系列使用Cortex-M0 + CPU,而中端TG,G,LG和GG系列使用Cortex-M3 CPU。高端WG系列使用Cortex-M4 CPU,具有DSP和FPU增强功能。有10种不同的软件包选项可以通过一些前期规划从一种CPU类型迁移到另一种CPU类型,从而更容易适应不断变化的需求或使用相同的基础设计提供不同的产品。