1. 硬件连接与引脚配置
拿到GD32评估板和SDRAM芯片后,第一步就是搞定硬件连接。我用的是一块GD32450i-EVAL开发板,板载的SDRAM芯片型号是MT48LC16M16A2P-6AIT,这是美光的一款256Mbit容量、16位数据总线的SDRAM。刚开始看原理图时,发现这个芯片的引脚命名和GD32的EXMC接口并不是一一对应的,需要仔细对照数据手册。
GD32的EXMC接口支持最大26位地址线和32位数据线,但我们的SDRAM只需要13位地址线和16位数据线。具体连接时要注意几个关键点:
- 地址线A0-A12对应GD32的PF0-5、PF12-15、PG0-2引脚
- 数据线D0-D15分布在PD14-15、PD0-1、PE7-PE15、PD8-10这些引脚
- 控制信号中特别要注意SDCKE(时钟使能)引脚,在开发板上它与以太网的RXD1共用PC5引脚,需要把JP17跳线帽接到SDRAM一侧
实际布线时有个坑我踩过:所有EXMC相关的GPIO都不能启用上拉电阻,否则写入0时会出错。这是因为内部上拉会影响信号电平,导致数据写入异常。建议初始化GPIO时明确配置为无上下拉模式:
c复制gpio_mode_set(GPIOC, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_5); // SDCKE
gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_5);
gpio_af_set(GPIOC, GPIO_AF_12, GPIO_PIN_5);
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 时钟与基础配置
硬件连接检查无误后,就要开始配置EXMC控制器了。首先得把相关时钟都打开:
c复制rcu_periph_clock_enable(RCU_AHB3EN_EXMC); // 使能EXMC时钟
rcu_periph_clock_enable(RCU_GPIOA); // 使能所有用到的GPIO时钟
...
GD32F450的EXMC时钟来自AHB总线,最大频率200MHz。但SDRAM控制器的工作频率是AHB的一半,也就是最高100MHz。这里要注意,虽然SDRAM芯片标称支持166MHz,但受限于GD32的主频,实际只
