总结了STM32和GD32的一些区别
内容提要
文章对比了STM32与GD32单片机:GD32采用第二代M3内核,最高主频108MHz,高于STM32;内核电压1.2V,运行功耗更低,但停机、待机、睡眠模式功耗更高。GD32的Flash为自主开发,擦除时间较长;串口每两字节间多一个空闲位,停止位选项较少;ADC输入阻抗较小;100引脚以上型号均带FSMC。作者实测发现GD32抗干扰能力不如STM32。
延伸解读
性能与功耗的取舍
GD32凭借第二代M3内核和最高108MHz主频,在刷屏、开方运算、电机控制等需要算力的场景中比STM32(最高72MHz)更有速度优势。同时其内核电压仅1.2V,运行功耗低于STM32。但需注意,GD32在停机、待机、睡眠模式下的功耗反而更高,因此对低功耗待机有严格要求的项目应谨慎评估。
外设与存储的细节差异
GD32的Flash为自主开发,擦除时间典型值100ms(实测约60ms),明显长于STM32的20~40ms,频繁擦写场景需考虑这一延迟。串口方面,GD32连续发送时每两字节间多一个空闲位,且停止位仅支持1/2两种,通信时间会略长,但基本不影响通信。ADC输入阻抗相对较小,采样配置需重新核对。
抗干扰能力的实测提醒
作者在项目中将STM32F103C8T6替换为引脚兼容的GD32F103C8T6后发现,在相同PCB布线干扰下,STM32的SPI通信仍正常,而GD32波形更差、通信失败,降低速率后恢复也更慢。作者怀疑STM32内部对引脚做了滤波电路而GD32没有。这提示在干扰较强的环境中替换芯片时,需额外验证信号完整性。
Q&A
GD32和STM32的内核有什么区别?
GD32采用第二代M3内核,而STM32主要采用第一代M3内核。GD32的内核只有一个编号为752419的BUG。
GD32的最高主频是多少?比STM32快多少?
使用HSE时,GD32最高主频108MHz,STM32最高72MHz;使用HSI时,GD32最高108MHz,STM32最高64MHz。主频更高意味着代码运行更快,适合刷屏、开方运算、电机控制等场景。
GD32的功耗表现如何?运行和低功耗模式分别怎样?
相同主频下,GD32的运行功耗比STM32小,因为内核电压更低(1.2V vs 1.8V)。但在相同设置下,GD32的停机模式、待机模式和睡眠模式功耗比STM32高。
GD32的Flash和STM32有什么不同?擦除时间谁更长?
GD32的Flash是自主研发的,与STM32不同。GD32 Flash中程序执行0等待周期。擦除时间上,GD32更久:GD32F103/101系列128KB及以下型号Page Erase典型值100ms(实测约60ms),而STM32对应产品典型值20~40ms。
GD32的串口和STM32的串口在通信上有什么差异?
GD32连续发送数据时每两个字节之间会有一个Bit的Idle,而STM32没有;GD32停止位只有1/2两种模式,STM32有0.5/1/1.5/2四种。这些差异对通信基本无影响,但GD32的通信时间会稍长。
GD32的抗干扰能力真的不如STM32吗?
根据作者实测,在相同恶劣环境下(SPI引脚背面有IIC走线干扰),STM32的SPI通讯仍正常,而GD32不能正常通讯,降低速率后STM32很快恢复,GD32需降得很低才恢复。初步怀疑STM32内部对引脚做了滤波电路而GD32没有,因此GD32抗干扰能力不如STM32。