SRAM简介
静态随机存取存储器(Static Random-Access Memory,SRAM)
1M字节容量的SRAM芯片XM8A51216为例介绍。
SRAM特性:
高速:具有最高访问速度15ns
低功耗:80MHz时55mA,待机电流 20mA
TTL电平兼容
全静态操作:不需要刷新和时钟电路
三态输出
字节控制功能:支持高/低字节控制
XM8A51216 功能框图
每个地址存放16Bit数据,总容量1MB
A0~18:19根地址线,2^19 = 512K
DQ0~15:16根数据线,输入/输出
CEn:芯片使能信号,低电平有效
OEn:输出(读)使能信号,低电平有效
WEn:写使能信号,低电平有效
BLEn:低字节控制信号(DQ0~7有效)
BHEn:高字节控制信号(DQ8~15有效)
8080并口读时序
这里要注意,tRC读周期时间最小为15ns
tACE地址建立时间,也就是从接收到地址信号到给有效数据的时间。最大为12ns
tDOE OE建立时间,也就是从接收到读使能信号到给有效数据的时间。最大3.4ns
8080并口写时序
这里要注意,tWC读周期时间最小为15ns
tSA地址建立时间,也就是从发送地址信号到给写使能信号的时间。最大为12ns
tPWE WE建立时间,也就是从接收到写使能信号到数据采集的时间。最大3.4ns
SRAM 读写操作步骤
1、设置地址信号线: 发出要访问的存储器目标地址
2、控制片选信号: 选中器件
3、决定数据操作方式
读操作,控制读使能信号OE表示读数据
写操作,控制写使能信号WE表示写数据
4、设置获取数据方式: 掩码信号BLE和BHE指示要访问目标地址的高、低字节部分
5、获取数据:
读过程,存储器通过数据线向主机输出目标地址数据
写过程,使用数据线向存储器目标地址写入目标数据
FSMC介绍
FSMC,灵活的静态存储控制器,能驱动SRAM、NOR/NAND Flash等存储器。
FSMC时序介绍
FSMC是Flexible灵活的,可以产生多种时序来控制外部存储器。
异步时序:
注意:A[0:18] 并不是顺序连接FSMC_A[0:18],不影响正常使用SRAM,因为地址具有唯一性。
FSMC控制器对内核地址映射
FSMC HAL库相关驱动
HAL_StatusTypeDef HAL_SRAM_Init (
SRAM_HandleTypeDef *hsram,
FSMC_NORSRAM_TimingTypeDef *Timing,
FSMC_NORSRAM_TimingTypeDef *ExtTiming )
SRAM_HandleTypeDef 中,设置
FSMC_NORSRAM_TypeDef *Instance; 为FSMC_NORSRAM_TimingTypeDef
FSMC_NORSRAM_EXTENDED_TypeDef *Extended; 为FSMC_NORSRAM_DEVICE
FSMC_NORSRAM_EXTENDED_TypeDef *Extended;为FSMC_NORSRAM_EXTENDED_DEVICE
FSMC_NORSRAM_InitTypeDef Init;为SRAM初始化结构体。
SRAM驱动步骤
1、配置FSMC: 使能FSMC时钟,并配置FSMC相关的IO(复用输出)及其时钟使能
2、设置FSMC相关参数: 设置Bank1第三区的存储器 工作模式、位宽和读写时序参数
3、进行数据访问:根据区域,决定操作外部内存的首地址
直接指定变量存储到SRAM空间 全局变量
uint32_t g_test_buffer[250000] __attribute__((at(SRAM_BASE_ADDR)));g_test_buffer[i] = i;
注意:CPU通过AHB总线访问FSMC上的设备,可以按字/半字/字节访问,AHB自动转化控制FSMC访问。