[其它] SDRAM测试--AT_SURF案例17

[复制链接]
3308|1
手机看帖
扫描二维码
随时随地手机跟帖
tanleitanlei|  楼主 | 2022-4-7 19:42 | 显示全部楼层 |阅读模式
本帖最后由 tanleitanlei 于 2022-4-7 19:46 编辑

简介
SDRAM 也就是同步动态随机存取内存,在计算机中得到了广泛的应用。在单片机应用中SRAM 和SDRAM 都用于扩展MCU 内存,通常SDRAM 用于大容量扩展,SRAM 用于小容量扩展。相比于SRAM,SDRAM 最大的不同是访问时有命令机制,而SRAM 可以直接访问,以及SDRAM需要在一定时间内刷新充电才能保存数据,否则数据将会消失,而SRAM 不需要刷新也能保存数据。SDRAM 在读取和写入时需要先发送命令例如:预充电命令、读命令、写命令等,具体的请参考SDRAM 芯片的数据手册。

表1. SDRAM 和SRAM 特点对比
74298624eca7e0d523.png
SUFR 板载了一颗SDRAM 芯片,型号为W9825G6KH-6,容量为32M 字节,数据宽度为16 位,通过XMC 接口和MCU 连接。在288M 主频下,SDRAM 时钟为288 / 3= 96MHz。

资源准备
硬件环境:
对应产品型号的AT-SURF-F437 Board
软件环境:
AT32F435_437_Firmware_Library_V2.x.x\project\at_sufr_f437\examples\sdram

硬件设计
表2. 硬件资源使用
编号 PIN Name 外设功能 备注
1 PD14 XMC_D10
2 PD15 XMC_D11
3 PD0 XMC_D12
4 PD1 XMC_D13
5 PE7 XMC_D14
6 PE8 XMC_D15
7 PE9 XMC_A0
8 PE10 XMC_A1
9 PE11 XMC_A2
10 PE12 XMC_A3
11 PE13 XMC_A4
12 PE14 XMC_A5
13 PE15 XMC_A6
14 PD8 XMC_A7
15 PD9 XMC_A8
16 PD10 XMC_A9
17 PF0 XMC_A10
18 PF1 XMC_A11
19 PF2 XMC_A12
20 PF3 XMC_A3
编号 PIN Name 外设功能备注
21 PF4 XMC_A4
22 PF5 XMC_A5
23 PF12 XMC_A6
24 PF13 XMC_A7
25 PF14 XMC_A8
26 PF15 XMC_A9
27 PG0 XMC_A10
28 PG1 XMC_A11
29 PG2 XMC_A12
30 PC3 XMC_SDCKE0
31 PG8 XMC_SDCLK
32 PC2 XMC_SDNE0
33 PC0 XMC_SDNWE
34 PG15 XMC_SDNCAS
35 PF11 XMC_SDNRAS
36 PG4 XMC_SDBA0
37 PG5 XMC_SDBA1
38 PE0 XMC_NBL0

对应的电路原理如下:
24728624ecd9e7d457.png
软件设计
1) SDRAM 测试
初始化TFT LCD
初始化SDRAM
写数据到SDRAM
从SDRAM 读数据
将信息显示在LCD 屏上

2) 代码介绍
main 函数代码描述
int main(void)
{
uint16_t i;
/* 初始化系统时钟 */
system_clock_config();
/* 初始化中断优先级分组 */

nvic_priority_group_config(NVIC_PRIORITY_GROUP_4);
/* 初始化延时函数 */
delay_init();
/* 初始化LCD */
lcd_init(LCD_DISPLAY_VERTICAL);
/* initialize sdram */
sdram_init();
/* 显示信息 */
lcd_string_show(10, 20, 200, 24, 24, (uint8_t *)"SDRAM Test");
/* 初始化数据 */
for(i = 0; i < BUF_SIZE; i++)
{
write_buf = i;
}
/* 写数据到 SDRAM */
sdram_data_write(0, write_buf, BUF_SIZE);
/* 从SDRAM 读取数据 */
sdram_data_read(0, read_buf, BUF_SIZE);
/* 对比读出和写入的数据 */
if(buffer_compare((uint8_t *)write_buf, (uint8_t *)read_buf, BUF_SIZE * 2) == 0)
{
lcd_string_show(10, 60, 310, 24, 24, (uint8_t *)"sdram write/read ok");
}
else
{
lcd_string_show(10, 60, 310, 24, 24, (uint8_t *)"sdram write/read ok");
}
while(1)
{
}
}

下载验证
写数据到SDRAM
从SDRAM 读数据
对比读取和写入的数据是否相等,将信息显示在LCD 屏上
70939624eceeb73049.png

使用特权

评论回复
chenjun89| | 2022-4-7 20:33 | 显示全部楼层
现在SDRAM不好买了啊

使用特权

评论回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则