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

📄 aic23_54x.c

📁 用tms320vc5416烧写串行FLASH at25f1024程序
💻 C
字号:
#include "myapp.h"

ioport unsigned int port0,port3;
#define ledregister0 port0
#define ledregister1 port3
void  delay();
int DRR_data(void);
int read_data(int a);
void read_stu(void);
void wren(void);
void chip_erase(void);
void write_data(unsigned int *a,int addr);
unsigned int *point; 
int data;
void main( void )
{
   
   unsigned int l=0,m=0,n,k;
//   int data_w[20],data_r[20];
   initCLK(CPU_SPEED_80M);
   
//   wren();
   point=(unsigned int *)0x8000;
	for(;;)
	{ 
	 
	 ledregister0=0x1;/*点亮led1灯*/
	 delay();/*延时*/
	 delay();
	 delay();
	 ledregister0=0x2;/*点亮led2灯*/
	 delay();
	 delay();
	 delay();
	
	wren();
	delay();  
	read_stu();
///* 
	chip_erase();
	read_stu();
//	read_data(l++);

	for(l=0,n=0;l<7629;l++)//写入的字个数
	{
	k=((*point)>>8); //先写高字节
	write_data(&k,n++);
	
	read_stu();
	while(data!=0x00) //
		{
		 read_stu();
		}
	
	write_data(point++,n++);//再写低字节
	read_stu();
	while(data!=0x00) //
		{
		 read_stu();
		}
	}	
//*/ 
///*
    point=(unsigned int *)0x8000;
	for(l=0,n=0;l<0x8000;l++) //读出的字个数
	{
	read_data(n++); //先读高字节
	if(data!=((*(point+l))>>8))//与高字节比较
	  m++;
	read_stu();
	while((data&0x00f0)!=0x00) //
		{
		 read_stu();
		}
		
	read_data(n++); //再读低字节
	if(data!=((*(point+l))&0x00ff))//与低字节比较
	  m++;
	read_stu();
	while((data&0x00f0)!=0x00) //
		{
		 read_stu();
		}
		
//	if(l==0x190)
//	  m++;
	}
//*/
	read_data(l-1);  	 
	read_stu();
  	 for(;;);
  	 asm(" NOP");	
     asm(" NOP");
     asm(" NOP");  
    
    asm(" NOP");	
    asm(" NOP");
    asm(" NOP");
    asm(" NOP");
    asm(" NOP");
//    while(1);
	}
}
interrupt void rxData( void )
{
   int i,j;
   i=DRR10;
   j=DRR20;
   DXR10=i;
   DXR20=j;
}
int DRR_data(void)
{
   int i,j;
   SPSA2=SPCR1;
  	 i=SPSD2;
  	 while((i&0x0002)==0)//判断rx ready
  	 	{
  	 	SPSA2=SPCR1;
  	 	i=SPSD2;
  	 	}
//     delay();
     j=DRR12;//单次就错
     j=DRR12;
//     delay();
     return j;
     
}
void  delay()
{   int j=0,i=0;
    for(j=0;j<300;j++);
     for(i=0;i<300;i++);
    
}

int read_data(int a)
{
	int i,j,k;
	
	McBSP2_40bit();
	DXR12=0x03;//read 
     SPSA2=SPCR2;
  	 i=SPSD2;
  	 while((i&0x0002)==0)//判断ready
  	 	{
  	 	SPSA2=SPCR2;
  	 	i=SPSD2;
  	 	}
	 data=DRR12;
  	 DXR12= 0;	//地址
  	 SPSA2=SPCR2;
  	 i=SPSD2;
  	 while((i&0x0002)==0)//判断ready
  	 	{
  	 	SPSA2=SPCR2;
  	 	i=SPSD2;
  	 	}
	 data=DRR12;
  	 DXR12= (a>>8);
	 SPSA2=SPCR2;
  	 i=SPSD2;
  	 while((i&0x0002)==0)//判断ready
  	 	{
  	 	SPSA2=SPCR2;
  	 	i=SPSD2;
  	 	}
  	 data=DRR12;
  	 DXR12=(a&0x00ff);
	SPSA2=SPCR2;
  	 i=SPSD2;
  	 while((i&0x0002)==0)//判断ready
  	 	{
  	 	SPSA2=SPCR2;
  	 	i=SPSD2;
  	 	}
  	 data=DRR12;
  	 DXR12=0x00;
	SPSA2=SPCR2;
  	 i=SPSD2;
  	 while((i&0x0002)==0)//判断ready
  	 	{
  	 	SPSA2=SPCR2;
  	 	i=SPSD2;
  	 	}

	delay();
	data=DRR_data();
}

void wren(void)
{
	int i;
	McBSP2_8bit();
	DXR12=0x06;
  	 SPSA2=SPCR2;
  	 i=SPSD2;
  	 while((i&0x0002)==0)//判断ready
  	 	{
  	 	SPSA2=SPCR2;
  	 	i=SPSD2;
  	 	}

		 	
	delay();
//	i=DRR12;
//	i=DRR12;
//	return i;	
}
void chip_erase(void)
{
	int i;
	McBSP2_8bit();
	DXR12=0x62;
  	 SPSA2=SPCR2;
  	 i=SPSD2;
  	 while((i&0x0002)==0)//判断ready
  	 	{
  	 	SPSA2=SPCR2;
  	 	i=SPSD2;
  	 	}
	 	
	delay();

}
void read_stu(void)
{
	int i;
	McBSP2_16bit();
	DXR12=0x05;
  	 SPSA2=SPCR2;
  	 i=SPSD2;
  	 while((i&0x0002)==0)//判断ready
  	 	{
  	 	SPSA2=SPCR2;
  	 	i=SPSD2;
  	 	}
	 i=DRR12;
  	 DXR12= 0x00;
	SPSA2=SPCR2;
  	 i=SPSD2;
  	 while((i&0x0002)==0)//判断ready
  	 	{
  	 	SPSA2=SPCR2;
  	 	i=SPSD2;
  	 	}
  	 
	
	delay();
	data=DRR12;	//单次就错
	data=DRR12;
}


void write_data(unsigned int *a,int addr)
{
	int i,j;
	wren();
	
	read_stu();
	while(data!=0x02) //
		{
		 read_stu();
		}
	
	McBSP2_40bit();
	
	DXR12=0x02;//write
     SPSA2=SPCR2;
  	 i=SPSD2;
  	 while((i&0x0002)==0)//判断ready
  	 	{
  	 	SPSA2=SPCR2;
  	 	i=SPSD2;
  	 	}
	 i=DRR12;
  	 DXR12= 00;	//地址
  	 SPSA2=SPCR2;
  	 i=SPSD2;
  	 while((i&0x0002)==0)//判断ready
  	 	{
  	 	SPSA2=SPCR2;
  	 	i=SPSD2;
  	 	}
	 i=DRR12;
  	 DXR12= (addr>>8);
	SPSA2=SPCR2;
  	 i=SPSD2;
  	 while((i&0x0002)==0)//判断ready
  	 	{
  	 	SPSA2=SPCR2;
  	 	i=SPSD2;
  	 	}
  	 i=DRR12;
  	 DXR12=(addr&0x00ff);
	SPSA2=SPCR2;
  	 i=SPSD2;
  	 while((i&0x0002)==0)//判断ready
  	 	{
  	 	SPSA2=SPCR2;
  	 	i=SPSD2;
  	 	}
	i=DRR12;
  	 DXR12= *a;	//数据
	SPSA2=SPCR2;
  	 i=SPSD2;
  	 while((i&0x0002)==0)//判断ready
  	 	{
  	 	SPSA2=SPCR2;
  	 	i=SPSD2;
  	 	}

	delay();
	data=DRR_data();
	asm(" NOP");	
    asm(" NOP");
    asm(" NOP");
}

⌨️ 快捷键说明

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