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

📄 main.c

📁 在TI的C6000系列高速DSP下实现对FLAH芯片的读写
💻 C
字号:
#define MAIN
#include "glodef.h"  
#define SDRAM_ADDR	0x02000000;
#define FLASH_ADDR	0x01400000;
#define FLASH_SIZE	0x80   
void Delay(unsigned int time)
{
	unsigned int i,j;
	for(i = 0; i < time; i ++)
		j = i;
}	
	
		
void Flash_Program(unsigned char * Program_Addr, unsigned char *Src)
{
	unsigned char* Flash_Addr, *SDRAM_Addr;
	unsigned int i;          
	unsigned int end;
	unsigned char Data, Sdram;
	end = 0;
	SDRAM_Addr = Src;
		
	Flash_Addr = (unsigned char*)0x1415554;	
	*Flash_Addr = 0xaa;                    
	
	Flash_Addr = (unsigned char*)0x140aaa8;	
	*Flash_Addr = 0x55;                    
	
	Flash_Addr = (unsigned char*)0x1415554;	
	*Flash_Addr = 0xa0;		               
	
	Flash_Addr = (unsigned char*)Program_Addr;
	for(i = 0; i< FLASH_SIZE; i++)
	{                        
		Sdram = *SDRAM_Addr++;
		Delay(20);
		*Flash_Addr = Sdram;		
		Flash_Addr+=0x4;
	}              
	Flash_Addr -=0x4;
	Delay(200000);
	while(end)
	{   
		Data = 0;   
		Data = *Flash_Addr;
		if((Data & 0x80) == (Sdram & 0x80))
		{
			end = 1;
		}
	}		
}               
void Flash_PM()
{
	unsigned int i;                   
	unsigned char * Base, *Source;
	Base = (unsigned char*)0x01400000;
	Source =(unsigned char*)0x02000000;
	for(i = 0; i< 512; i++)
	{                   
		Flash_Program(Base,Source);
		Base += 0x200;           
		Source += 0x80;
	}	
}		
void Flash_DM()
{
	unsigned int i;                   
	unsigned char * Base, *Source;
	Base =  (unsigned char*)0x01440000;
	Source =(unsigned char*)0x02010000;
	for(i = 0; i< 512; i++)
	{                   
		Flash_Program(Base,Source);
		Base += 0x200;           
		Source += 0x80;
	}	
}		
	 
void Flash_ID()
{
	unsigned char* Flash_Addr;
			
	unsigned char Data;         	
/* enter ID mode */
    	
	Flash_Addr = (unsigned char*)0x01415554;	
	*Flash_Addr = 0x000000aa;

	
	Flash_Addr = (unsigned char*)0x0140aaa8;	
	*Flash_Addr = 0x00000055; 
	
	
	Flash_Addr = (unsigned char*)0x01415554;	
	*Flash_Addr = 0x00000090;		

	                                     
	Flash_Addr  = (unsigned char*)0x01400000;
	
	Data = *Flash_Addr;	
	Flash_Addr += 0x04;
	
	Data = *Flash_Addr;	
	Flash_Addr += 0x04;
	
	Data = *Flash_Addr;	
	
/*  leave   */
	Flash_Addr = (unsigned char*)FLASH_ADDR;
	Flash_Addr += 0x15554;
	*Flash_Addr = 0xaa;
	
	Flash_Addr = (unsigned char*)FLASH_ADDR;
	Flash_Addr += 0xaaa8;
	*Flash_Addr = 0x55;	
	Flash_Addr = (unsigned char*)FLASH_ADDR;
	Flash_Addr += 0x15554;
	*Flash_Addr = 0xf0;		                           	
}
void Flash_Read()
{                            
	unsigned char *Flash_Addr1 = (unsigned char*)0x01400000;
	unsigned char *Flash_Addr2 = (unsigned char*)0x01420000;
	unsigned char *Flash_Addr3 = (unsigned char*)0x01440000;
	
	unsigned char Data1;
	unsigned int i;
	Data1 = 0;
	
	for(;;)
	{   		
		Data1 = *Flash_Addr1;		
		Flash_Addr1 +=0x04;
		Data1 = *Flash_Addr2;		
		Flash_Addr2 +=0x04;
		Data1 = *Flash_Addr3;		
		Flash_Addr3 +=0x04;
	
	
	}          	
}              

void test()
{                            
	unsigned char *Flash_Addr1 = (unsigned char*)0x01400000;
	unsigned char *Flash_Addr2 = (unsigned char*)0x0147ffff;
	
	unsigned char Data1;
	unsigned int i;
	Data1 = 0;
	
	for(;;)
	{   		
		*Flash_Addr1=0x0;		
        *Flash_Addr2=0xff;		
		
	}          	
}                 
void Flash_Erase()
{
	unsigned char * Flash_Addr = (unsigned char*)0x01415554;
	*Flash_Addr = 0xaa;
	Flash_Addr = (unsigned char*)0x0140aaa8;
	*Flash_Addr = 0x55;
	Flash_Addr = (unsigned char*)0x01415554;
	*Flash_Addr = 0x80;
	Flash_Addr = (unsigned char*)0x01415554;
	*Flash_Addr = 0xaa;
	Flash_Addr = (unsigned char*)0x0140aaa8;
	*Flash_Addr = 0x55;
	Flash_Addr = (unsigned char*)0x01415554;
	*Flash_Addr = 0x10;
}	
	
	
	
void main()                                 
{   	      
	unsigned route;        
	INTR_GLOBAL_DISABLE();		
	
	Global_EMIF(); 	
	Global_Init_var(); 					
	Global_DMA();	
	Global_Intr();          		
	INTR_GLOBAL_ENABLE();
                     			
	switch(route)
	{
	    case 0:
			Flash_ID();
			break;
		case 1:
			Flash_Read();
			break;	
		case 2:	
			for(;;)
			{
				TOUT_ASSERT(0);
				TOUT_NEGATE(0);
			};
			break; 
		case 3:           			
			Flash_Program((unsigned char*)0x01400000, (unsigned char *)0x80000000);    
			Flash_Read();
			break;	      
		case 4:
			Flash_Erase();
			Flash_Read();
			break;	
		case 5:
			Flash_All();
			Flash_Read();
			break; 
		case 6:
			test();
			break;	
				
	}/*
	for(;;)
	{
		TOUT_ASSERT(0);
		TOUT_NEGATE(0);
	}*/			
	
}


⌨️ 快捷键说明

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