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

📄 hdlc100.h

📁 开源的嵌入式WEB服务器
💻 H
📖 第 1 页 / 共 2 页
字号:
/****************************************************************/
/* 																*/ 
/*   MODULE:  BDTest/hdlc100.h									*/
/*   DATE:    98/12/01       									*/
/*   PURPOSE: hdlc(high level data link control) header			*/
/*                                                    			*/
/*--------------------------------------------------------------*/
/*      Copyright (C) 1998 Samsung Electronics.      			*/
/*                                                  			*/
/****************************************************************/
#ifndef _HDLC100_H
#define _HDLC100_H

#define CPU					0
#define HDMA				1	
#define MODE				HDMA

#define HDLCA				0
#define HDLCB				1
#define HDLCPORTNUM			2

#define	WORD				4

#define	HdlcReturnOk		1 
#define	HdlcReturnFail 		0
#define	HDLCRx_Ok			1
#define HDLCRx_Fail 		0
#define	HDLCTx_Ok			1
#define HDLCTx_Fail 		0

#define MaxTxBDCount		64
#define MaxRxBDCount		256
#define NonCache			0x4000000

//99.1.3 such 

#define RxBufLength			64	
#define MaxFrameLength		1500	

#define TxBufferSize		0x2000
#define RxBufferSize		0x2000

#define UserAreaSize		0x7000

#define RxBufferDataPreamble	0xDDDDDDD//cjw  	

#define	ExtCLK				TxCTxC|RxCRxC
#define	IntCLK				TxCBO2|RxCBO2

#define	HDLC_BAUDRATE		256000
#define	HDLC_PREAMBLE		0xAA
// Tx Buffer Descriptor structure

// HDLC Mode Register  (HMODE) 
#define MFinFIFO			0x00000001            // bit 0  
#define RxChigh				0x00000004            // bit 2  
#define TxCINV				0x00000008            // bit 3  
#define RxCINV				0x00000010            // bit 4  
#define TxLittle			0x00000020            // bit 5
#define	TxPL1				0x00000000		
#define	TxPL2				0x00000100
#define	TxPL3				0x00000200
#define	TxPL4				0x00000300
#define	TxPL5				0x00000400
#define	TxPL6				0x00000500
#define	TxPL7				0x00000600
#define	TxPL8				0x00000700
#define	NRZ					0x00000000
#define	NRZI				0x00001000
#define	FM0					0x00002000
#define	FM1					0x00003000
#define	Manchester			0x00004000
#define	DPLLTxC				0x00000000
#define	DPLLRxC				0x00010000
#define	DPLLMCLK			0x00020000
#define	DPLLBO1				0x00030000
#define	DPLLBO2				0x00040000
#define	BRGRxC				0x00000000
#define	BRGMCLK				0x00080000
#define	TxCTxC				0x00000000
#define	TxCRxC				0x00100000
#define	TxCPLL				0x00200000
#define	TxCBO1				0x00300000
#define	TxCBO2				0x00400000
#define	RxCTxC				0x00000000
#define	RxCRxC				0x01000000
#define	RxCPLL				0x02000000
#define	RxCBO1				0x03000000
#define	RxCBO2				0x04000000
#define	TxOTxC				0x00000000
#define	TxORxC				0x10000000
#define	TxOBO1				0x20000000
#define	TxOBO2				0x30000000
#define	TxOPLLT				0x40000000
#define	TxOPLLR				0x50000000

//HDLC control register (HCON)
#define	TxRS				0x00000001
#define	RxRS				0x00000002
#define	DTxRS				0x00000004
#define	DRxRS				0x00000008
#define	TxEN				0x00000010
#define	RxEN				0x00000020
#define	DTxEN				0x00000040
#define	DRxEN				0x00000080
#define DPLLEN      		0x00000100              
#define BRGEN       		0x00000200            
#define Tx1WD       		0x00000000            
#define Tx4WD       		0x00000400            
#define Rx1WD       		0x00000000             
#define Rx4WD       		0x00000800             
#define WIDGETMASK     		0x00003000             
#define RxWA0       		0x00000000             
#define RxWA1       		0x00001000             
#define RxWA2       		0x00002000             
#define RxWA3       		0x00003000             
#define DTxSTSK     		0x00004000           
#define DRxSTSK    			0x00008000          
#define DRxMADec    		0x00010000           
#define TxFlag      		0x00020000          
#define TxDFlag     		0x00040000        
#define TxLOOP      		0x00080000       
#define RxECHO      		0x00100000     
#define TxABText    		0x00200000       
#define TxABT       		0x00400000      
#define TxPRMB      		0x00800000      
#define TxDTR       		0x01000000     
#define RxDISCON    		0x02000000    
#define TxNoCRC     		0x04000000   
#define RxNoCRC     		0x08000000   
#define AutoEN      		0x10000000   


// HDLC Status Register  (HSTAT)

#define RxRB1       		0x00000000            // bit3 - bit0  
#define RxRB2       		0x00000001            // bit3 - bit0  
#define RxRB3       		0x00000002            // bit3 - bit0  
#define RxRB4       		0x00000003            // bit3 - bit0  
#define TxFC        		0x00000010            // bit8  
#define TxFA        		0x00000020            // bit9  
#define TxCTS       		0x00000040            // bit10  
#define TxSCTS      		0x00000080            // bit11  
#define TxU         		0x00000100            // bit12  
#define RxFA        		0x00000200            // bit13  
#define RxFD        		0x00000800            // bit15  
#define RxDCD       		0x00001000            // bit16  
#define RxSDCD      		0x00002000            // bit17  
#define RxFV        		0x00004000            // bit19  
#define RxIDLE      		0x00008000            // bit20  
#define RxABT       		0x00010000            // bit21  
#define RxCRCE      		0x00020000            // bit22  
#define RxNO				0x00040000            // bit22  
#define RxOV        		0x00080000            // bit23  
#define RxMOV       		0x00100000            // bit23  
#define DTxABT      		0x00400000            // bit25  
#define RxIERR      		0x00800000            // bit25  
#define DRxFD       		0x01000000            // bit27  
#define DRxNL       		0x02000000            // bit27  
#define DRxNO       		0x04000000            // bit27  
#define DTxFD       		0x08000000            // bit27  
#define DTxNL       		0x10000000            // bit27  
#define DTxNO       		0x20000000            // bit27  
#define DPLLOM      		0x40000000            // bit29  
#define DPLLTM      		0x80000000            // bit28  


// HDLC Interrupt Enable Register (HINTEN)
#define TxFCIE      		0x00000010            // bit1  
#define TxFAIE      		0x00000020            // bit2  
#define TxSCTSIE    		0x00000080            // bit3  
#define TxUIE       		0x00000100            // bit4  
#define RxFAIE      		0x00000200            // bit2  
#define RxFDIE      		0x00000800            // bit2  
#define RxSDCDIE    		0x00002000            // bit2  
#define RxFVIE      		0x00004000            // bit2  
#define RxIDLEIE    		0x00008000            // bit13  
#define RxABTIE     		0x00010000            // bit21  
#define RxCRCEIE    		0x00020000            // bit22  
#define RxNOIE      		0x00040000            // bit24  
#define RxOVIE      		0x00080000            // bit24  
#define RxMOVIE     		0x00100000            // bit24  
#define DTxABTIE    		0x00400000            // bit25  
#define RxIERRIE    		0x00800000            // bit26  
#define DRxFDIE    			0x01000000            // bit27  
#define DRxNLIE     		0x02000000            // bit27  
#define DRxNOIE     		0x04000000            // bit27  
#define DTxFDIE    			0x08000000            // bit27  
#define DTxNLIE     		0x10000000            // bit27  
#define DTxNOIE     		0x20000000            // bit27  
#define DPLLOMIE    		0x40000000            // bit28  
#define DPLLTMIE    		0x80000000            // bit28  


// HDLC Tx Buffer Descriptor (HTxBD)
#define BOwnerShip_CPU  	0x7fffffff            // bit1  
#define BOwnerShip_DMA    	0x80000000           // bit1  
#define Preamble          	0x00000001            // bit1  
#define TxNoCRCM          	0x00000002            // bit1  
#define Little            	0x00000004            // bit1  
#define LastBF	          	0x00000008            // bit1  
#define BDPDec	          	0x00000010            // bit1  
#define BDWA0	          	0x00000000            // bit1  
#define BDWA1	          	0x00000020            // bit1  
#define BDWA2	          	0x00000040            // bit1  
#define BDWA3	          	0x00000060            // bit1  
#define TxComp			  	0x04000000            // bit1  

// HDLC Rx Buffer Descriptor (HRxBD)
#define CDlost			  	0x00000001            // bit1  
#define CRCE			  	0x00000002           // bit1  
#define NonOctet		  	0x00000004           // bit1  
#define OverRun			  	0x00000008           // bit1  
#define DTM				  	0x00000010           // bit1  
#define ABT				  	0x00000020           // bit1  
#define FrameF			  	0x00000040           // bit1  
#define FrameL			  	0x00000080           // bit1  
#define FLV		  		  	0x00000100           // bit1  

// Defines For Function parameter
#define NORMAL				0
#define BUFFERLEN			1
#define NULLLIST			2
#define CPU					0
#define DMA					1
#define HdlcInitialize		HDLC_init

 
// HDLC Tx Status Structure

typedef struct HdlcTxStatus {
	U32 TxFrameComp ;
	U32 TxFIFOAvail ;
	U32 CTSstate ;
	U32 CTSstore ;
	U32 TxUnderrun ;
	U32 DMATxABT ;
	U32 DMATxFD ;
	U32 DMATxNL ;
	U32 DMATxNO ;
} sHTxStatus ;

// HDLC Rx Status Structure
typedef struct HdlcRxStatus {
	U32 RxFIFOAvail;
	U32 RxFlagDetected ;
	U32 DCDstate ;
	U32 DCDstore ;
	U32 RxFValid ;
	U32 RxIdle ;
	U32 RxAbort ;
	U32 RxCRCErr ;
	U32 RxNonOctet ;
	U32 RxOverrun ;
	U32 DMARxMOV ;
	U32 RxInterErr ;
	U32 DMARxFD ;
	U32 DMARxNL ;
	U32 DMARxNO ;
	U32 DMARxABT ;
} sHRxStatus ;

// HDLC DPLL Status Structure
typedef struct HdlcDPLLStatus {
	U32 DPLLOneClkMiss ;
	U32 DPLLTwoClkMiss ;
} sHDPLLStatus ;

// Tx/Rx Buffer descriptor structure
// (With Previous Descriptor)
typedef struct BD {
	U32 BufferDataPtr;
	U32 Reserved;
	U32 StatusLength;
	struct BD *NextBD ;
	struct BD *PrevBD ;
} sBufferDescriptor;

// HDLC Frame Structure
typedef struct HDLCFrame {
	U8 Address[4] ;
	U8 Control ;
	U8 *Information ;
} sHDLCFrame;

// HDMA Tx Structure
typedef struct HDMATxStatus {
	U32 TxCompBD ;
} sHDMATxStatus ;

// HDMA Rx Structure
typedef struct HDMARxErr {
	U32 CDlostBD ;
	U32 CRCEBD ;
	U32 NonOctetBD ;
	U32 OverRunBD ;
	U32 DTMBD ;
	U32 ABTBD ;
	U32 FrameFBD ;
	U32 FrameLBD ;
	U32 FLVBD ;
} sHDMARxErr ;


/*------------------------------------
 * Function Prototype for HDLC.c
 *------------------------------------*/
extern void HDLCTest(void)  ;
/*
 * Function : HDLCTest
 * Description : HDLC Test Main Function
 */

extern void HdlcLoopbackTest(void) ;
/*
 * Function : HdlcLoopbackTest
 * Description : HDLC Loopback Test Function
 */

extern void HdlcFrameTx(void) ;
/*
 * Function : HdlcFrameTx
 * Description : HDLC Frame Transfer
 */

/*------------------------------------
 * Function Prototype for HDLCinit.c
 *------------------------------------*/
extern void RxBDSizeSet(int, int) ;
extern void AddressSet(U8) ;

extern void HDLCA_init(void) ;//cjw
/*
 *  Function : HDLCA_init
 *  Description : HDLC Channel A controller initialize
 */

extern void HDLCB_init(void) ;//cjw
/*
 *  Function : HDLCB_init
 *  Description : HDLC Channel B controller initialize
 */

extern void HDMAA_Tx_init(U32 TxDB_A, U32 TxD_Size_A) ;//cjw
/*
 *  Function : HDMAA_Tx_init
 *  Description : HDMA Channel A Tx initialize
 */

extern void HDMAA_Rx_init(void) ;//cjw
/*
 *  Function : HDMAA_Rx_init

⌨️ 快捷键说明

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