Cypress AN6077, FX2LP manual Code Listing for Master Side

Page 8

AN6077

Code Listing for Master Side

#pragma NOIV

// Do not generate interrupt vectors

#include "fx2.h"

 

#include "fx2regs.h"

// SYNCDELAY macro

#include "fx2sdly.h"

extern BOOL GotSUD;

// Received setup data flag

extern BOOL Sleep;

 

extern BOOL Rwuen;

 

extern BOOL Selfpwr;

 

BYTE Configuration;

// Current configuration

BYTE AlternateSetting;

// Alternate settings

//proto's from "gpif.c" void GpifInit( void );

//512 for high speed, 64 for full speed static WORD enum_pkt_size = 0x0000;

//when set firmware running in TD_Poll( ); handles data transfers BOOL td_poll_handles_transfers = 1;

//when set cpu is out of the data path

BOOL endp_auto_mode_enabled = 1;

//-----------------------------------------------------------------------------

// Task Dispatcher hooks

//

The following hooks are called by the task dispatcher.

//-----------------------------------------------------------------------------

TD_Init( void )

 

void

 

{ //

Called once at startup

CPUCS = 0x10;

// CLKSPD[1:0]=10, for 48 MHz operation

 

 

// CLKOE=0, don't drive CLKOUT

GpifInit( );

// init GPIF engine via GPIFTool output file

//

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

 

SYNCDELAY;

// see TRM section 15.14

REVCTL = 0x02;

// REVCTL.1=1;

SYNCDELAY;

// BUF[1:0]=00 for 4x buffering

EP2CFG = 0xA0;

//EP6 512 BULK IN 4x SYNCDELAY;

EP6CFG = 0xE0;

// BUF[1:0]=00 for 4x buffering

 

February 19, 2008

Document No. 001-15342 Rev. **

8

[+] Feedback

Image 8
Contents Application Note Abstract IntroductionCreating Gpif Waveforms Gpif Master Pin DescriptionsSlave Fifo Pin Descriptions Fifowr Firmware Programming Master Firmware ArchitectureExpanded Master OUT Code Psuedocode for Master OUTPsuedocode for Master Syncdelay Gpiftrig = Gpiftrigwr GPIFEP2 Expanded Master in CodeSyncdelay Firmware for the SlaveSummary Gpiftrig = Gpiftrigrd GPIFEP6Code Listing for Master Side EP4 and EP8 are not used in this implementation Gpiftrig Trigger Fifo write transactions, using SFR Syncdelay Gpiftrig = Gpiftrigrd GPIFEP6 Setupdat Usbirq = TrueEzusbirqclear Clear Ures IRQ + Feedback Code Listing for the Slave Side AUTOOUT=0, WORDWIDE=0 Syncdelay AUTOOUT=1, WORDWIDE=0 AUTOIN=1, ZEROLENIN=1, WORDWIDE=0EP0BCH EP0BCL Clear Ures IRQ + Feedback + Feedback