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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fx2_to_extsram.c

?? 和LA_USB配套使用,USB 固件部分,對學習FX2有一定幫助
?? C
?? 第 1 頁 / 共 2 頁
字號:
#pragma NOIV               // Do not generate interrupt vectors
//-----------------------------------------------------------------------------
//   File:       FX2_to_extsyncFIFO.c
//   Contents:   Hooks required to implement FX2 GPIF to external sync. FIFO
//               interface using CY4265-15AC
//
//   Copyright (c) 2003 Cypress Semiconductor, Inc. All rights reserved
//-----------------------------------------------------------------------------
#include "fx2.h"
#include "fx2regs.h"
#include "fx2sdly.h" 
#include "user.h"

#define EXTSRAMRDEN   GPIFREADYSTAT & bmBIT0  //RDY0
//#define EXTSRAMWREN  GPIFREADYSTAT & bmBIT0			  //RDY0

#define GPIFTRIGRD 4

#define GPIF_EP2 0
#define GPIF_EP4 1
#define GPIF_EP6 2
#define GPIF_EP8 3

extern BOOL GotSUD;             // Received setup data flag
extern BOOL Sleep;
extern BOOL Rwuen;
extern BOOL Selfpwr;

BYTE Configuration;                 // Current configuration
BYTE AlternateSetting;              // Alternate settings
BOOL enum_high_speed = FALSE;       // flag to let firmware know FX2 enumerated at high speed
extern const char xdata FlowStates[36];

BOOL in_enable = FALSE;             // flag to enable IN transfers
BOOL IN_STOP_FLAG = FALSE;          // flag to disable IN transfers
BOOL out_enable = FALSE;            // flag to enable OUT transfers
BOOL OUT_STOP_FLAG = FALSE;         // flag to disable OUT transfers
BOOL PAUSE_FLAG = FALSE;            // flag to pause OUT transfers

int usb_RD_CNT = 0x0;
 
//-----------------------------------------------------------------------------
// Task Dispatcher hooks
//   The following hooks are called by the task dispatcher.
//-----------------------------------------------------------------------------
void Setup_FLOWSTATE_Write ( void );
void Setup_FLOWSTATE_Read ( void );
void GpifInit ();

void TD_Init(void)             // Called once at startup
{
  // set the CPU clock to 48MHz
  CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1);
  SYNCDELAY; 

  EP2CFG = 0xA0;     // EP2OUT, bulk, size 512, 4x buffered
  SYNCDELAY;                         
  EP4CFG = 0x00;     // EP4 not valid
  SYNCDELAY;              
  EP6CFG = 0xE0;     // EP6IN, bulk, size 512, 4x buffered     
  SYNCDELAY;
  EP8CFG = 0x00;     // EP8 not valid
  SYNCDELAY;
  
  
  FIFORESET = 0x80;  // set NAKALL bit to NAK all transfers from host
  SYNCDELAY;
  FIFORESET = 0x02;  // reset EP2 FIFO
  SYNCDELAY;
  FIFORESET = 0x06;  // reset EP6 FIFO
  SYNCDELAY;
  FIFORESET = 0x00;  // clear NAKALL bit to resume normal operation
  SYNCDELAY;

  EP2FIFOCFG = 0x01; // allow core to see zero to one transition of auto out bit
  SYNCDELAY;
  EP2FIFOCFG = 0x11; // auto out mode, disable PKTEND zero length send, word ops
  SYNCDELAY;
  EP6FIFOCFG = 0x09; // auto in mode, disable PKTEND zero length send, word ops
  SYNCDELAY; 
  
  GpifInit (); // initialize GPIF registers
  
  SYNCDELAY;
  EP2FIFOPFH = 0x88;	  //PAE = (<=1024)
  SYNCDELAY;
  EP2FIFOPFL = 0x0;
  SYNCDELAY;
  EP2GPIFFLGSEL = 0x01; // For EP2OUT, GPIF uses EF flag
  SYNCDELAY;
//  EP6GPIFFLGSEL = 0x02; // For EP6IN, GPIF uses FF flag
//  SYNCDELAY;
  EP6FIFOPFH = 0x10;	  //PAF = (<=2 * 512)
  SYNCDELAY;
  EP6FIFOPFL = 0x0;
  SYNCDELAY;
  EP6GPIFFLGSEL = 0x02; // For EP6IN, GPIF uses PAF flag
  SYNCDELAY;
  
  // global flowstate register initializations

  FLOWLOGIC = FlowStates[19];      // 0011 0110b - LFUNC[1:0] = 00 (A AND B), TERMA/B[2:0]=110 (FIFO Flag)
  SYNCDELAY;
  FLOWSTB = FlowStates[23];        // 0000 0100b - MSTB[2:0] = 100 (CTL4), not used as strobe
  SYNCDELAY;
  GPIFHOLDAMOUNT = FlowStates[26]; // hold data for one half clock (10ns) assuming 48MHz IFCLK
  SYNCDELAY;
  FLOWSTBEDGE = FlowStates[24];    // move data on both edges of clock
  SYNCDELAY;
  FLOWSTBHPERIOD = FlowStates[25]; // 20.83ns half period
  SYNCDELAY;  


	//port A as output io
	PORTACFG =0x00;
	OEA = 0xFF;     // turn on PA as output pin
	IOA &=0xEF;     // bring PA4 low
	SYNCDELAY;  
	IOA |= 0x10;     // bring PA4 high(usb reset)

}

void TD_Poll(void)
{
  //OUTPUT 
  if(out_enable)                             // if OUT transfers are enabled
  {
	  if( GPIFTRIG & 0x80 )               // if GPIF interface IDLE
	  {
	  	if(OUT_STOP_FLAG)
		{
			OUT_STOP_FLAG = FALSE;
			out_enable = FALSE;			 
			IOA |=0x08;
		}
   							 
	    if (  ( EP24FIFOFLGS & 0x04 ) )  // if there's a packet >1024 bytes for EP2
		{
	      //if ( EXTSRAMWREN)               // if the external SRAM enable write
		  //{  
		IOA &= 0xEF;     // bring PA4 high(usb reset)
/*		    if(enum_high_speed)
			{
		      SYNCDELAY;    
	          GPIFTCB1 = 0x02;            // setup transaction count (2*512 bytes/2 for word wide -> 0x0100)
	          SYNCDELAY;
	          GPIFTCB0 = 0x00;
	          SYNCDELAY;
			}
			else
			{
			  SYNCDELAY;
			  GPIFTCB1 = 0x02;            // setup transaction count (2*512 bytes/2 for word wide -> 0x20)
	          SYNCDELAY;
			  GPIFTCB0 = 0x00;
			  SYNCDELAY;
			}
*/		      SYNCDELAY;    
	          GPIFTCB1 = 0x02;            // setup transaction count (2*512 bytes/2 for word wide -> 0x0100)
	          SYNCDELAY;
	          GPIFTCB0 = 0x00;
	          SYNCDELAY;
		    Setup_FLOWSTATE_Write();      // setup FLOWSTATE registers for FIFO Write operation
	        SYNCDELAY;
	        GPIFTRIG = GPIF_EP2;          // launch GPIF FIFO WRITE Transaction from EP2 FIFO
	        SYNCDELAY;
			IOA |=0x08;

		  //}
		}
	  }
  }
  //INPUT FIFO
  if(in_enable)                             // if IN transfers are enabled
  {	 
    if ( GPIFTRIG & 0x80 )                  // if GPIF interface IDLE
    {	   
	  	if(IN_STOP_FLAG)
		{  
			IN_STOP_FLAG = FALSE;
			in_enable = FALSE;			 
		}   							 
		if ( EXTSRAMRDEN )                // if external sram enable read
		{	  
			if ( ( EP68FIFOFLGS & 0x04 ) )     // if EP6 FIFO is <1024
			{      
			      if(enum_high_speed)
				  {	  PA3=1	;
			        SYNCDELAY;    
			        GPIFTCB1 = 0x02;                // setup transaction count (2*512 bytes/2 for word wide -> 0x0100)
			        SYNCDELAY;
			        GPIFTCB0 = 0x00;
			        SYNCDELAY;
				  }
				  else
				  {
				    SYNCDELAY;
				    GPIFTCB1 = 0x02;                // setup transaction count (2*512 bytes/2 for word wide -> 0x20)
			        SYNCDELAY;
				    GPIFTCB0 = 0x00;
				    SYNCDELAY;
				  }
			
			      Setup_FLOWSTATE_Read();           // setup FLOWSTATE registers for FIFO Read operation
			      SYNCDELAY;
			      GPIFTRIG = GPIFTRIGRD | GPIF_EP6; // launch GPIF FIFO READ Transaction to EP6 FIFO
			      SYNCDELAY;
				/*  usb_RD_CNT++;
	 		if( usb_RD_CNT >=256 )   		//32kbytes
		  {	  
  	  		  usb_RD_CNT = 0;

		  	//send usb_rd_end signal to cpld to idle state of lsm
		      IOA &= 0xFB;     // bring PA2 low
			  IOA |= 0x04;     // pull PA2 high initially   
		      EZUSB_Delay (1); // keep PA2 low for ~1ms, more than enough time
		      IOA &= 0xFB;     // bring PA2 low
			//reset fifo of ep6
			  FIFORESET = 0x80;  // set NAKALL bit to NAK all transfers from host
			  SYNCDELAY;
			  FIFORESET = 0x06;  // reset EP6 FIFO
			  SYNCDELAY;
			  FIFORESET = 0x00;  // clear NAKALL bit to resume normal operation
			  SYNCDELAY;   
		  	}
		   */
			}
		}
    }
  }
}

BOOL TD_Suspend(void)          // Called before the device goes into suspend mode
{
   return(TRUE);
}

BOOL TD_Resume(void)          // Called after the device resumes
{
   return(TRUE);
}

//-----------------------------------------------------------------------------
// Device Request hooks
//   The following hooks are called by the end point 0 device request parser.
//-----------------------------------------------------------------------------

BOOL DR_GetDescriptor(void)
{
   return(TRUE);
}

BOOL DR_SetConfiguration(void)   // Called when a Set Configuration command is received
{
  if( EZUSB_HIGHSPEED( ) )
  { // FX2 enumerated at high speed
    SYNCDELAY;                  // 
    EP6AUTOINLENH = 0x02;       // set AUTOIN commit length to 512 bytes
    SYNCDELAY;                  // 
    EP6AUTOINLENL = 0x00;
    SYNCDELAY;                  
    enum_high_speed = TRUE;
  }
  else
  { // FX2 enumerated at full speed
    SYNCDELAY;                   
    EP6AUTOINLENH = 0x00;       // set AUTOIN commit length to 64 bytes
    SYNCDELAY;                   
    EP6AUTOINLENL = 0x40;
    SYNCDELAY;                  
    enum_high_speed = FALSE;
  }

  Configuration = SETUPDAT[2];
  return(TRUE);            // Handled by user code
}

BOOL DR_GetConfiguration(void)   // Called when a Get Configuration command is received
{
   EP0BUF[0] = Configuration;
   EP0BCH = 0;
   EP0BCL = 1;
   return(TRUE);            // Handled by user code
}

BOOL DR_SetInterface(void)       // Called when a Set Interface command is received
{
   AlternateSetting = SETUPDAT[2];
   return(TRUE);            // Handled by user code
}

BOOL DR_GetInterface(void)       // Called when a Set Interface command is received
{
   EP0BUF[0] = AlternateSetting;
   EP0BCH = 0;
   EP0BCL = 1;
   return(TRUE);            // Handled by user code
}

BOOL DR_GetStatus(void)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品青草久久| 欧美熟乱第一页| 久久青草国产手机看片福利盒子| 日韩精品亚洲专区| 9191久久久久久久久久久| 日韩**一区毛片| 精品99一区二区三区| 国产成人在线影院| 亚洲摸摸操操av| 欧美日韩国产小视频在线观看| 人人爽香蕉精品| 国产欧美日本一区二区三区| 色偷偷成人一区二区三区91| 日韩高清电影一区| 欧美极品另类videosde| 欧美午夜精品电影| 久久99蜜桃精品| 亚洲欧洲一区二区在线播放| 欧美色窝79yyyycom| 精品亚洲成av人在线观看| 国产精品黄色在线观看| 欧美另类变人与禽xxxxx| 国产一区二区三区免费观看| 国产精品久久久久久久蜜臀| 欧美精品在线观看一区二区| 国产电影精品久久禁18| 亚洲一区二区三区国产| 精品国产sm最大网站免费看| 色乱码一区二区三区88| 久久国产精品免费| 亚洲黄色性网站| www激情久久| 欧美三电影在线| 国产成人a级片| 全国精品久久少妇| 亚洲精品福利视频网站| 久久综合九色综合97婷婷| 色噜噜狠狠成人网p站| 国产成人午夜99999| 午夜免费久久看| 亚洲欧洲av在线| 精品不卡在线视频| 91精品国产综合久久小美女| aaa国产一区| 国产精品综合一区二区| 午夜欧美2019年伦理| 亚洲蜜桃精久久久久久久| 久久人人97超碰com| 91麻豆精品国产91久久久更新时间| 成人午夜免费视频| 国产在线视频精品一区| 天天色综合成人网| 亚洲精品免费播放| 国产日韩欧美精品在线| 欧美xxxxx牲另类人与| 欧美日韩www| 欧美日韩一级黄| 在线亚洲一区观看| 91麻豆国产自产在线观看| 国产成人在线视频免费播放| 久久精品国产澳门| 奇米一区二区三区| 日韩电影免费在线看| 亚洲va韩国va欧美va精品| 亚洲精品视频免费观看| 中文字幕在线不卡一区二区三区| 国产日韩欧美激情| 国产免费久久精品| 国产三区在线成人av| 久久久久亚洲蜜桃| 久久久亚洲高清| 久久综合给合久久狠狠狠97色69| 精品欧美乱码久久久久久1区2区| 欧美一区二区三区免费大片| 欧美久久久一区| 91精品国产aⅴ一区二区| 91麻豆精品国产自产在线| 日韩一区二区电影网| 日韩欧美国产1| 精品sm在线观看| 中文在线一区二区| 中文字幕日本不卡| 亚洲午夜精品在线| 五月天精品一区二区三区| 男女视频一区二区| 国产米奇在线777精品观看| 国产成人免费高清| av电影天堂一区二区在线| 色婷婷一区二区三区四区| 欧美视频在线一区二区三区| 欧美日韩国产免费| 日韩美女在线视频| 亚洲国产高清aⅴ视频| 亚洲天堂成人网| 亚洲电影第三页| 精品一区二区三区日韩| 成年人国产精品| 欧美三级蜜桃2在线观看| 欧美tk丨vk视频| 欧美国产激情二区三区 | 丁香六月久久综合狠狠色| 成人精品一区二区三区四区| 91极品美女在线| 日韩欧美一级片| 国产精品区一区二区三| 调教+趴+乳夹+国产+精品| 韩日欧美一区二区三区| 99国内精品久久| 欧美一区二区在线视频| 国产精品久久99| 日本欧美韩国一区三区| www.久久久久久久久| 欧美高清视频一二三区| 久久久久国产精品麻豆ai换脸| 亚洲激情成人在线| 国产在线精品免费| 91国在线观看| 久久久www成人免费毛片麻豆| 亚洲柠檬福利资源导航| 极品少妇xxxx精品少妇偷拍| 91亚洲午夜精品久久久久久| 日韩一区二区三免费高清| 亚洲视频一区二区在线| 久久99精品久久久久久国产越南| 97aⅴ精品视频一二三区| 欧美一级免费大片| 亚洲女厕所小便bbb| 国产美女久久久久| 91精品国产欧美一区二区| 国产精品久久久久永久免费观看| 日本不卡一二三| 在线一区二区三区做爰视频网站| 久久一夜天堂av一区二区三区| 亚洲综合激情网| 国产**成人网毛片九色| 日韩一区二区三免费高清| 亚洲图片欧美视频| 不卡的av中国片| 久久色中文字幕| 青青国产91久久久久久| 欧美日韩一级大片网址| 日韩一区有码在线| 国产91精品入口| 欧美成人三级电影在线| 亚洲第一久久影院| 91色.com| 中文字幕色av一区二区三区| 国产成人av一区| 精品成人一区二区三区四区| 婷婷综合在线观看| 欧美日韩午夜在线| 亚洲韩国精品一区| 欧美亚洲国产一卡| 亚洲免费三区一区二区| 成人18视频在线播放| 国产精品麻豆99久久久久久| 国产精品1区二区.| 久久夜色精品国产欧美乱极品| 蜜桃精品在线观看| 日韩午夜在线影院| 蜜臀av一区二区在线免费观看| 666欧美在线视频| 丝袜诱惑亚洲看片| 欧美一区三区二区| 久久国内精品自在自线400部| 欧美一区午夜精品| 狠狠色丁香久久婷婷综合丁香| 日韩精品影音先锋| 精品在线免费视频| 精品久久国产字幕高潮| 韩国中文字幕2020精品| 久久久久久97三级| 成人sese在线| 亚洲综合一区在线| 欧美日韩国产综合一区二区| 日本午夜一本久久久综合| 日韩亚洲电影在线| 国产一区二区看久久| 国产精品每日更新| 在线亚洲一区二区| 日韩国产精品91| 精品国产一区二区精华| 国产成人8x视频一区二区| 中文字幕欧美一区| 欧美福利一区二区| 国内精品免费**视频| 国产精品日韩精品欧美在线 | 欧美亚洲免费在线一区| 日韩黄色在线观看| 久久综合色天天久久综合图片| 成人在线视频一区二区| 亚洲精品少妇30p| 日韩丝袜美女视频| 成人性视频免费网站| 亚洲综合在线第一页| 精品国产一区二区三区四区四| 成人性视频免费网站| 亚洲成人免费视| 久久久不卡网国产精品二区| 97精品超碰一区二区三区|