📄 sdram_test.c
字号:
#include "LPC2468.h"
#include "type.h"
#include "irq.h"
#include "target.h"
#include "timer.h"
#include "ex_sdram.h"
#include "uart0.h"
int main (void)
{
volatile DWORD *wr_ptr;
volatile BYTE *char_wr_ptr;
volatile WORD *short_wr_ptr;
DWORD i,counter;
TargetResetInit();
UART0Init(9600);
SDRAMInit(); // SDRAM初始化
reset_timer(0);
enable_timer(0); // 启用定时器0计时
/* SDRAM内容清0 */
wr_ptr = (DWORD *)SDRAM_BASE_ADDR;
char_wr_ptr = (BYTE *)wr_ptr;
for ( i= 0; i < SDRAM_SIZE/4; i++ )
{
*wr_ptr++ = 0;
}
/* 按字节写,然后校验 */
for (i=0; i<SDRAM_SIZE; i++)
{
*char_wr_ptr++ = 0xAA;
*char_wr_ptr++ = 0x55;
*char_wr_ptr++ = 0x5A;
*char_wr_ptr++ = 0xA5;
}
wr_ptr = (DWORD *)SDRAM_BASE_ADDR;
for ( i= 0; i < SDRAM_SIZE/4; i++ )
{
if ( *wr_ptr != 0xA55A55AA ) // 要注意端模式的设置
{
UART0_puts("Byte Read/Write error!\r\n"); // 有错则打印信息并死锁
while ( 1 );
}
wr_ptr++;
}
/* 半字写和校验 */
wr_ptr = (DWORD *)SDRAM_BASE_ADDR;
short_wr_ptr = (WORD *)wr_ptr;
for ( i= 0; i < SDRAM_SIZE/4; i++ )
{
*wr_ptr++ = 0;
}
for (i=0; i<(SDRAM_SIZE/2); i++)
{
*short_wr_ptr++ = 0x5AA5;
*short_wr_ptr++ = 0xAA55;
}
wr_ptr = (DWORD *)SDRAM_BASE_ADDR;
for ( i= 0; i < SDRAM_SIZE/4; i++ )
{
if ( *wr_ptr != 0xAA555AA5 )
{
UART0_puts("Halfword Read/Write error!\r\n");
while ( 1 );
}
wr_ptr++;
}
/* 字写、校验 */
wr_ptr = (DWORD *)SDRAM_BASE_ADDR;
for ( i= 0; i < SDRAM_SIZE/4; i++ )
{
*wr_ptr++ = i;
}
wr_ptr = (DWORD *)SDRAM_BASE_ADDR;
for ( i= 0; i < SDRAM_SIZE/4; i++ )
{
if ( *wr_ptr != i )
{
UART0_puts("Word Read/Write error!\r\n");
while(1);
}
wr_ptr++;
}
disable_timer(0);
counter = T0TC/(Fpclk/1000000); // 记录时间
UART0_puts("SDRAM test successed!\r\nIt spend time : ");
UART0_PrintNum(counter,10);
UART0_puts(" us.\r\n");
return 0;
}
/*****************************************************************************
** End Of File
*****************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -