STM32G431RBT6——(2)浅析Cortex-M4内核
本篇博客是一个对Cortex-M4内核了解性的简介,不会涉及到深奥的理论,请大家放心食用。
我们所学习的STM32G431RBT6单片机是基于ARM的Cotex-M4内核,因此我们有必要对此内核做一个大概了解。其实M4内核和M3内核有很大的相似之处,很多资料也都将其放在一起去说,我们这里也先了解一下M3的内核,请看图:
这个图就向我们展示了ARM公司的M3内核,对于这样的内核,和我们用到的芯片,比如STM32F103C8T6,有什么关系呢?
1.内核与芯片的制造关系
请看下面这张图:
你是不是以为一个芯片,上面有某个公司的商标,就是完全由这个公司生产的?这样的理解是片面的。
请看上图,以ST公司的STM32系列(如F1/F4)为例,我们可以清晰看到半导体产业链的分工协作关系。ARM公司作为IP核设计商,提供标准化的处理器核心解决方案——即图中蓝色区域(Cortex-M3内核)及紫色区域(调试系统)。芯片厂商如ST则基于ARM授权的IP核,进行芯片级集成设计,具体包括:
-
外设开发:根据市场需求添加GPIO、UART、ADC、定时器等专用模块;
-
存储配置:设计Flash、SRAM的容量与布局;
-
时钟与电源管理:定制PLL、低功耗模式等电路;
-
物理实现:完成芯片的物理层设计(如制程选择、引脚排布)与封装测试。
这些东西结合在一起,才形成了我们使用的芯片。
这种模块化分工的优势在于:
-
ARM专注核心架构创新:持续优化处理器性能与能效比;
-
芯片厂商快速定制:通过调整外设组合,灵活满足工业、消费电子等不同领域需求(如F1侧重基础控制,F4强化DSP性能)。
2. Cortex-M3内核内部简介
我们把那个内核放大看,其实就是右边这个绿框框里的东西:
我们只需要大概知道里边有什么,可以看到,包括NVIC,取指单元,指令译码寄存器组,存储器接口,ALU,调试系统等,这里的一些东西我们后边会用到,比如NVIC,是管理STM32中断的,我们后边再说,想深入了解这个内核的工作原理,需要了解一些微机原理的计数,由于笔者微机原理学的不好,只能讲个大概:
首先我们要知道,内核不就是CPU吗,CPU的作用是什么,CPU的作用就是执行程序,而我们单片机的程序都在哪呢,都在闪存flash里放着,CPU怎么将程序拿过来呢?CPU是通过总线将程序从flash里拿过来的,而执行这个过程的就是取指单元,取到指令后,要知道这段指令是干什么的,就要对指令进行解码,此时就需要指令解码器,知道指令后肯定要进行执行啊,比如1+1,这里的运算就是算术逻辑单元ALU的工作了,当然算出来结果是2,肯定要找一个地方放着,就放到寄存器组里,然后结果再转移到外部的存储器系统比如RAM,如此一直循环。大概是这个意思,更严谨我也不会。
3.Cortex-M4内核
其实M4和M3内核基本一模一样,包括工作的基本原理,其实你看明白了M3内核,M4内核自然都明白了。
这个就是M4内核的图,下面我们将其与M3内核放一起对比:
可以看到M3和M4内核再其他部分是一摸一样的,只有画红框的部分不一样,M4比M3多了一个DSP和一个FPU,这两个东西是什么意思呢?
(1) 浮点单元(FPU)
- 浮点单元(FPU, Floating-Point Unit)是一个硬件模块,用于加速浮点数运算的执行,特别是在涉及到浮点加法、减法、乘法、除法等运算时。FPU将浮点运算的处理从软件实现转移到硬件中,从而显著提高了运算速度,减少了CPU的负担。
- Cortex-M4内核配备了单精度FPU,即它支持32位浮点数(符合IEEE 754标准)。通过硬件支持,Cortex-M4可以直接进行浮点数的加减乘除运算,而不需要像某些处理器那样通过软件仿真来实现浮点运算。
- FPU的引入对于需要高精度数学计算的应用非常重要,如数字信号处理、科学计算、图形处理等。
(2)数字信号处理(DSP)
- 数字信号处理(DSP, Digital Signal Processing)指的是对离散信号(如声音、图像、传感器数据等)进行数学处理的过程。DSP通常涉及对信号的分析、滤波、变换和其他类型的运算。它是通信、音频处理、图像处理等领域的核心技术。
- Cortex-M4内核不仅支持浮点运算,还专门设计了DSP指令集,可以加速某些特定的信号处理算法。例如,Cortex-M4支持乘法累加指令(MAC)、快速傅里叶变换(FFT)、滤波器设计等操作,这些操作对于实时数字信号处理至关重要。
- DSP指令集和FPU一起使Cortex-M4成为一种高效的信号处理平台,能够在不牺牲计算性能的情况下提供低功耗和高实时性。
(3)DSP和FPU的协同作用
- Cortex-M4的内核结合了DSP指令集和浮点单元(FPU),使得它既能够高效地进行整数型信号处理(如滤波器和卷积),也能够执行复杂的浮点型计算(如数字信号处理中的傅里叶变换和滤波)。
- 这使得Cortex-M4内核非常适合需要进行高效数字信号处理和浮点计算的应用,例如音频处理、传感器数据分析、语音识别等。
由此我们不难看出,单从内核层面上,M4内核就要比M3内核强大很多,而且在单片机层面上,G4系列的单片机其实是要强于F1系列的,举个例子F1系列主频72M,而G4系列主频达到了180M,两倍还多,这对于一些信号处理,比如ADC采集等就是降维打击,我是做电源的,G4系列在高精度数控电源方面还是很好用的。
下面做了一张M3内核和M4内核的区别的表
4.CM4内核与STM32G431
(1)Cortex-M4内核的核心特性
Cortex-M4是ARM公司设计的32位RISC处理器内核,专为高性能嵌入式实时应用设计,结合数字信号处理(DSP)和浮点运算(FPU)**能力,适合复杂控制与信号处理场景。其核心特性包括:
-
ARMv7-M架构:哈佛结构(分离指令与数据总线),三级流水线,支持低延迟中断响应。
-
Thumb-2指令集:16/32位混合编码,兼顾代码密度与执行效率。
-
单精度FPU(浮点单元):支持IEEE 754单精度浮点运算,加速数学运算(如PID控制、FFT)。
-
DSP扩展指令:SIMD(单指令多数据)、饱和运算、乘累加(MAC)指令,优化数字信号处理算法。
-
嵌套向量中断控制器(NVIC):支持多达240个中断源,优先级可动态配置。
-
低功耗模式:支持Sleep、Stop、Standby模式,适应电池供电场景。
(2)STM32G431ZET6芯片的关键特性
STM32G431ZET6是STMicroelectronics基于Cortex-M4内核的高性能微控制器,属于STM32G4系列,专为数字电源、电机控制、高级传感等应用优化。其核心参数如下:
a. 处理器与性能
-
内核:Cortex-M4 @ 170 MHz(理论性能约213 DMIPS)。
-
FPU:集成单精度浮点单元(FPU)。
-
数学加速器:STM32G4系列特有CORDIC和FMAC单元,加速三角函数、滤波等运算。
b. 存储器配置
-
Flash:512 KB(支持ECC校验)。
-
SRAM:128 KB(32 KB带ECC校验)。
-
附加存储:16 KB CCM-SRAM(紧耦合内存,用于高速数据存取)。
c. 外设与功能模块
-
高分辨率定时器(HRTIM):支持184 ps分辨率,用于数字电源开关控制(如LLC谐振变换器)。
-
模拟外设:
-
4个12位ADC(5 Msps,支持硬件过采样)。
-
2个12位DAC(支持波形生成)。
-
4个运算放大器(OPAMP)和7个比较器(COMP),用于信号调理。
-
-
通信接口:
-
6个USART/UART、3个SPI、3个I2C、2个CAN FD。
-
USB 2.0全速接口(支持无晶振设计)。
-
-
电机控制专用外设:
-
6通道PWM定时器(支持死区插入、紧急关断)。
-
硬件编码器接口(用于位置反馈)。
-
e. 安全与可靠性
-
硬件加密:AES-128/256、HASH、RSA加速器。
-
存储保护:Flash读保护(RDP)、写保护(WRP)。
-
安全启动:支持安全固件更新(SB)。
f. 低功耗特性
-
运行模式:低至100 µA/MHz(典型值)。
-
Stop模式:保留SRAM,电流低至10 µA。
-
Standby模式:最低2 µA(支持RTC唤醒)。
(3) STM32G431ZET6如何发挥Cortex-M4的优势
a. 高性能数字信号处理
-
电机控制:
-
利用FPU加速磁场定向控制(FOC)算法。
-
通过CORDIC单元快速计算电机角度(如Park/Clarke变换)。
-
-
数字电源:
-
高分辨率HRTIM生成精确PWM,配合ADC实时反馈,实现闭环控制。
-
使用FMAC单元加速数字滤波(如PID补偿器)。
-
b. 实时响应能力
-
中断响应:NVIC支持低于10个时钟周期的中断延迟,确保PWM故障保护等硬实时需求。
-
紧耦合内存(CCM-SRAM):关键代码/数据存放于CCM,避免总线争用,提升实时性。
c. 低功耗优化
-
动态电压调节:通过电源管理单元(PWR)调整内核电压(1.2V~3.6V),平衡性能与功耗。
-
外设时钟门控:按需启用外设时钟,减少待机能耗。
(4) 典型应用场景
-
工业电机驱动:BLDC/PMSM电机的高效控制(如无人机电调、工业机器人)。
-
数字电源:AC/DC转换器、无线充电、太阳能逆变器。
-
智能传感:结合ADC和OPAMP,实现高精度传感器信号采集(如电流/电压检测)。
-
音频处理:利用DSP指令加速音频编解码(如语音识别前端)。
(5)开发工具与资源
-
IDE:STM32CubeIDE(免费,集成STM32CubeMX配置工具)。
-
软件库:
-
STM32CubeG4 HAL库:提供外设驱动与示例代码。
-
DSP库:优化数学运算(如FFT、FIR滤波)。
-
-
调试工具:ST-LINK/V3、J-Link(支持SWD/JTAG接口)。
-
参考设计:
-
STM32G4数字电源开发套件(STEVAL-DPSG4SIC)。
-
STM32G4电机控制应用笔记(AN5484)。
-
5.总结
结合Cortex-M3内核学习M4,同时与M4内核对应的芯片结合起来,就能对M4内核产生一个基本的认识,如果想要深入学习,可以参考: Cortex-M3/M4权威指南