亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 2410配置fpga.txt

?? 實(shí)現(xiàn)由ARM2410本身配置fpga的功能 fpga型號(hào)是ECP35和1K50/1C6
?? TXT
字號(hào):
#include <string.h>
#include "def.h"
#include "2410addr.h"
#include "2410lib.h"
#include "spi.h"
#include "fpga.h"

// 1C6 和1C12  時(shí)序相同
#define spi_count1K50  (0x17eea+0x239ee)
//#define spi_count1C6  0x239ee   // 1c12-0x47000

volatile unsigned char *spiTxStr;
volatile unsigned char *spiTxStr1C6;
volatile int  endSpiTx;
volatile int endSpiTx1C6;
unsigned char *fpgabuff;
unsigned char *fpgabuff1C6;

void  Fpga_Cofig1(unsigned char DataFpga[], unsigned int sum)
{
	unsigned int  i=0, errorsum=0;
	unsigned char  k;
	unsigned char *ptrSdram, *ptrFpga1C6;
	unsigned char data;

	fpgabuff=(unsigned char *)0x31000000;            
	while(i < sum) 
	{
		k=DataFpga[i];           
		*fpgabuff++=((k&1)<<7)|((k&2)<<5)|((k&4)<<3)|((k&8)<<1)
			|((k&16)>>1)|((k&32)>>3)|((k&64)>>5)|((k&128)>>7);
		i++;
	}

	// verify config data 
	ptrSdram = (unsigned char *)0x31000000;     
	ptrFpga1C6 = (unsigned char *)fpga1C6;
	for (i=0; i<sum; i++)
	{
		k = *ptrSdram++;
		data = ((k&1)<<7)|((k&2)<<5)|((k&4)<<3)|((k&8)<<1)
			|((k&16)>>1)|((k&32)>>3)|((k&64)>>5)|((k&128)>>7);

		if ((*ptrFpga1C6++) != data)
		{
			errorsum++;
			Uart0_Printf("FPGA Config Data Error! \n\r");
			while(1);
		}
	}
	Uart0_Printf("FPGA Config Data ok! \n\r");
	
 }


void  SPI_Port_Init1(void)
{
	rGPEDAT=(rGPEDAT & (~(0x1<<11)))|(0x0<<11);//CFGD low
	rGPEDAT=(rGPEDAT & (~(0x1<<8))) |(0x0<<8);//NSTATUS low
	rGPEDAT=(rGPEDAT & (~(0x1<<7))) |(0x0<<7);//NCFG low

	rGPECON=(rGPECON & (~(0x3<<22))) | (0x0<<22); 	//GPE11 input
	rGPECON=(rGPECON & (~(0x3<<16))) | (0x0<<16);      //GPE8 input
	rGPECON=(rGPECON & (~(0x3<<14))) | (0x1<<14);      //GPE7 output

	rGPGCON=(rGPGCON & (~(0xf<<12))) | (0xf<<12); 	//GPG6   spiclk1
	
}

void spi_MS_poll1()
{
	unsigned int  i;
	int len;
   
	SPI_Port_Init1(); 
	
	while(rGPEDAT&(1<<8)); //NSTATUS LOW
	Delay(3000);
	rGPEDAT=rGPEDAT|(1<<7);  // NCFG HIGH
	Delay(3000);    
	while(!(rGPEDAT&(1<<8))); //NSTATUS HIGH
	Delay(3000);

	rSPPRE1=0x15;  // SPICLK1  
	rSPCON1=(0<<5)|(1<<4)|(1<<3)|(0<<2)|(0<<1)|(0<<0);//Polling,en-SCK,master,low,A,normal
	rSPPIN1=(0<<2)|(1<<1)|(0<<0);//dis-ENMUL,SBO,release

	// config 1k50
	//len=sizeof(fpga1C6)/sizeof(fpga1C6[0]);
	Fpga_Cofig1(fpga1C6, spi_count1K50);
	endSpiTx=0;	 
	spiTxStr=(unsigned char *)0x31000000;  	
	
	i=spi_count1K50;
	while(endSpiTx==0)
	{
	  	if(rSPSTA1 & 0x1)   //Check Tx ready state    
		{
			if(i > 0)  
				{rSPTDAT1=*spiTxStr++;  i--;}
			else  
				endSpiTx=1;
		}
	}
	
	// send 80 clock after configure
	i = 10;
	Delay(100);
	while(endSpiTx==0)
	{
	  	if(rSPSTA1 & 0x1)   //Check Tx ready state    
		{
			if(i > 0)  
				{rSPTDAT1=0;  i--;}
			else  
				endSpiTx=1;
		}		
	}

	//stop clock
	rSPCON1=(0<<5)|(0<<4)|(1<<3)|(1<<2)|(0<<1)|(0<<0);//Polling,dis-SCK,master,low,A,normal

}

void Fpga_init1()
{
	int i=25;
	int sum=0;
	unsigned char sign=0;
	endSpiTx=0;

	config:
	rGPEDAT = (rGPEDAT & (~(0x3<<9)))  | (0x2<<9); //燈亮
	spi_MS_poll1();	
	rGPEDAT = (rGPEDAT & (~(0x3<<9)))  | (0x1<<9);
	//while(!(rGPEDAT & (1<<11)));	//CFGD HIGH

	for(i=0; i<9000; i++)
	{
		if (rGPEDAT & (1<<11)) //CFGD HIGH
		{
			sign=1;
			break;
		}
	}
	if (sign!=1)  // configuration error
	{
		if (sum < 3)
		{
			Uart0_Printf("Config FPGA again!\n\r");
			sum++;
			goto config;
		}
		else
		{
			while(1);
			Uart0_Printf("Fail to config FPGA!\n\r");
		}
	}
	Uart0_Printf("config FPGA success!\n\r");
	rGPEDAT = (rGPEDAT & (~(0x3<<9)))  | (0x3<<9);
}

//----------------------------->

void  Fpga_Cofig2(unsigned char DataFpga[], unsigned int sum)
{
	unsigned int  i=0, errorsum=0;
	unsigned char  k;
	unsigned char *ptrSdram, *ptrFpga1C6;
	unsigned char data;

	fpgabuff=(unsigned char *)0x30e00000;            
	while(i < sum)  
	{
		//k=DataFpga[i];      
		*fpgabuff++=DataFpga[i];      
		//*fpgabuff++=((k&1)<<7)|((k&2)<<5)|((k&4)<<3)|((k&8)<<1)
		//	|((k&16)>>1)|((k&32)>>3)|((k&64)>>5)|((k&128)>>7);
		i++;
	}

	// verify config data 
	ptrSdram = (unsigned char *)0x30e00000;     
	ptrFpga1C6 = DataFpga;
	for (i=0; i<sum; i++)
	{
		data = *ptrSdram++;
		//k = *ptrSdram++;
		//data = ((k&1)<<7)|((k&2)<<5)|((k&4)<<3)|((k&8)<<1)
		//	|((k&16)>>1)|((k&32)>>3)|((k&64)>>5)|((k&128)>>7);

		if ((*ptrFpga1C6++) != data)
		{
			errorsum++;
			Uart0_Printf("FPGA Config Data Error! \n\r");
			while(1);
		}
	}
	Uart0_Printf("FPGA Config Data ok! \n\r");
	
 }


void  SPI_Port_Init2(void)
{
	rGPGDAT=(rGPGDAT & (~(0x1<<5)))|(0x1<<5);//CFGD low
	rGPCDAT=(rGPCDAT & (~(0x1<<5))) |(0x1<<5);//NSTATUS low  high
	rGPCDAT=(rGPCDAT & (~(0x1<<7))) |(0x0<<7);//NCFG low

	rGPGCON=(rGPGCON & (~(0x3<<10))) | (0x0<<10); 	//GPE11 input
	rGPCCON=(rGPCCON & (~(0x3<<10))) | (0x0<<10);      //GPE8 input  //測(cè)試?yán)?
	rGPCCON=(rGPCCON & (~(0x3<<14))) | (0x1<<14);      //GPE7 output

	rGPECON=(rGPECON & (~(0xf<<24))) | (0xa<<24); 	//GPG6   spiclk0
}

void spi_MS_poll2()
{
	unsigned int  i;
	int len;
   
	SPI_Port_Init2(); 

	len = sizeof(fpga_m)/sizeof(fpga_m[0]);
	Fpga_Cofig2(fpga_m, len);
	endSpiTx=0;	 
	spiTxStr=(unsigned char *)0x30e00000;  	
	Delay(10000);
	if(rGPCDAT&(1<<5)) {}
	else {}
	//while(rGPCDAT&(1<<5)); //NSTATUS LOW
	Delay(3000);
	rGPCDAT=rGPCDAT|(1<<7);  // NCFG HIGH
	Delay(3000);    
	while(!(rGPCDAT&(1<<5))); //NSTATUS HIGH
	Delay(3000);

	rSPPRE0=0x15;  // SPICLK0  0x15
	rSPCON0=(0<<5)|(1<<4)|(1<<3)|(0<<2)|(0<<1)|(0<<0);//Polling,en-SCK,master,low,A,normal
	rSPPIN0=(0<<2)|(1<<1)|(0<<0);//dis-ENMUL,SBO,release

	// config 1k50
	
	i=len;
	while(endSpiTx==0)
	{
	  	if(rSPSTA0 & 0x1)   //Check Tx ready state    
		{
			if(i > 0)  
				{rSPTDAT0=*spiTxStr++;  i--;}
			else  
				endSpiTx=1;
		}
	}
	
	// send 80 clock after configure
	endSpiTx=0;
	i = 150;
	Delay(100);
	while(endSpiTx==0)
	{
	  	if(rSPSTA0 & 0x1)   //Check Tx ready state    
		{
			if(i > 0)  
				{rSPTDAT0=0;  i--;}
			else  
				endSpiTx=1;
		}		
	}

	//stop clock
	rSPCON0=(0<<5)|(0<<4)|(1<<3)|(1<<2)|(0<<1)|(0<<0);//Polling,dis-SCK,master,low,A,normal

}

void Fpga_init2()
{
	int i=25;
	int sum=0;
	unsigned char sign=0;
	unsigned char stringwrong[2][40]={{"Failed to configure the AnalogBoard!"},{"配置模擬板失敗!"}};
	extern unsigned char Language;
	endSpiTx=0;

	config:
	rGPEDAT = (rGPEDAT & (~(0x3<<9)))  | (0x2<<9); //燈亮
	spi_MS_poll2();	
	rGPEDAT = (rGPEDAT & (~(0x3<<9)))  | (0x1<<9);
	//while(!(rGPEDAT & (1<<11)));	//CFGD HIGH

	for(i=0; i<9000; i++)
	{
		if (rGPGDAT & (1<<5)) //CFGD HIGH
		{
			sign=1;
			break;
		}
	}
	 while (sign!=1)  // configuration error
	{
		Glib_FilledRectangle(HINTX, HINTY, IMAGEW, HINTY+20, 0);
		PutString(100, 500, stringwrong[Language], 1);
		Delay(1000000);
		Glib_FilledRectangle(HINTX, HINTY, IMAGEW, HINTY+20, 0);
		/*
		if (sum < 3)
		{
			Uart0_Printf("Config FPGA again!\n\r");
			sum++;
			goto config;
		}
		else
		{
			//while(1);
			Uart0_Printf("Fail to config FPGA!\n\r");
		}
		*/
	}
	Uart0_Printf("config FPGA success!\n\r");
	rGPEDAT = (rGPEDAT & (~(0x3<<9)))  | (0x3<<9);
}



?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩激情| 久久国产婷婷国产香蕉| 国产丝袜在线精品| 精品日韩在线观看| 欧美性xxxxx极品少妇| 国产91综合一区在线观看| 亚洲va韩国va欧美va精品| 亚洲久草在线视频| 亚洲人精品午夜| 亚洲欧洲精品一区二区三区| 国产色一区二区| 2024国产精品| 久久综合99re88久久爱| 欧美变态凌虐bdsm| 26uuuu精品一区二区| 欧美一级片在线| 中文字幕不卡一区| gogo大胆日本视频一区| 成人免费视频国产在线观看| 一区二区日韩av| 亚洲国产wwwccc36天堂| 3atv在线一区二区三区| gogo大胆日本视频一区| 成人国产精品免费观看| 成人毛片在线观看| 成人激情免费视频| 日本乱码高清不卡字幕| 欧美性三三影院| 91免费视频观看| 欧美精品日韩一本| 在线电影国产精品| 一本色道亚洲精品aⅴ| 欧美日韩国产高清一区二区| 欧美绝品在线观看成人午夜影视| 欧美日韩免费观看一区二区三区 | av网站免费线看精品| av电影在线观看完整版一区二区 | 久久久久久一二三区| 国产农村妇女精品| 国产午夜亚洲精品不卡| 中文字幕亚洲不卡| 亚洲高清一区二区三区| 激情欧美日韩一区二区| 福利视频网站一区二区三区| 欧美做爰猛烈大尺度电影无法无天| 欧美日韩你懂得| 精品乱人伦小说| 亚洲欧美国产毛片在线| 亚洲h动漫在线| 国产不卡在线视频| 欧美视频你懂的| 在线播放日韩导航| 日本一区二区久久| 亚洲成人一二三| 成人性视频免费网站| 欧美性猛交一区二区三区精品| www国产精品av| 亚洲女与黑人做爰| 亚洲国产视频直播| 国产伦理精品不卡| 一本久道久久综合中文字幕| 精品精品国产高清a毛片牛牛 | 午夜视频一区二区| 亚洲不卡在线观看| 欧美一区二区三区日韩视频| 久久久久久影视| 天堂精品中文字幕在线| 国产伦精品一区二区三区免费迷| 欧美在线影院一区二区| 久久久久久久一区| 国产精品国产三级国产aⅴ原创| 天天影视涩香欲综合网| 国产91精品一区二区麻豆网站| 欧美午夜精品免费| 国产午夜三级一区二区三| 亚洲bdsm女犯bdsm网站| 国产成人av影院| 精品va天堂亚洲国产| 亚洲影院理伦片| 91在线丨porny丨国产| 久久婷婷国产综合精品青草 | 不卡在线观看av| 欧美一级爆毛片| 亚洲午夜视频在线| 久99久精品视频免费观看| 欧美午夜电影网| 国产精品剧情在线亚洲| 国产·精品毛片| 欧美一级淫片007| 亚洲欧美电影一区二区| 粉嫩绯色av一区二区在线观看| 欧美一区二区视频在线观看| 亚洲欧美乱综合| 丁香亚洲综合激情啪啪综合| 日韩欧美一二区| 午夜视频在线观看一区二区三区 | 日韩一区二区三区观看| 亚洲免费电影在线| 成人av免费在线播放| 精品理论电影在线| 日韩国产精品久久久| 91精品办公室少妇高潮对白| 欧美国产精品劲爆| 国产激情视频一区二区在线观看| 日韩一区二区精品| 专区另类欧美日韩| 国产一区二区三区精品视频 | 精品久久久久一区| 青草国产精品久久久久久| 欧美影院一区二区三区| 亚洲精选视频在线| 97se亚洲国产综合自在线不卡| 国产欧美精品一区二区色综合朱莉 | 欧美在线一区二区| 一区二区日韩电影| 日本高清不卡视频| 亚洲欧美激情在线| 91麻豆.com| 国产一区二三区好的| 欧美成人精品二区三区99精品| 午夜影院久久久| 欧美三级电影网站| 亚洲gay无套男同| 91精品一区二区三区在线观看| 午夜激情综合网| 欧美精品777| 日本aⅴ免费视频一区二区三区| 91精品国产综合久久久久久 | 老色鬼精品视频在线观看播放| 欧美一级专区免费大片| 天天爽夜夜爽夜夜爽精品视频| 欧美色老头old∨ideo| 日韩一区精品字幕| 日韩一区二区三区精品视频| 久久精品国产精品亚洲综合| 精品成人一区二区三区| 国产传媒欧美日韩成人| 国产精品久久免费看| 91年精品国产| 亚洲综合激情网| 91精品国产色综合久久不卡蜜臀 | 亚洲精品国产a久久久久久| 色婷婷久久综合| 午夜一区二区三区视频| 日韩视频一区在线观看| 日韩**一区毛片| 精品国产乱码久久久久久夜甘婷婷 | 日韩主播视频在线| 日韩美女视频在线| 国产99久久久久久免费看农村| 日韩理论电影院| 欧美二区乱c少妇| 国产一区亚洲一区| 国产精品高潮呻吟| 欧美三级在线播放| 激情综合色综合久久| 国产精品久久久久久久久免费丝袜 | 91精品国产福利在线观看 | 色88888久久久久久影院按摩| 亚洲欧美在线观看| 欧美高清激情brazzers| 国产精品一区二区在线观看网站| 国产精品日韩成人| 欧美色大人视频| 国产乱码精品一区二区三| 亚洲最新视频在线观看| 亚洲精品乱码久久久久久| 欧美一区二区三区免费| 高清在线成人网| 偷偷要91色婷婷| 国产精品欧美经典| 欧美精品久久久久久久多人混战 | 日韩电影一区二区三区四区| 久久亚洲一区二区三区明星换脸| 91麻豆福利精品推荐| 久久国产精品第一页| 婷婷丁香激情综合| 亚洲精品国产第一综合99久久| 国产午夜一区二区三区| 欧美一区二区免费观在线| 色中色一区二区| 国产电影一区二区三区| 裸体一区二区三区| 午夜精品在线看| 亚洲精品老司机| 中文字幕字幕中文在线中不卡视频| 久久久国产精品麻豆| 欧美一级国产精品| 欧美三级蜜桃2在线观看| 一本色道a无线码一区v| av福利精品导航| 国产69精品久久久久777| 国产在线视视频有精品| 奇米精品一区二区三区四区 | 激情久久久久久久久久久久久久久久| 亚洲一区二区av在线| 尤物视频一区二区| 亚洲精品视频在线看| 亚洲欧美一区二区三区极速播放| 国产精品久久久久桃色tv|