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

📄 hdlc100.h

📁 开源的嵌入式WEB服务器
💻 H
📖 第 1 页 / 共 2 页
字号:
 *  Description : HDMA Channel A Rx initialize
 */

extern void HDMAB_Tx_init(U32 TxDB_B, U32 TxD_Size_B) ;//cjw
/*
 *  Function : HDMAB_Tx_init
 *  Description : HDMA Channel B Tx initialize
 */

extern void HDMAB_Rx_init(void) ;//cjw
/*
 *  Function : HDMAB_Rx_init
 *  Description : HDMA Channel B Rx initialize
 */

extern void HDLCTx_isr(int) ;//cjw
extern void HDLCRx_isr(int) ;//cjw
extern void HDMA_RxA_isr(void) ;
extern void HDMA_RxB_isr(void) ;

extern void HDLCRxA_isr(void) ;
extern void HDLCTxA_isr(void) ;
/*
 *  Function : HDLCA_isr
 *  Description : HDMA Channel A Interrupt Service Routine
 */

extern void HDLCRxB_isr(void) ;
extern void HDLCTxB_isr(void) ;
/*
 *  Function : HDLCB_isr
 *  Description : HDMA Channel B Interrupt Service Routine
 */

/*------------------------------------
 * Function Prototype for HDLClib.c
 *------------------------------------*/
extern void HDLCcpuTxGO(void) ;//cjw
extern void TxDataWrite(U8,int) ;

extern void HDLCARxEnable(void) ;//cjw
/*
 * Function : HDLCARxEnable
 * Description : HDLC Channel A Rx Enable
 */

//extern void HDLCTxGo(int) ;
/*
 * Function : HDLCTxGo
 * Description : HDLC Channel A/B Tx Enable
 */

extern void HDLCBRxEnable(void) ;//cjw
/*
 * Function : HDLCBRxEnable
 * Description : HDLC Channel B Rx Enable
 */

extern void HDLCALoopbackEn(void) ;//cjw
/*
 * Function : HDLCALoopbackEn
 * Description : HDLC Channel A Internal Loopback Test Enable
 */

extern void HDLCALoopbackDis(void) ;//cjw
/*
 * Function : HDLCALoopbackDis
 * Description : HDLC Channel A Internal Loopback Test Disable
 */

extern void HDLCBLoopbackEn(void) ;//cjw
/*
 * Function : HDLCBLoopbackEn
 * Description : HDLC Channel B Internal Loopback Test Enable
 */

extern void HDLCBLoopbackDis(void) ;//cjw
/*
 * Function : HDLCBLoopbackDis
 * Description : HDLC Channel B Internal Loopback Test Disable
 */

extern void TxBD_init(U8,int,int) ;
extern void RxBD_init(U8) ;

extern int GetRxHdlcData_A(U32 IntHdlcStatus) ;//cjw
/* 
 * Function : GetRxHdlcData_A
 * Description : HDLC Channel A Data Receive
 */

extern int GetRxHdlcData_B(U32 IntHdlcStatus) ;//cjw
/* 
 * Function : GetRxHdlcData_B
 * Description : HDLC Channel B Data Receive
 */

extern void PrintHdlcData(U8 *DBPtr, U32 Size) ;//cjw
/*
 * Function : PrintHdlcData
 * Description : Print HDLC Tx/Rx Data 
 */

extern int CompareHdlcLoopbackData(int) ;
/*
 * Function : CompareHdlcLoopbackData
 * Description : Compare Loopback test data
 * Return : Compare Ok or Fail
 */

extern int HdlcInternalLoopback(int,int) ;//cjw
/*
 * Function : HdlcInternalLoopback
 * Description : HDLC Internal Loopback Function
 */

extern int HdlcAExternLoopback(void) ;//cjw
/*
 * Function : HdlcAExternLoopback
 * Description : HDLC Internal Loopback Function
 */

extern int HdlcBExternLoopback(void) ;//cjw
/*
 * Function : HdlcBExternLoopback
 * Description : HDLC Channel B External Loopback Function
 */

extern int HdlcABExternLoopback(void) ;//cjw
/*
 * Function : HdlcA2BExternLoopback
 * Description : HDLC A to B External Loopback Function
 */

extern int HdlcLoopback(int, int ) ;//cjw
/*
 * Function : HdlcLoopback
 * Description : HDLC Channel Loopback Function
 */

//extern int HdlcA2BLoopback(U8 *TxDBA, int tsize, int lcount) ;
/*
 * Function : HdlcA2BLoopback
 * Description : HDLC A to B Loopback Function
 */

//extern int HdlcB2ALoopback(U8 *TxDBB, int tsize, int lcount) ;
/*
 * Function : HdlcB2ALoopback
 * Description : HDLC B to A Loopback Function
 */

extern void RegView(void) ;
extern void HdlcRegView(void) ;
extern void ViewHdlcErrorRpt(void) ;
/* 
 * Function : ViewHdlcErrorRpt
 * Description : View HDLC Error Report and Clear
 */
extern U32 CheckRxStatusHDLC(int,U32);
extern U32 CheckRxData(int,U32);
extern U32 CheckTxStatus(U8);
extern U32 FindFirstBD(U32);
extern U32 GetRxBDData(int,U32);//cjw
extern U32 GetBaudRate(U32);

extern void gVar_Init(void) ;
extern void CPUModeRegSet(void) ;
extern void DMAModeRegSet(void) ;

extern void HdlcTestByOp(void) ;
extern void HdlcInitialize(void) ;
extern void HdlcResetTest(void) ;
extern void HdlcReset(void) ;
extern void HdlcDMAmodeTest(void) ;
extern void HdlcCPUmodeTest(void) ;
extern void HdlcSingleTransfer(int) ;
extern void HdlcMultipleTransfer(int) ;
extern int  S_RxADma(void) ;
extern void PrtRxFrame(int) ;
extern void ShowTxData(int) ;
extern void ClrErrReport(void) ;

extern void S_RxDma(void) ;
extern void CPUTxAGo(void) ;
extern void CPUTxBGo(void) ;
//extern void HdlcTxReset(void) ;
//extern void HdlcRxReset(void) ;
//extern void HdlcDMATxReset(void) ;
extern void HdlcDMARxReset(void) ;
extern void TxBufferInitialize(U8) ;

extern void test(void) ;
extern void CPUOwnerSetFromFisrtRxBD(U32 *) ; 
extern void gVarAddrView(void) ;
extern void TxLen7byte(void) ;
extern U32 CheckRxCPU(void) ;
extern void RxFIFO2DMA(void) ;
extern void HdlcCacheTest(void) ;
extern void UniLength(int) ;
extern void RandomLength(int) ;
extern void Test(int) ;

#ifdef _HDLC100VAR_
#define _HDLC100VAR_

//Global variable
//Buffer Descriptor allocation use array
sBufferDescriptor			sTxBDStart[HDLCPORTNUM][MaxTxBDCount] ;
sBufferDescriptor			sRxBDStart[HDLCPORTNUM][MaxRxBDCount] ;

//HDLC Tx Rx Status
sHTxStatus					gHTxStatus[HDLCPORTNUM];			
sHRxStatus			gHRxStatus[HDLCPORTNUM];

sHDPLLStatus			gHDPLLStatus[HDLCPORTNUM];

//HDMA Rx Error Count
sHDMARxErr			gHDMARxErrCnt[HDLCPORTNUM];

U32							TxBBaseAddr[TxBufferSize] ;
U32							RxBBaseAddr[HDLCPORTNUM][RxBufferSize] ;
U32							RxUserArea[HDLCPORTNUM][UserAreaSize] ;

U32							*gUserArea[HDLCPORTNUM] = { 	
														RxUserArea[HDLCA],
														RxUserArea[HDLCB] } ;
U32							gFrameCount[HDLCPORTNUM];

int							ErrFrame[5000];

volatile 					U32 gPrevTxBDStart[HDLCPORTNUM];//cjw
volatile 					U32 gCTxBDStart[HDLCPORTNUM];//cjw
volatile U32 				gCTxBDEnd[HDLCPORTNUM];
//cjw. gloval variable in CPU operation
int 						gCPUmode = 0 ;
U32							gMaxPacketCnt ;
volatile U32 				gCRxBDStart[HDLCPORTNUM] ;//cjw
volatile U32 				gCRxBDEnd[HDLCPORTNUM] ;
volatile U32 				gHdlcRxDone = 0 ;

// Global Value Set
volatile U32 				gMode    = NRZ|IntCLK|BRGMCLK ; 
volatile U32 				gControl = Tx1WD|Rx1WD|DTxSTSK|DRxSTSK| \
									   RxWA0|TxDTR|BRGEN; 
volatile U32 				gHIntENA = DTxFDIE |  \
				        			   DRxFDIE | DRxNLIE | DRxNOIE | RxMOVIE; 
volatile U32 				gHIntENB = DTxFDIE | //DTxNOIE | DTxABTIE | 
				        			   DRxFDIE | DRxNLIE | DRxNOIE | RxMOVIE; 
sHDMARxErr					sHDMARxErrCnt ;
U32							gMultiTransfer;

// Used by ShowChan(channel) Macro to inform User operating Channel 
char						ch;

#if MODE == CPU
U32 gRxFail = 0;
#endif

#else  

//Global variable
//Buffer Descriptor allocation use array
extern sBufferDescriptor	sTxBDStart[HDLCPORTNUM][MaxTxBDCount] ;
extern sBufferDescriptor	sRxBDStart[HDLCPORTNUM][MaxRxBDCount] ;

//HDLC Tx Rx Status
extern sHTxStatus			gHTxStatus[HDLCPORTNUM];			
extern sHRxStatus			gHRxStatus[HDLCPORTNUM];

extern sHDPLLStatus			gHDPLLStatus[HDLCPORTNUM];

//HDMA Rx Error Count
extern sHDMARxErr			gHDMARxErrCnt[HDLCPORTNUM];

extern U32					TxBBaseAddr[TxBufferSize] ;
extern U32					RxBBaseAddr[HDLCPORTNUM][RxBufferSize] ;
extern U32					RxUserArea[HDLCPORTNUM][UserAreaSize] ;

extern U32					*gUserArea[HDLCPORTNUM] ;
extern U32					gFrameCount[HDLCPORTNUM];

extern int					ErrFrame[5000];

extern volatile U32 		gPrevTxBDStart[HDLCPORTNUM];//cjw
extern volatile U32 		gCTxBDStart[HDLCPORTNUM];//cjw
extern volatile U32 		gCTxBDEnd[HDLCPORTNUM];

//cjw. gloval variable in CPU operation
extern int 					gCPUmode ;
extern U32					gMaxPacketCnt ;
extern U32 					gMode ;
extern U32					gMultiTransfer;

extern volatile U32 		gCRxBDStart[HDLCPORTNUM] ;//cjw
extern volatile U32 		gCRxBDEnd[HDLCPORTNUM] ;
extern volatile U32 		gHdlcRxDone  ;
extern volatile U32 		gControl ; 
extern volatile U32 		gHIntENA ; 
extern volatile U32 		gHIntENB ; 
extern sHDMARxErr			sHDMARxErrCnt ;
// Used by ShowChan(channel) Macro to inform User operating Channel 
extern char						ch;

#if MODE == CPU
extern U32 gRxFail = 0;
#endif

#endif

// HDLC Registers
#define HMODE(channel) 					(VPint(Base_Addr+0x7000 + channel*0x1000))
#define HCON(channel) 					(VPint(Base_Addr+0x7004 + channel*0x1000))
#define HSTAT(channel)  				(VPint(Base_Addr+0x7008 + channel*0x1000))
#define HINTEN(channel) 				(VPint(Base_Addr+0x700c + channel*0x1000))
#define HTXFIFOC(channel) 				(VPint(Base_Addr+0x7010 + channel*0x1000))
#define HTXFIFOT(channel) 				(VPint(Base_Addr+0x7014 + channel*0x1000))
#define HRXFIFO(channel) 				(VPint(Base_Addr+0x7018 + channel*0x1000))
#define HBRGTC(channel)					(VPint(Base_Addr+0x701c + channel*0x1000))
#define HPRMB(channel)	 				(VPint(Base_Addr+0x7020 + channel*0x1000))
#define HSAR0(channel) 					(VPint(Base_Addr+0x7024 + channel*0x1000))
#define HSAR1(channel)	 				(VPint(Base_Addr+0x7028 + channel*0x1000))
#define HSAR2(channel)	 				(VPint(Base_Addr+0x702c + channel*0x1000))
#define HSAR3(channel)	 				(VPint(Base_Addr+0x7030 + channel*0x1000))
#define HMASK(channel) 					(VPint(Base_Addr+0x7034 + channel*0x1000))
#define HDMATXPTR(channel) 				(VPint(Base_Addr+0x7038 + channel*0x1000))
#define HDMARXPTR(channel) 				(VPint(Base_Addr+0x703c + channel*0x1000))
#define HMFLR(channel) 					(VPint(Base_Addr+0x7040 + channel*0x1000))
#define HRBSR(channel) 					(VPint(Base_Addr+0x7044 + channel*0x1000))

// Register Bit Control Macros
#define HdlcReset(channel) 				HCON(channel) |= TxRS|RxRS|DTxRS|DRxRS ;
#define HDLCTxEN(channel) 				HCON(channel) |= TxEN 
#define HDLCRxEN(channel) 				HCON(channel) |= RxEN 
#define HDMATxEN(channel) 				HCON(channel) |= DTxEN
#define HDMARxEN(channel) 				HCON(channel) |= DRxEN
#define HDLCLoopbackEn(channel) 		HCON(channel) |= TxLOOP
#define HDLCLoopbackDis(channel) 		HCON(channel) &= ~TxLOOP
#define DRxSizeSet(channel,size) 		HRBSR(channel) = size
#define MaxFrameLengthSet(channel,size) HMFLR(channel) = size
#define InterCLKEN(channel) 			HCON(channel) |= DPLLEN|BRGEN ;
#define HDLCTxGo(channel) 				HDLCTxEN(channel); HDMATxEN(channel)
#define HdlcTxReset(channel)  			HCON(channel) |= TxRS
#define HdlcRxReset(channel)  			HCON(channel) |= RxRS ;
#define HdlcDMATxReset(channel)			HCON(channel) |= DTxRS ;
#define HdlcDMARxReset(channel)			HCON(channel) |= DRxRS ;

#define ShowChan(channel)				ch=(!channel)?'A':'B' 


#endif  /* _HDLC100_H */ 

⌨️ 快捷键说明

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