ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

PN学堂GD32教程第17篇——EXMC与SRAM

PN学堂GD32教程第17篇——EXMC与SRAM

17.1 SRAM芯片工作原理

SRAM 速度快、稳定但成本高容量小;DRAM 容量大、便宜但速度慢且需刷新。

SRAM(静态RAM)

  • 优点:速度极快(延迟约1~10ns),无需刷新,数据稳定性高,待机功耗低。
  • 缺点:每个单元需6个晶体管,集成度低、容量小、成本高。
  • 典型用途:CPU 高速缓存(L1/L2/L3 Cache)。

DRAM(动态RAM)

  • 优点:结构简单(1晶体管+1电容),集成度高、容量大、成本低。
  • 缺点:需定期刷新(否则数据丢失),速度比 SRAM 慢很多。
  • 典型用途:计算机主内存(DDR 内存条)、显存。

两者在系统中互补:SRAM 做高速缓存,DRAM 做主存。

常见SRAM内部的block diagram:

和片内RAM不同,SRAM访问一个地址里面存储着16bits。

读写时序:

时序:

trc是一个完整的读取周期。

开发板上使用的就是55ns的型号:

单片机的指令周期=时钟周期✖1.25,片内的SRAM读取通常需要10ns左右。(1~2个指令周期,且120M外部晶振全开)。

17.2 EXMC工作原理

带有EXMC/FSMC外设的ARM单片机拥有存储器映射的功能:

不能驱动DRAM动态保持数据仅针对当前平台GD32F303ZET6,一些高性能的新型号单片机是可以实现的。寻址范围0x6000 0000~0xA000 0000一共1GB的寻址空间,内部还分为了4个bank。

现在重点研究第一个bank:

整个信号链路分为三层:

第一层:系统总线(CPU视角)

  • CPU发出的地址信号为HA27~HA0,共28根地址线
  • CPU采用字节寻址方式,每个地址对应1个字节

第二层:EXMC外设(地址转换层)

  • EXMC_NE(3:0)转换模块:将高位地址HA26、HA27转换为片选信号CS
  • 地址直通通道:HA1→EA0→MA0,HA2→EA1→MA1,依次类推直到HA25→EA24→MA24
  • UB/LB掩码信号转换模块:将最低位地址HA0转换为字节使能信号UB和LB

第三层:外部SRAM(存储芯片)

  • 接收片选CS、地址MA24~MA0、字节掩码UB/LB、数据线D15~D0

读时序:

写时序:

17.3 SRAM保存数据方法1

观察原理图可得,SRAM的片选引脚连接了MCU的EXMC_NE3:

查手册我们知道bank0有4个region(0~3):

NE的序号也是0~3一一对应,那么我们这里就是需要把SRAM映射到bank0的Region3位置。

因此有代码:

#define BANK0_REGON3_ADDR ((uint32_t)(0x6C000000)) // Bank0 Regon3起始地址
IS62WV51216BLL的物理容量是512K=512*1024,此外这个SRAM一个存储单元对应着16bits,总bytes=512*1024*2。
#define EX_SRAM_BUFFER_SIZE (2 * 512 * 1024) // 外部sram一个存储单元存放16bits,总共512K个存储单元 #define EX_SRAM_BEGIN_ADDR (BANK0_REGON3_ADDR) #define EX_SRAM_END_ADDR (BANK0_REGON3_ADDR + EX_SRAM_BUFFER_SIZE - 1) // 0x6C100000 - 1
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进