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

📄 fs7822.h

📁 用于Slave I2C得读写,此代码针对特定得芯片,但对其他得芯片也有借鉴作用.
💻 H
字号:
/*
**********************************************************************************************
* Project:	T5
* File:		FS7822.h
* Contents: 
*   
* $Date: 1/18/06    Michal     v0.1  initial
* 
* Copyright (c) 2006 Fameg, Inc. All rights reserved
***********************************************************************************************
*/
#ifndef __FS7822_H__
#define __FS7822_H__

#include "DP8051.h"

#ifdef ALLOCATE_EXTERN
#define EXTERN
#define _AT_ _at_
#else
#define EXTERN extern
#define _AT_ ;/ ## /
#endif

#define BULK
//#define ISOCHRONOUS
//#define INTERRUPT

#define TRUE 	1
#define FALSE	0

#define true  TRUE 	
#define false FALSE	

#ifndef NULL
  #define NULL (void*) 0	
#endif
typedef unsigned char   BYTE;
typedef unsigned short  WORD;
typedef unsigned long   DWORD;
typedef BYTE             BOOL;

/*typedef bit            bool;           
typedef short          INT16;
typedef unsigned short UINT16;
typedef long           INT32;
typedef unsigned long  UINT32;
*/
#define	VendorIDL      	0x21
#define	VendorIDH      	0x51
#define	ProductIDL     	0x12
#define	ProductIDH     	0x12
#define	NumEP		   	0x02


/////////////////////
#define bmBIT0   0x01
#define bmBIT1   0x02
#define bmBIT2   0x04
#define bmBIT3   0x08
#define bmBIT4   0x10
#define bmBIT5   0x20
#define bmBIT6   0x40
#define bmBIT7   0x80

//////////////////////////////
#define	bmUSBINTE	bmBIT5
#define	bmUSBINTF	bmBIT5    //bmBIT0 to bmBIT5(in IE,IP) 
#define	bmDMAINTE	bmBIT0
#define	bmDMAINTF	bmBIT0    // bmBIT1 to bmBIT0 

/////////////////////////////

#define	bmUSBRST	bmBIT0     //(in SW_RST)
#define	bmUSBPLUG	bmBIT1
#define	bmUSBSUS	bmBIT2
//#define	bmUSBRESUME	bmBIT3
#define	bmUSBHSDC	bmBIT6
//#define	bmUSBHSPD	bmBIT7

//interrupt event
#define	bmRX0INT	bmBIT0   // bmINT0RX to  bmRX0INT
#define	bmTX0INT	bmBIT1   //bmINT0TX to bmTX0INT
#define	bmIN0INT	bmBIT2   //bmINT0IN to bmIN0INT
#define	bmEPAINT		bmBIT3   //bmINTA    to bmEPAINT
#define	bmEPBINT		bmBIT4   //bmINTB    to bmEPBINT


////////////////////
//interrupt enable
#define	bmINT0RXE	bmBIT0
#define	bmINT0TXE	bmBIT1
#define	bmINT0INE	bmBIT2
#define	bmINT1E		bmBIT3
#define	bmINT2E		bmBIT4
#define	bmINT3E		bmBIT5
#define	bmSOFINTE	bmBIT7   //bmBIT6 to bmBIT7

#define	bmRSTINTE	bmBIT0
#define	bmIDLEINTE	bmBIT1
#define	bmRUEINTE	bmBIT2

//State interrupt event 
#define	bmRSTINT	bmBIT0
#define	bmIDLEINT	bmBIT1
#define	bmRUEINT	bmBIT2

//EP0 RX token
#define	bmRXOUT	bmBIT0
#define	bmRXSETUP	bmBIT1
#define	bmSETUPOW	bmBIT2		//SETUP Overwrite


//EP0 RX cmd/status	
#define	bmEP0RXEN			bmBIT0
#define	bmEP0RXSESTALL	bmBIT1
#define	bmEP0RXDTOG		bmBIT2
#define	bmEP0RXDTOGERR	bmBIT3
#define	bmEP0RXACKSTS		bmBIT4
#define	bmEP0RXSTALLSTS	bmBIT5
#define	bmEP0RXERRSTS		bmBIT6
#define	bmEP0RXCDTOG		bmBIT7

//EP0 TX cmd/sts	
#define	bmEP0TXEN			bmBIT0
#define	bmEP0TXSESTALL	bmBIT1
#define	bmEP0TXDTOG		bmBIT2
#define	bmEP0TXACKSTS		bmBIT4
#define	bmEP0TXSTALLSTS	bmBIT5
#define	bmEP0TXERRSTS		bmBIT6
#define	bmEP0TXCDTOG		bmBIT7


//EPn cmd/sts	
#define	bmEPnRTEN			bmBIT0
#define	bmEPnSESTALL		bmBIT1
#define	bmEPnDTOG			bmBIT2
#define	bmEPnDTOGERR		bmBIT3
#define	bmEPnACKSTS		bmBIT4
#define	bmEPnSTALLSTS		bmBIT5
#define	bmEPnERRSTS		bmBIT6
#define	bmEPnCDTOG		bmBIT7

//EP STALL
#define	bmEPSTALL			bmBIT1

//EPx FIFOCS
//#define	bmFIFO0CLKSEL		0           //bmBIT0 to 0
//#define	bmFIFO1CLKSEL		bmBIT0 //bmBIT1 to bmBIT0
//#define	bmEPxFIFO			bmBIT3
//#define	bmCasCADE			bmBIT5
//#define	bmFIFO0FULL		bmBIT6
//#define	bmFIFO1FULL		bmBIT7

//DMA control
#define	bmTDMA_START		bmBIT0
#define	bmDMA_START		bmBIT1

//DMA Source/Destination pointer increment control
//#define	bmDMA_SINC			bmBIT0
//#define	bmDMA_DINC			bmBIT1


//System Register  
EXTERN xdata volatile BYTE PRODUCTIDL         	_AT_ 0xFE00; 
EXTERN xdata volatile BYTE PRODUCTIDH         	_AT_ 0xFE01;
EXTERN xdata volatile BYTE VERSION         	_AT_ 0xFE02;

EXTERN xdata volatile BYTE CHIPINT             	_AT_ 0xFE03; //0x30A3;
    #define bmDMA_INT     bmBIT0 
    #define bmTDES_INT    bmBIT1 
    #define bmRNG_INT     bmBIT2 
    #define bmSPI_INT      bmBIT3 
    #define bmSDMI_INT    bmBIT4 
    #define bmI2C_INT       bmBIT5 
    #define bmWDT_INT     bmBIT6 

EXTERN xdata volatile BYTE CHIPINTE           	_AT_ 0xFE04;//0x30A4;
    #define bmDMA_IE     bmBIT0 
    #define bmTDES_IE    bmBIT1 
    #define bmRNG_IE     bmBIT2 
    #define bmSPI_IE      bmBIT3 
    #define bmSDMI_IE    bmBIT4 
    #define bmI2C_IE       bmBIT5 
    #define bmWDT_IE     bmBIT6 

EXTERN xdata volatile BYTE SYS_CFG           	_AT_ 0xFE05;
    #define bmCPUCLK_SEL     bmBIT0|bmBIT1 
    #define bmIFCLKPOL       bmBIT2 
    #define bmCPUCLKOE      bmBIT3 
    #define bmEXCLK_EN       bmBIT4 
    #define bmSYS_SWRST    bmBIT5 
    #define bmPM_AVBLE       bmBIT6 
    #define bmBYPASSPLL     bmBIT7

	
EXTERN xdata volatile BYTE SYSIO_CFG           	_AT_ 0xFE06;
    #define bmIFCFG          bmBIT0|bmBIT1 
    #define bmSDC_EN       bmBIT2 
    #define bmSPI_EN       bmBIT3 
    #define bmI2C_EN       bmBIT4 
    #define bmUART_EN    bmBIT5 
    #define bmEXINT_EN       bmBIT6 

EXTERN xdata volatile BYTE P0CFG           	_AT_ 0xFE07;
EXTERN xdata volatile BYTE P3CFG           	_AT_ 0xFE08;
EXTERN xdata volatile BYTE P0OE           	_AT_ 0xFE09;
EXTERN xdata volatile BYTE P1OE           	_AT_ 0xFE0A;
EXTERN xdata volatile BYTE P2OE           	_AT_ 0xFE0B;
EXTERN xdata volatile BYTE P3OE           	_AT_ 0xFE0C;
EXTERN xdata volatile BYTE P4OE           	_AT_ 0xFE0D;
EXTERN xdata volatile BYTE P5OE           	_AT_ 0xFE0E;
EXTERN xdata volatile BYTE PDCTL           	_AT_ 0xFE0F;
EXTERN xdata volatile BYTE P4           	_AT_ 0xFE10;
EXTERN xdata volatile BYTE P5           	_AT_ 0xFE11;


EXTERN xdata volatile BYTE TEST           	_AT_ 0xFE12;
    #define bmSBT_RESULT0      bmBIT0
    #define bmSBT_RESULT1      bmBIT1
    #define bmIBT_RESULT0      bmBIT2
    #define bmIBT_RESULT1      bmBIT3
    #define bmSTAND8051        bmBIT5
    #define bmDIT_MODE         bmBIT6


EXTERN xdata volatile BYTE SW_RST           	_AT_ 0xFE13;//0x30A5;  SYS_SWRST to SW_RST 
    #define bmUSB_RST      bmBIT0
    #define bmSFI_RST      bmBIT1
    #define bmAPLIF_RST    bmBIT2
    #define bmSPI_RST      bmBIT3
    #define bmDMA_RST      bmBIT4
    #define bmTDES_RST     bmBIT5
    #define bmSDMI_RST     bmBIT6
    #define bmI2C_RST      bmBIT7


EXTERN xdata volatile BYTE RMWEN           	       _AT_ 0xFE14;
    #define bmRMWEN0      bmBIT0
    #define bmRMWEN1      bmBIT1
    #define bmRMWEN2      bmBIT2
    #define bmRMWEN3      bmBIT3
    #define bmRMWEN4      bmBIT4
    #define bmRMWEN5      bmBIT5

EXTERN xdata volatile BYTE P0PUCTL           	_AT_ 0xFE15;
EXTERN xdata volatile BYTE P1PUCTL           	_AT_ 0xFE16;
EXTERN xdata volatile BYTE P2PUCTL           	_AT_ 0xFE17;
EXTERN xdata volatile BYTE P3PUCTL           	_AT_ 0xFE18;
EXTERN xdata volatile BYTE P4PUCTL           	_AT_ 0xFE19;
EXTERN xdata volatile BYTE P5PUCTL           	_AT_ 0xFE1A;

EXTERN xdata volatile BYTE BPPUCTL           	_AT_ 0xFE1B;
   #define bmSPIPUCTL    bmBIT3 
   
EXTERN xdata volatile BYTE MEMCON           	_AT_ 0xFE1F;
   #define bmMEMCON   0x0          //decided by this FW(After be compiled)
   #define bmASYN     bmBIT7   


//DMA Register  
EXTERN xdata volatile BYTE DMA_CTL                  _AT_ 0xFE40;//0x3090; DMA_GENCTL to DMA_CTL
    #define bmTDMA_START     bmBIT0 
    #define bmDMA_START       bmBIT1 
    #define bmDMA_RWCYC       bmBIT2|bmBIT3 
    #define bmDMA_LATENCY   bmBIT4|bmBIT5 
    #define bmDMA_STLCYC      bmBIT6|bmBIT7 

EXTERN xdata volatile BYTE DMA_S_ADDRL          _AT_ 0xFE42;//0x3093; 
EXTERN xdata volatile BYTE DMA_S_ADDRH          _AT_ 0xFE43;//0x3094;

EXTERN xdata volatile BYTE DMA_D_ADDRL          _AT_ 0xFE44;//0x3096;
EXTERN xdata volatile BYTE DMA_D_ADDRH          _AT_ 0xFE45;//0x3097;  DMA_D_ADDRM to DMA_D_ADDRH

EXTERN xdata volatile BYTE DMA_LENL           	_AT_ 0xFE46;//0x3099; 
EXTERN xdata volatile BYTE DMA_LENH           	_AT_ 0xFE47;//0x309A;

//RNG Register  
EXTERN xdata volatile BYTE RNG_CTL        	_AT_ 0xFE50; 
EXTERN xdata volatile BYTE RNG_INT        	_AT_ 0xFE51;
EXTERN xdata volatile BYTE RNG_INTE       	_AT_ 0xFE52; 
EXTERN xdata volatile BYTE RNG_INDAT    	_AT_ 0xFE53;
EXTERN xdata volatile BYTE RNG_OUTDAT      	_AT_ 0xFE54; 

//KPU Register  
EXTERN xdata volatile BYTE SADDR             _AT_ 0xFE58;
EXTERN xdata volatile BYTE KPU_CTL           _AT_ 0xFE59;

//TDES Register  
EXTERN xdata volatile BYTE TDES_KEY1_0        	_AT_ 0xFE60; 
EXTERN xdata volatile BYTE TDES_KEY1_1        	_AT_ 0xFE61;
EXTERN xdata volatile BYTE TDES_KEY1_2       	_AT_ 0xFE62; 
EXTERN xdata volatile BYTE TDES_KEY1_3      	_AT_ 0xFE63;
EXTERN xdata volatile BYTE TDES_KEY1_4       	_AT_ 0xFE64; 
EXTERN xdata volatile BYTE TDES_KEY1_5       	_AT_ 0xFE65;
EXTERN xdata volatile BYTE TDES_KEY1_6       	_AT_ 0xFE66; 
EXTERN xdata volatile BYTE TDES_KEY1_7       	_AT_ 0xFE67;

EXTERN xdata volatile BYTE TDES_KEY2_0        	_AT_ 0xFE68; 
EXTERN xdata volatile BYTE TDES_KEY2_1        	_AT_ 0xFE69;
EXTERN xdata volatile BYTE TDES_KEY2_2       	_AT_ 0xFE6A; 
EXTERN xdata volatile BYTE TDES_KEY2_3      	_AT_ 0xFE6B;
EXTERN xdata volatile BYTE TDES_KEY2_4       	_AT_ 0xFE6C; 
EXTERN xdata volatile BYTE TDES_KEY2_5       	_AT_ 0xFE6D;
EXTERN xdata volatile BYTE TDES_KEY2_6       	_AT_ 0xFE6E; 
EXTERN xdata volatile BYTE TDES_KEY2_7       	_AT_ 0xFE6F;

EXTERN xdata volatile BYTE TDES_KEY3_0        	_AT_ 0xFE70; 
EXTERN xdata volatile BYTE TDES_KEY3_1        	_AT_ 0xFE71;
EXTERN xdata volatile BYTE TDES_KEY3_2       	_AT_ 0xFE72; 
EXTERN xdata volatile BYTE TDES_KEY3_3      	_AT_ 0xFE73;
EXTERN xdata volatile BYTE TDES_KEY3_4       	_AT_ 0xFE74; 
EXTERN xdata volatile BYTE TDES_KEY3_5       	_AT_ 0xFE75;
EXTERN xdata volatile BYTE TDES_KEY3_6       	_AT_ 0xFE76; 
EXTERN xdata volatile BYTE TDES_KEY3_7       	_AT_ 0xFE77;

EXTERN xdata volatile BYTE TDES_CTL         	_AT_ 0xFE78; 
EXTERN xdata volatile BYTE TDES_DATA       	_AT_ 0xFE79;


//  USB Register  
EXTERN xdata volatile BYTE USBGCTRL       _AT_ 0xFE80;//0x3000; GCTRL to USB GCTRL 
EXTERN xdata volatile BYTE EPINT             	_AT_ 0xFE81;//0x3001; 
EXTERN xdata volatile BYTE EPIE             	_AT_ 0xFE82;//0x3002;
EXTERN xdata volatile BYTE FRAMEH         	_AT_ 0xFE83; 
EXTERN xdata volatile BYTE FRAMEL       	_AT_ 0xFE84;


EXTERN xdata volatile BYTE STINT             	_AT_ 0xFE85;//0x3005; 
EXTERN xdata volatile BYTE STIE             	_AT_ 0xFE86;//0x3006; 
EXTERN xdata volatile BYTE USBFADDR      _AT_ 0xFE87;//0x3007; 
EXTERN xdata volatile BYTE EP0RXTKN       _AT_ 0xFE88;//0x3008; 
EXTERN xdata volatile BYTE EP0RXCS         _AT_ 0xFE89;//0x3009; 
EXTERN xdata volatile BYTE EP0TXCS         _AT_ 0xFE8A;//0x300A; 
EXTERN xdata volatile BYTE EP0RXCNT       _AT_ 0xFE8B;//0x300B; EP0RDCNT to EP0RXCNT
EXTERN xdata volatile BYTE EP0TXCNT        _AT_ 0xFE8C;//0x300C;  EP0TDCNT to EP0TXCNT
EXTERN xdata volatile BYTE EP0RXDAT        _AT_ 0xFE8D;//0x300D; EP0RDATA to EP0RXDAT
EXTERN xdata volatile BYTE EP0TXDAT        _AT_ 0xFE8E;//0x300E; EP0TDATA to EP0TXDAT
EXTERN xdata volatile BYTE EPFIFOCFG       _AT_ 0xFE8F;
    #define bmEPA_FIFO_NUM      bmBIT0
    #define bmEPA_FIFO_SIZE      bmBIT1
    #define bmEPB_FIFO_NUM       bmBIT2
    #define bmEPB_FIFO_SIZE      bmBIT3
    #define bmEPC_FIFO_NUM       bmBIT4
    #define bmEPC_FIFO_SIZE      bmBIT5
    #define bmEPD_FIFO_NUM      bmBIT6
    #define bmEPD_FIFO_SIZE      bmBIT7


EXTERN xdata volatile BYTE EPACTRL          _AT_ 0xFE90;//0x300F; 
EXTERN xdata volatile BYTE EPBCTRL          _AT_ 0xFE91;//0x3010;
EXTERN xdata volatile BYTE EPCCTRL         _AT_ 0xFE92; 
EXTERN xdata volatile BYTE EPDCTRL        	_AT_ 0xFE93;

EXTERN xdata volatile BYTE EPACS             _AT_ 0xFE98;//0x3015;
EXTERN xdata volatile BYTE EPBCS             _AT_ 0xFE99;//0x3016; 
EXTERN xdata volatile BYTE EPCCS             _AT_ 0xFE9A; 
EXTERN xdata volatile BYTE EPDCS        	 _AT_ 0xFE9B;
EXTERN xdata volatile BYTE ERRCNTLIM      _AT_ 0xFE9C;

EXTERN xdata volatile BYTE EPACNT0L       	_AT_ 0xFEA0; 
EXTERN xdata volatile BYTE EPBCNT0L       	_AT_ 0xFEA1;
EXTERN xdata volatile BYTE EPCCNT0L       	_AT_ 0xFEA2; 
EXTERN xdata volatile BYTE EPDCNT0L       	_AT_ 0xFEA3;

EXTERN xdata volatile BYTE EPACNT1L       	_AT_ 0xFEA8; 
EXTERN xdata volatile BYTE EPBCNT1L       	_AT_ 0xFEA9;
EXTERN xdata volatile BYTE EPCCNT1L       	_AT_ 0xFEAA; 
EXTERN xdata volatile BYTE EPDCNT1L       	_AT_ 0xFEAB;

EXTERN xdata volatile BYTE EPACNTH       	_AT_ 0xFEB0; 
EXTERN xdata volatile BYTE EPBCNTH       	_AT_ 0xFEB1;
EXTERN xdata volatile BYTE EPCCNTH       	_AT_ 0xFEB2; 
EXTERN xdata volatile BYTE EPDCNTH       	_AT_ 0xFEB3;

EXTERN xdata volatile BYTE EPAFIFOCS       	_AT_ 0xFEB8; 
EXTERN xdata volatile BYTE EPBFIFOCS       	_AT_ 0xFEB9;
EXTERN xdata volatile BYTE EPCFIFOCS       	_AT_ 0xFEBA; 
EXTERN xdata volatile BYTE EPDFIFOCS       	_AT_ 0xFEBB;
    #define bmFIFO_TOG          bmBIT0
    #define bmFIFO0_FULL       bmBIT2
    #define bmFIFO1_FULL       bmBIT3
    #define bmFIFO_TOG_WE         bmBIT4
    #define bmFIFO0_FULL_WE      bmBIT6
    #define bmFIFO1_FULL_WE      bmBIT7


EXTERN xdata volatile BYTE PHYTEST             	_AT_ 0xFEBF; 
    #define TEST_PKT               bmBIT0
    #define TEST_SE0_NAK       bmBIT1
    #define TEST_J                    bmBIT2
    #define TEST_K                   bmBIT3

//  SPI Register  
EXTERN xdata volatile BYTE SPI_DATA         _AT_ 0xFEC0;
EXTERN xdata volatile BYTE SPI_CTL           _AT_ 0xFEC1;
EXTERN xdata volatile BYTE SPI_ST             _AT_ 0xFEC2;

//I2C Register  
EXTERN xdata volatile BYTE I2C_CTL        	_AT_ 0xFEC8; 
EXTERN xdata volatile BYTE I2C_CLK        	_AT_ 0xFEC9;
EXTERN xdata volatile BYTE I2C_STUS       	_AT_ 0xFECA; 
EXTERN xdata volatile BYTE I2C_SADDR    	_AT_ 0xFECB;
EXTERN xdata volatile BYTE I2C_DBUF       	_AT_ 0xFECC; 
EXTERN xdata volatile BYTE I2C_MABT       	_AT_ 0xFECD;


#undef EXTERN
#undef _AT_  

#define LSB(word)  (BYTE)((WORD)word &0x00FF)
#define MSB(word)  (BYTE)(((WORD)word >> 8) & 0x00FF)
////////////////////////////////////////////////////////////////////////////////
#define USB_BUFF_SIZE   256
void  UsbInit(void);

//void UsbDataWrite(BYTE *Writebuffer, BYTE BufferNo, UINT16 TxDataLen);
//UINT16 UsbDataRead(BYTE *Readbuffer, BYTE IntEvent);

 void InitCPU();
 BOOL DoRNG(DWORD dwInitial,BOOL bfreemode,BOOL bOut64bits,BYTE* out);
 BOOL DoTDes(BYTE* in,BYTE * out ,WORD len ,BYTE  desmode ,BOOL bEncrpty,BYTE* KEY );
  void DoKPU(BOOL bAbove16K,BOOL bGenKey,BYTE saddr ,BYTE *status);


//#endif

#endif
 	

⌨️ 快捷键说明

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