sdram_test.c

来自「IARSOURCECODE是基于LPC2478嵌入式软件IAR EWARM V4」· C语言 代码 · 共 106 行

C
106
字号
#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 + =
减小字号Ctrl + -
显示快捷键?