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

📄 hdlc.h

📁 s3c4510的开发板snds100的源代码。
💻 H
📖 第 1 页 / 共 2 页
字号:
#define    DRxSTOP         0x04000000            // bit26  
#define    DRxABT          0x08000000            // bit27  
#define    DPLLTM          0x10000000            // bit28  
#define    DPLLOM          0x20000000            // bit29  


// HDLC Interrupt Enable Register (HINTEN)
#define    HDLCIE          0x00000001            // bit0  
#define    TxIE            0x00000002            // bit1  
#define    RxIE            0x00000004            // bit2  
#define    DTxIE           0x00000008            // bit3  
#define    DRxIE           0x00000010            // bit4  
#define    DPLLIE          0x00000020            // bit5  
#define    TxFCIE          0x00000100            // bit8  
#define    TxFAIE          0x00000200            // bit9  
#define    TxCTSIE         0x00000800            // bit11  
#define    TxUIE           0x00001000            // bit12  
#define    RxFAIE          0x00002000            // bit13  
#define    RxFAPIE         0x00004000            // bit14  
#define    RxFDIE          0x00008000            // bit15  
#define    RxDCDIE         0x00020000            // bit17  
#define    RxAERRIE        0x00040000            // bit18  
#define    RxFVIE          0x00080000            // bit19  
#define    RxIDLEIE        0x00100000            // bit20  
#define    RxABIE          0x00200000            // bit21  
#define    RxFERRIE        0x00400000            // bit22  
#define    RxOVIE          0x00800000            // bit23  
#define    DTxSTOPIE       0x01000000            // bit24  
#define    DTxABIE         0x02000000            // bit25  
#define    DRxSTOPIE       0x04000000            // bit26  
#define    DRxABIE         0x08000000            // bit27  
#define    DPLLTMIE        0x10000000            // bit28  
#define    DPLLOMIE        0x20000000            // bit29  

// HDLC Tx Status Structure
typedef struct HdlcTxStatus {
	U32 TxFrameComplete ;
	U32 TxFIFOAvailable ;
	U32 TxLevelOfCTS ;
	U32 TxTransitionOfCTS ;
	U32 TxUnderrun ;
	U32 DMATxStop ;
	U32 DMATxABT ;
} pHdlcTxStatus ;

// HDLC Rx Status Structure
typedef struct HdlcRxStatus {
	U32 RxFIFOAvalable ;
	U32 RxFIFOAddrPresent ;
	U32 RxFlagDetected ;
	U32 RxLevelOfDCD ;
	U32 RxTransitionOfDCD ;
	U32 RxAddressError ;
	U32 RxLastFrameValid ;
	U32 RxIdle ;
	U32 RxAbort ;
	U32 RxFrameError ;
	U32 RxOverrun ;
	U32 DMARxStop ;
	U32 DMARxABT ;
} pHdlcRxStatus ;

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


// HDLC Frame Structure
typedef __packed struct HDLCHeader {
	U8 Address[4] ;
	U8 Control[1] ;
} sHDLCHeader;

typedef __packed struct HDLCFrame {
	sHDLCHeader	Header ;
	U8 		Information[HDLC_MTU-sizeof(sHDLCHeader)] ;
} sHDLCFrame;

// Tx/Rx Buffer descriptor structure
typedef struct BD {
	U32 BufferDataPtr;
	U32 StatusField ;
	U32 LengthField ;
	U32 NextBufferDescriptor ;
} sBufferDescriptor;

typedef struct HDLC_Device {
	U32 HDLC_Port ;	 	// HDLC port number 
	U32 HDLC_Baud ;		// HDLC baudrate
	U32 HDLC_Data_format ;  // HDLC Data format, NRZ,NRZI,FM0,FM1,Menchester
	U32 HDLC_Tx_Mode ;	// HDLC Tx DMA or Interrupt mode
	U32 HDLC_Rx_Mode ;	// HDLC Rx DMA or Interrupt mode
	U32 HDLC_Tx_Output_Clk ;// Tx clock PIN output source, Rx_Clock,BRGOUT1,2,3
				// DPLLOUTT, DPLLOUTR
	U32 HDLC_Tx_Clk ;	// Tx clock source,TxC pin, RxC pin, DPLLOUTT, BRGOUT1,2,3
	U32 HDLC_Rx_Clk ; 	// Rx clock source,TxC pin, RxC pin, DPLLOUTT, BRGOUT1,2,3
	U32 HDLC_Tx_Clk_Pos ;	// Tx clock polarity, only for KS32C5000A
	U32 HDLC_Rx_Clk_Pos ;	// Rx clock polarity, only for KS32C5000A
	U32 HDLC_Station_Addr ;
} HDLC_Device_Entry ;



/* ================================================== *
 *  Declare Function Prototype                        *
 * ================================================== */

/*
 *  HDLC initialize
 */
extern void HdlcInitialize(void) ;
extern int  HdlcPortInit(HDLC_Device_Entry *Device) ;

/*
 * Initialize Tx buffer descriptor area-buffers.
 */
extern void TxBDInitialize(U32 channel) ;
extern void RxBDInitialize(U32 channel) ;

/*
 * HDLC DMA Initialize
 */
extern int HDLC_Rx_init(U32 channel) ;
extern void HDMA_Tx_init(U32 channel, U32 TxDB, int Size) ;


/*
 * HDLC Send frame
 */
extern int SendHdlcFrame(U32 channel, U8 *Data, int Size) ;
extern int WriteDataToFifo(U32 channel) ;
extern void Transmit_Frame(void) ;
extern void Transmit_Multi_Frame(void) ;

/*
 * HDLC Receive frame
 */
extern int ReceiveHdlcFrame(U32 channel) ;
extern int ReadDataFromFifo(U32 channel, U32 bcnt) ;

/*
 *  HDLC Interrupt service routine
 */
extern void HDLCA_isr(void) ;
extern void HDLCB_isr(void) ;

/*
 *  Utility
 */
extern void HDLC_Status(void) ;
extern void PrintHdlcRxFrame(U8 *pFramePtr, U32 Length) ;
extern char *PrintCM(int m) ;

/*
 *  Test Program
 */
extern void HDLCTest(void)  ;
extern void HdlcFrameReceiveTest(void)  ;
extern void HdlcFrameTransmitTest(void)  ;
extern void HdlcLoopbackTest(void) ;
extern int HdlcInternalLoopback(void) ;
extern void HdlcExternalLoopback(U32 channel) ;
extern int HdlcLoopback(U32 channel, int cnt) ;
extern void  RepHdlcLoopback(void) ;
extern void HdlcPingPongTest(void) ;
extern void HdlcPingPongTest_Server(void) ;
extern void HdlcPingPongTest_Client(void) ;
extern void HdlcFrameTx(void) ;
extern void HdlcFrameRx(void) ;
extern void ReceiveAndViewHdlcFrame(void) ;

#endif  /* _HDLC_H */ 

⌨️ 快捷键说明

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