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

📄 gpif.c

📁 一个有关EZ-USB FX2 系列CY7C68013的应用实例
💻 C
📖 第 1 页 / 共 3 页
字号:
// IF/Wait  Wait 2    IF        Wait 2    Wait 1    Wait 2    Wait 3    Wait 1             
//   Term A           INT#                                                                 
//   LFunc            AND                                                                  
//   Term B           INT#                                                                 
// Branch1            Then 0                                                               
// Branch0            Else 2                                                               
// Re-Exec            No                                                                   
// Sngl/CRC Default   Default   Default   Default   Default   Default   Default            
// CONVT#       1         1         1         1         1         0         0         1    
// RD#          1         1         0         1         0         1         1         1    
// WR#          1         1         1         1         1         1         1         1    
// CS#          1         1         0         1         0         1         1         1    
// unsed        1         1         1         1         1         1         1         1    
// unsed        1         1         1         1         1         1         1         1    
//                     
// END DO NOT EDIT     
// DO NOT EDIT ...                                                                         
//                                                                                         
// GPIF Waveform 1: FIFOWr                                                                  
//                                                                                         
// Interval     0         1         2         3         4         5         6     Idle (7) 
//          _________ _________ _________ _________ _________ _________ _________ _________
//                                                                                         
// AddrMode Same Val  Same Val  Same Val  Same Val  Same Val  Same Val  Same Val           
// DataMode NO Data   NO Data   NO Data   NO Data   NO Data   NO Data   NO Data            
// NextData SameData  SameData  SameData  SameData  SameData  SameData  SameData           
// Int Trig No Int    No Int    No Int    No Int    No Int    No Int    No Int             
// IF/Wait  Wait 2    Wait 9    IF        Wait 1    Wait 1    Wait 1    Wait 1             
//   Term A                     INT#                                                       
//   LFunc                      AND                                                        
//   Term B                     INT#                                                       
// Branch1                      ThenIdle                                                   
// Branch0                      ElseIdle                                                   
// Re-Exec                      No                                                         
// Sngl/CRC Default   Default   Default   Default   Default   Default   Default            
// CONVT#       1         0         1         1         1         1         1         1    
// RD#          1         1         1         1         1         1         1         1    
// WR#          1         1         1         1         1         1         1         1    
// CS#          1         1         1         1         1         1         1         1    
// unsed        1         1         1         1         1         1         1         1    
// unsed        1         1         1         1         1         1         1         1    
//                     
// END DO NOT EDIT     
// DO NOT EDIT ...                                                                         
//                                                                                         
// GPIF Waveform 2: SnglRd                                                                  
//                                                                                         
// Interval     0         1         2         3         4         5         6     Idle (7) 
//          _________ _________ _________ _________ _________ _________ _________ _________
//                                                                                         
// AddrMode Same Val  Same Val  Same Val  Same Val  Same Val  Same Val  Same Val           
// DataMode NO Data   NO Data   Activate  Activate  Activate  Activate  Activate           
// NextData SameData  SameData  SameData  SameData  SameData  SameData  SameData           
// Int Trig No Int    No Int    No Int    No Int    No Int    No Int    No Int             
// IF/Wait  Wait 2    Wait 2    Wait 3    Wait 1    Wait 1    Wait 1    Wait 1             
//   Term A                                                                                
//   LFunc                                                                                 
//   Term B                                                                                
// Branch1                                                                                 
// Branch0                                                                                 
// Re-Exec                                                                                 
// Sngl/CRC Default   Default   Default   Default   Default   Default   Default            
// CONVT#       1         1         1         1         1         1         1         1    
// RD#          1         0         1         1         1         1         1         1    
// WR#          1         1         1         1         1         1         1         1    
// CS#          1         0         1         1         1         1         1         1    
// unsed        1         1         1         1         1         1         1         1    
// unsed        1         1         1         1         1         1         1         1    
//                     
// END DO NOT EDIT     
// DO NOT EDIT ...                                                                         
//                                                                                         
// GPIF Waveform 3: SnglWr                                                                  
//                                                                                         
// Interval     0         1         2         3         4         5         6     Idle (7) 
//          _________ _________ _________ _________ _________ _________ _________ _________
//                                                                                         
// AddrMode Same Val  Same Val  Same Val  Same Val  Same Val  Same Val  Same Val           
// DataMode NO Data   NO Data   Activate  Activate  NO Data   NO Data   NO Data            
// NextData SameData  SameData  SameData  SameData  SameData  SameData  SameData           
// Int Trig No Int    No Int    No Int    No Int    No Int    No Int    No Int             
// IF/Wait  Wait 2    Wait 1    Wait 3    Wait 2    Wait 3    Wait 5    Wait 1             
//   Term A                                                                                
//   LFunc                                                                                 
//   Term B                                                                                
// Branch1                                                                                 
// Branch0                                                                                 
// Re-Exec                                                                                 
// Sngl/CRC Default   Default   Default   Default   Default   Default   Default            
// CONVT#       1         1         1         1         1         0         0         1    
// RD#          1         1         1         1         1         1         1         1    
// WR#          1         1         0         1         1         1         1         1    
// CS#          1         0         0         0         1         1         1         1    
// unsed        1         1         1         1         1         1         1         1    
// unsed        1         1         1         1         1         1         1         1    
//                     
// END DO NOT EDIT     
                                               
// DO NOT EDIT ...                     
const char xdata WaveData2[128] =     
{                                      
// Wave 0 
/* LenBr */ 0x39,     0x02,     0x01,     0x03,     0x01,     0x05,     0x05,     0x07,
/* Opcode*/ 0x01,     0x00,     0x02,     0x0C,     0x02,     0x0C,     0x00,     0x00,
/* Output*/ 0x0F,     0x05,     0x07,     0x07,     0x05,     0x07,     0x0E,     0x0F,
/* LFun  */ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x3F,
// Wave 1 
/* LenBr */ 0x02,     0x09,     0x3F,     0x01,     0x01,     0x01,     0x01,     0x07,
/* Opcode*/ 0x00,     0x00,     0x01,     0x00,     0x00,     0x00,     0x00,     0x00,
/* Output*/ 0x0F,     0x0E,     0x0F,     0x0F,     0x0F,     0x0F,     0x0F,     0x0F,
/* LFun  */ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x3F,
// Wave 2 
/* LenBr */ 0x02,     0x02,     0x03,     0x03,     0x01,     0x01,     0x01,     0x07,
/* Opcode*/ 0x00,     0x00,     0x02,     0x00,     0x00,     0x00,     0x00,     0x00,
/* Output*/ 0x0F,     0x05,     0x0F,     0x0F,     0x0F,     0x0F,     0x0F,     0x0F,
/* LFun  */ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x3F,
// Wave 3 
/* LenBr */ 0x02,     0x01,     0x03,     0x02,     0x03,     0x05,     0x01,     0x07,
/* Opcode*/ 0x00,     0x00,     0x02,     0x02,     0x00,     0x00,     0x00,     0x00,
/* Output*/ 0x0F,     0x07,     0x03,     0x07,     0x0F,     0x0E,     0x0E,     0x0F,
/* LFun  */ 0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x00,     0x3F,
};                     
// END DO NOT EDIT 
                                                   
// DO NOT EDIT ...                                               
const char data InitData2[7] =                                   
{                                                                
/* Regs  */ 0xA0,0x00,0x00,0x0F,0x8E,0xE4,0x00     
};   
                                             
// GPIF Program Code                          
                                              
// DO NOT EDIT ...                            
#include "fx2.h"                            
#include "fx2regs.h"                        
#include "fx2sdly.h"     // SYNCDELAY macro 
#include "gpif.h"
// END DO NOT EDIT                            
                                               
//-------------------------------------------------------------------//                                                                 
// TO DO: You may add additional code below.

void GpifInit( void )
{ 
  // Registers which require a synchronization delay, see section 15.14
  // FIFORESET        FIFOPINPOLAR
  // INPKTEND         OUTPKTEND
  // EPxBCH:L         REVCTL
  // GPIFTCB3         GPIFTCB2
  // GPIFTCB1         GPIFTCB0
  // EPxFIFOPFH:L     EPxAUTOINLENH:L
  // EPxFIFOCFG       EPxGPIFFLGSEL
  // PINFLAGSxx       EPxFIFOIRQ
  // EPxFIFOIE        GPIFIRQ
  // GPIFIE           GPIFADRH:L
  // UDMACRCH:L       EPxGPIFTRIG
  // GPIFTRIG
  
  // Note: The pre-REVE EPxGPIFTCH/L register are affected, as well...
  //      ...these have been replaced by GPIFTC[B3:B0] registers
 
  // 8051 doesn't have access to waveform memories 'til
  // the part is in GPIF mode.
 
  IFCONFIG = 0x8E;
  // IFCLKSRC=1   , FIFOs executes on internal clk source
  // xMHz=1       , 48MHz internal clk rate
  // IFCLKOE=0    , Don't drive IFCLK pin signal at 48MHz
  // IFCLKPOL=0   , Don't invert IFCLK pin signal from internal clk
  // ASYNC=1      , master samples asynchronous
  // GSTATE=1     , Drive GPIF states out on PORTE[2:0], debug WF
  // IFCFG[1:0]=10, FX2 in GPIF master mode
 
  GPIFABORT = 0xFF;  // abort any waveforms pending
 
// Configure GPIF Address pins, output initial value,
  PORTCCFG = 0xFF;    // [7:0] as alt. func. GPIFADR[7:0]
  OEC = 0xFF;         // and as outputs
  PORTECFG |= 0x80;   // [8] as alt. func. GPIFADR[8]
  OEE |= 0x80;        // and as output
 
// ...OR... tri-state GPIFADR[8:0] pins
//  PORTCCFG = 0x00;  // [7:0] as port I/O
//  OEC = 0x00;       // and as inputs
//  PORTECFG &= 0x7F; // [8] as port I/O
//  OEE &= 0x7F;      // and as input
 
// GPIF address pins update when GPIFADRH/L written
  SYNCDELAY;                    // 
  GPIFADRH = 0x00;    // bits[7:1] always 0
  SYNCDELAY;                    // 
  GPIFADRL = 0x00;    // point to PERIPHERAL address 0x0000
 
// Configure GPIF FlowStates registers for Wave 0 of WaveData
  FLOWSTATE = FlowStates[ 0 ];
  FLOWLOGIC = FlowStates[ 1 ];
  FLOWEQ0CTL = FlowStates[ 2 ];
  FLOWEQ1CTL = FlowStates[ 3 ];
  FLOWHOLDOFF = FlowStates[ 4 ];
  FLOWSTB = FlowStates[ 5 ];
  FLOWSTBEDGE = FlowStates[ 6 ];
  FLOWSTBHPERIOD = FlowStates[ 7 ];
}
// TODO: You may add additional code below.
/*void OtherInit( void )
{ // interface initialization
  // ...see TD_Init( );
}

// Set Address GPIFADR[8:0] to PERIPHERAL
void Peripheral_SetAddress( WORD gaddr )
{
  SYNCDELAY;                    // 
  GPIFADRH = gaddr >> 8;
  SYNCDELAY;                    // 
  GPIFADRL = ( BYTE )gaddr; // setup GPIF address 
}

// Set EP2GPIF Transaction Count
void Peripheral_SetEP2GPIFTC( WORD xfrcnt )
{
  SYNCDELAY;                    // 
  EP2GPIFTCH = xfrcnt >> 8;  // setup transaction count
  SYNCDELAY;                    // 
  EP2GPIFTCL = ( BYTE )xfrcnt;
}

// Set EP4GPIF Transaction Count
void Peripheral_SetEP4GPIFTC( WORD xfrcnt )
{
  SYNCDELAY;                    // 
  EP4GPIFTCH = xfrcnt >> 8;  // setup transaction count
  SYNCDELAY;                    // 
  EP4GPIFTCL = ( BYTE )xfrcnt;
}*/

// Set EP6GPIF Transaction Count

void Peripheral_SetEP6GPIFTC( WORD xfrcnt )
{
  SYNCDELAY;                    // 
  EP6GPIFTCH = xfrcnt >> 8;  // setup transaction count
  SYNCDELAY;                    // 
  EP6GPIFTCL = ( BYTE )xfrcnt;
}


/*void Peripheral_SetEP6GPIFTCX( WORD xfrcnt )
{
  SYNCDELAY;                    // 
  EP6GPIFTCHX = xfrcnt >> 8;  // setup transaction count

⌨️ 快捷键说明

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