基于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个型号H737H757H759仔细对照了一下手册发现H737和H757除了CAN基本一模一样前者只支持CAN 2.0后者支持CAN FD而H759定位偏高端只有LQFP176和BGA176两种封装所以就选了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*150600M. 25M晶振的话应该是25/5*120600M. 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左右).