基于Arm Cortex-M7内核GD32H7

基于Arm Cortex-M7内核,主频高达750MHz,并配备了高速大容量内存架构,旨在以"超高算力"与"实时通信"能力,为伺服控制、数字电源、智能家居(885478)等下一代智能装备提供核心硬件基础。

性能铁三角:750MHz内核、高速存储与零等待访问

GD32H7系列MCU主频高达750MHz,配备最高2MB执行闪存、8MB存储闪存及1.2MB SRAM。其最大亮点在于集成了640KB可与CPU同频运行的紧耦合内存(TCM),实现了指令与数据的零等待执行,显著提升高实时任务与复杂算法的处理效率。

灵活存储与强大扩展接口

该系列产品配备2个支持200MHz时钟频率的OSPI接口,可高效连接多种外部存储器。同时,其集成的16/32位EXMC模块支持直接对接外部SDRAM与FPGA,大幅扩展了系统内存容量与数据处理带宽。

GD32H78E/77E系列:集成EtherCAT的运动控制核心

此子系列集成了EtherCAT从站控制器,同步周期(883436)精度达62.5微秒,满足工业自动化、机器人等领域对时序一致性的严苛要求。它还配备了全面的高性能编码器接口,原生支持多摩川、EnDat 2.2等主流工业编码器协议,为伺服驱动器与机器人控制器提供一站式解决方案。

GD32H789/779系列:高性能通用芯片

该子系列内置14-bit ADC与高性能数字滤波器,可外接高精度Sigma-Delta ADC,形成完整的高精度模拟解决方案。其核心外设资源丰富,包括图形处理加速器、TFT-LCD接口、2个10/100Mbps以太网接口、3个CAN-FD接口以及高速USB接口等,适用于复杂应用。

全方位构建安全屏障

GD32H7系列构建了从硬件到软件的全栈安全体系,支持安全启动、安全调试、代码保护与安全升级。芯片内置硬件加密模块(CAU、HAU),支持AES、SHA等多种算法,并集成真随机数发生器。该系列MCU STL已获得德国莱茵T V IEC 61508 SC3功能安全认证,助力客户符合多项行业安全标准与法规。

封装信息与产品获取

该系列MCU提供BGA176/100、LQFP176/144/100等5种封装类型。样品及技术资源可通过兆易创新(HK3986)官网申请,产品预计于2026年6月正式量产。

首次推出的GD32H7一共3个型号,H737,H757,H759,仔细对照了一下手册发现H737和H757除了CAN基本一模一样,前者只支持CAN 2.0,后者支持CAN FD;而H759定位偏高端,只有LQFP176BGA176两种封装,所以就选了100脚的GD32H737VMT6。

仔细对照了一下引脚,和STM32H750VBT6基本是一样的,LQFP176和BGA176封装支持内置DCDC,只要外接功率电感就可以;但144脚和100脚的不行,只能用内置LDO,电流大不少,这样还不如用外置DCDC了。画个小开发板,原理图如下,VCC和VCORE用两片便宜的SY8088,分别提供3.3V和0.9V电压。

这东西支持OCTOSPI了,顺便加一片32M的OCTOSPI SRAM,选了IS66WVO32M8DALL-200BLI,注意要选BLL后缀的,工作电压3.3V的型号。GD32H737的OCTOSPI缺了DQSM信号, (也可能是我学习不到位?) 估计这个OCTOSPI SRAM跑不到全速, 先试试再说. BGA就不挑战自己手焊了, 还是交给JLC贴好吧.

成品板如下:

下一步, 把环境搭起来, 官方库还是国产厂商的一贯德性, 只提供了keil和iar的启动文件, 没有gcc的. 没办法, 前面的初始化部分照着stm32h750的抄吧, 后面的中断向量表得用它自家的, 格式改成gcc的. 然后是配置时钟, 官方库里的system_gd32h7xx.c只有直接操作寄存器的配法, 想自由一点? 还得手写, 对照库函数逐行改一遍, 改好的SystemInit函数如下:

复制代码
void SystemInit(void)
{
  SCB_EnableDCache();
  SCB_EnableICache();
  nvic_vector_table_set(NVIC_VECTTAB_FLASH, 0x0); 
  rcu_deinit();
  rcu_osci_on (RCU_HXTAL);
  rcu_osci_stab_wait(RCU_HXTAL);
  RCU_APB4EN |= 0x01;    // keep
  syscfg_tcm_wait_state_enable();
  rcu_ahb_clock_config (RCU_AHB_CKSYS_DIV2);
  rcu_apb4_clock_config (RCU_APB4_CKAHB_DIV2);
  rcu_apb3_clock_config (RCU_APB3_CKAHB_DIV2);
  rcu_apb2_clock_config (RCU_APB2_CKAHB_DIV1);
  rcu_apb1_clock_config (RCU_APB1_CKAHB_DIV2);
  rcu_pll_input_output_clock_range_config(IDX_PLL0, RCU_PLL0RNG_4M_8M, RCU_PLL0VCO_192M_836M);
  rcu_pll_source_config (RCU_PLLSRC_HXTAL);
  rcu_pll0_config(4, 150, 1, 2, 1);    // 注意! 我的板上是16M的晶振, 所以是16/4*150=600M. 25M晶振的话应该是25/5*120=600M.
  rcu_pll_clock_output_enable(RCU_PLL0P | RCU_PLL0Q | RCU_PLL0R);
  rcu_osci_on (RCU_PLL0_CK);
  rcu_osci_stab_wait(RCU_PLL0_CK);
  rcu_system_clock_source_config (RCU_CKSYSSRC_PLL0P);
  while(rcu_system_clock_source_get() != RCU_SCSS_PLL0P);
}

之后是配置串口, 不知道为什么, 这个USART特别容易出现ORERR, 折腾N次之后把波特率从常用的500k降到115.2k, 能用了, 先凑和用着吧.

下一步, 超频测试, 把上面的倍频数从150往上加, 160, 显示主频640M正常. 然后680M正常, 720M正常, 800M, 880M, 960M, 1000M, 1080M终于不运行了. 往下降, 1040M, 能运行但不稳定, 会卡死, 再降到1000M, 似乎稳定了. 这个超频幅度感觉还行. 1G主频时输入5V电流大概168mA, 摸上去稍微有点温热; 降回600M, 电流只有90mA多点, 平均电流0.16mA/MHz, 也还不错.

最后是dhrystone测试. 600M主频, -O3优化时1371DMIPS, 2.29DMIPS/MHz, 比之前测试STM32H750的1412DMIPS稍差一点, 也可能是之前那次的测试有问题? 有空再试试. 超频到1GHz时则达到了2286DMIPS, 遥遥领先, 达到了24M的STC8A8K64SA的1000倍以上.

和x86 CPU对比, 则是大体相当于1.2GHz的P3, 或者1.7GHz的P4 (没看错, P4的同频性能只有P3的2/3左右).

相关推荐
番茄灭世神2 小时前
MCU开发常见软件BUG总结(持续更新)
c语言·stm32·单片机·嵌入式·gd32
wanghanjiett2 小时前
双轮平衡车建模及控制 2 PID控制原理与调参
嵌入式硬件·控制算法
EVERSPIN2 小时前
SQPI PSRAM为单片机提供RAM扩展方案
单片机·嵌入式硬件·psram·sqpi psram
Ar-Sr-Na3 小时前
STM32现代化AI开发指南-VSCode环境配置(macOS)
c语言·人工智能·vscode·stm32·嵌入式硬件·硬件工程
进击的小头3 小时前
第6篇:嵌入式芯片算力核心来源:多级流水线架构与指令并行机制详解
单片机·嵌入式硬件·架构
jacklood3 小时前
煤矿用甲烷报警仪的性能试验具体方法
单片机·嵌入式硬件·煤矿电子
不做无法实现的梦~3 小时前
px4仿真和示例运行
单片机·嵌入式硬件
世微 如初4 小时前
AP5125 宽压大功率 LED 恒流驱动器:技术参数与应用设计指南
stm32·单片机·嵌入式硬件
不怕犯错,就怕不做4 小时前
rk3562 buildrooot编译更新的lib库push后无效问题分析
linux·驱动开发·嵌入式硬件