⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flash_example.c

📁 西安明朗公司开发板ML-F020ICB的全部测试代码
💻 C
字号:
/************************************************************************************
*  Copyright (c), 2004-2007,西安铭朗电子科技有限责任公司
*            All rights reserved.
*
* Http:  www.mlarm.com
* Email: mlarm@mlarm.com
*
* File name: Flash_Example.c
* Project  : ML-F020ICB
* Processor: C8051F020
* Compiler : Keil C51 Compiler
* 
* Author:  李林利
* Version: 1.20
* Date:    2007.6.1
* Email:   GavinLi@126.com
* 
* Description: 本文件是FLASH存储器测试程序文件;
*
* Others: none;
*
* Function List:
*	1. void Flash_Proc(void)		
*
* History:
*   1. Author:       李林利  
*	   Version: 	 1.10
*	   Date:         2007.3.12
*      Modification: none
*
*   2. Author:       李林利   
*	   Version: 	 1.00
*      Date:         2004.11.24
*      Modification: 建立文件
*
*************************************************************************************/
/************************************************************************************/
// 引用外部头文件
#include  "..\config\C8051f020.h"
#include  "..\config\Const.h"
#include  "..\driver\uart.h"
#include  "..\driver\delay.h"
#include  "..\driver\Flash.h"
/************************************************************************************/

/************************************************************************************/
// 常量及全局变量定义
/************************************************************************************/
unsigned char code ASCII[16] = {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46};
/*************************************************************************************/
//
// 							FLASH存储器测试程序函数定义
//
/*************************************************************************************/

/***********************************************************************************
* Function: Flash_Proc;
*
* Description: FLASH存储器测试程序;
*              
* Input:  none;
*
* Return: none;
*
* Note:   none;
************************************************************************************/
void Flash_Proc(void)
{
	unsigned char cmd,j;
	unsigned int i,val,k;

	unsigned char xdata buf[4096];
    

	Uart0_SendBlock("Flash test starting!\n\r",23,&i);
	IOG_Init();
	while(1)
	{
		cmd = 0xff;
		if (Uart0_GetCharsRxBuf()>0)
		{		
			Uart0_RecvChar(&cmd);
		}

    	switch (cmd)
        {
	         case '1':
            	  Uart0_SendBlock("Flash ID = 0x",14,&i);
			 	  val = FLASH_ReadID();
				  //Uart0_SendChar(ASCII[(val>>4)&0x0f]);
				  //Uart0_SendChar(ASCII[val&0x0f]);
				  //Uart0_SendBlock(" 0x",4,&i);
				  
				  Uart0_SendChar(ASCII[(val>>4)&0x0f]);
				  Uart0_SendChar(ASCII[val&0x0f]);				  
				  
				  Uart0_SendChar('1');
				  Uart0_SendChar('8');
				  Uart0_SendChar('\n');
				  Uart0_SendChar('\r');
				  
				  Uart0_SendBlock("This device is ",16,&i);
				  switch (val&0xff)
				  {
						case 0xD4:
							Uart0_SendBlock("SST39LF/VF512\n\r",16,&i);
						break;
						case 0xD5:
							Uart0_SendBlock("SST39LF/VF010\n\r",16,&i);
						break;
						case 0xD6:
							Uart0_SendBlock("SST39LF/VF020\n\r",16,&i);
						break;
						case 0xD7:
							Uart0_SendBlock("SST39LF/VF040\n\r",16,&i);
						break;
						default:
						break;
				  }
				  
		  	 break;
			 case '2':
			 	Flash_Erase();	
				Uart0_SendBlock("Flash erase finish!\n\r",22,&i);
	  		 break;

 			 case '3':
            	for (j=0;j<32;j++)
				{
                	for (i=0;i<16384;i++)
                		Flash_WriteByte((unsigned long)j*0x4000+i, (unsigned char)i);
					Uart0_SendBlock("Flash bank",11,&i);
					Uart0_SendChar(ASCII[j/10]);
					Uart0_SendChar(ASCII[j%10]);
					Uart0_SendBlock(" write finish!\n\r",17,&i);
				}

				for (j=0;j<32;j++)
				{
					k = 0;
                	for (i=0;i<16384;i++)
					{
                		if(Flash_ReadByte((unsigned long)j*0x4000+i) == (unsigned char)i)
					        k++;					
					}

					if (k==16384)
					{
						Uart0_SendBlock("Flash bank",11,&i);
					    Uart0_SendChar(ASCII[j/10]);
						Uart0_SendChar(ASCII[j%10]);
					    Uart0_SendBlock(" read&verify OK!\n\r",19,&i);

					}
					else
					{
						Uart0_SendBlock("Flash bank",11,&i);
					    Uart0_SendChar(ASCII[j/10]);
						Uart0_SendChar(ASCII[j%10]);
					    Uart0_SendBlock(" read&verify error!\n\r",22,&i);
					}
				}
		  	 break;

			 case '4':
			 	  //Flash_Erase();	
				  for (j=0;j<(512/4);j++)
				  {
				  	  Flash_EraseSector(j);
				      Uart0_SendBlock("Flash erase sector",19,&i);
					  Uart0_SendChar(ASCII[j/100]);
					  Uart0_SendChar(ASCII[(j%100)/10]);
					  Uart0_SendChar(ASCII[j%10]);
					  Uart0_SendBlock(" finish!\n\r",11,&i);			 	  
				  }
		  	 break;
			 case '5':
			 	  for (i=0;i<4096;i++)
				  		buf[i] = (unsigned char)i;

			 	  for (j=0;j<(512/4);j++)
				  {
				  	  Flash_Write((unsigned long)j*4096,buf,4096);
				      Uart0_SendBlock("Flash write sector",19,&i);
					  Uart0_SendChar(ASCII[j/100]);
					  Uart0_SendChar(ASCII[(j%100)/10]);
					  Uart0_SendChar(ASCII[j%10]);
					  Uart0_SendBlock(" finish!\n\r",11,&i);			 	  
				  }
					
				  for (j=0;j<(512/4);j++)
				  {
				  	  for (i=0;i<4096;i++)
				  		buf[i] = 0;

				  	  Flash_Read((unsigned long)j*4096,buf,4096);
					  
					  k=0;
					  for (i=0;i<4096;i++)
					  {
					  		if (buf[i]==(unsigned char)i)
								k++;
					  }

					  if (k==4096)
					  {
				      		Uart0_SendBlock("Flash read&verify sector",25,&i);
					  		Uart0_SendChar(ASCII[j/100]);
					  		Uart0_SendChar(ASCII[(j%100)/10]);
					  		Uart0_SendChar(ASCII[j%10]);
					  		Uart0_SendBlock(" OK!\n\r",7,&i);	
		 	  		   }
					   else
					   {
							Uart0_SendBlock("Flash read&verify sector",25,&i);
					  		Uart0_SendChar(ASCII[j/100]);
					  		Uart0_SendChar(ASCII[(j%100)/10]);
					  		Uart0_SendChar(ASCII[j%10]);
					  		Uart0_SendBlock(" error!\n\r",10,&i);
					   }
				  }

		  	 break;
			 
			 case '9':
            	  Uart0_SendBlock("Flash test end!\n\r",17,&i);
				  return;
		  	 break;

			
			 default:

 			 break;
		}
	}
	
}

/***********************************************************************************/
// 文件结束
/***********************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -