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

📄 uart.h

📁 samsung 最新芯片2450 的测试程序.
💻 H
字号:
#ifndef __UART_H__
#define __UART_H__



#define UART0_REG ( UART_REGS *)UART_REG_BASE  // Uart 0 register base address
#define UART1_REG ( UART_REGS *)(UART_REG_BASE+UART_REG_OFFSET)
#define UART2_REG ( UART_REGS *)(UART_REG_BASE+UART_REG_OFFSET*2) 
#define UART3_REG ( UART_REGS *)(UART_REG_BASE+UART_REG_OFFSET*3) 

#define UART_TXBUF (_NONCACHE_STARTADDRESS )
#define UART_RXBUF (_NONCACHE_STARTADDRESS + 0x1000000)

#define UART_BUF (_NONCACHE_STARTADDRESS + 0x10000)
#define FIFO_DEBUG_BUF (_NONCACHE_STARTADDRESS + 0x11000)

#define TX_FIFO_RESET	(1<<2)
#define RX_FIFO_RESET	(1<<1)
#define TX_INT_TYPE(Bit)		((Bit)<<9) // 0:pulse 1:level
#define RX_INT_TYPE(Bit)		((Bit)<<8) // 0:pulse 1:level


#define RX_TIMEOUT_EN	(1<<7) // 0:disable 1:enable, disable for FIFO test
#define RX_ERR_INT_EN	(1<<6) // 0:disable 1:enable
#define RTS_ACTIVE		(1) // In normal mode, nRTS signal  0:low, 1:High

//2460 -> 2443 porting
#define BIT_UART_ERROR		(1<<2)
#define BIT_UART_TXD		(1<<1)
#define BIT_UART_RXD		(1)
#define BIT_UART_DUPLEX0		(1<<SRCPNDOFFSETDUPLEX0)
#define BIT_UART_DUPLEX1		(1<<SRCPNDOFFSETDUPLEX1)
#define SENDBREAK			0x99

#define UART_DUPLEX0	0
#define UART_DUPLEX1	1
//--------------------------------------------------------------

//for 2443 code
#define BIT_UART			(1<<SRCPNDOFFSET)


#define INT_MODE	0
#define DMA_MODE 	1

#define DMA_BUF_LEN 8  // for rx
#define TX_END_CHAR	NULL
#define RX_END_CHAR	'\r'




//Debugging Only
#define		STOPHERE		while(1)
#define		Msg(message)	if(1)printf(message)
#define		SetBitFReg(rReg, uLenOfBit, uVal, uShiftWidth)		rReg = ((rReg  & ~((0xFFFFFFFF >>(32-uLenOfBit) ) << uShiftWidth)) | (uVal <<uShiftWidth))	

#define		PrintBits(strB, a)		printf("\n[%s : 0x%x]\n31    27    23    19    15    11    07    03   ", strB, (a));\
							                  printf("\n|     |     |     |     |     |     |     |      ");\
										printf("\n%s%s%s%s%s%s%s%s",\
										BitTable[((a) & 0xF0000000)>>28], BitTable[((a) & 0xF000000)>>24],BitTable[((a) & 0xF00000)>>20],\
										BitTable[((a) & 0xF0000)>>16],BitTable[((a) & 0xF000)>>12],BitTable[((a) & 0xF00)>>8],\
										BitTable[((a) & 0xF0)>>4],	BitTable[((a) & 0xF)])
		   
#define		TRUE		1
#define		FALSE		0
#define		BOOL		unsigned int




typedef struct tag_UART_CON
{
	unsigned int iBaudrate;
	unsigned char fSelUartIrda; // 0 : Uart mode 1: IrDA mode
	unsigned char fLoopTest;  // UCON[5]  (0 : normal, 1 : LoopBack)
	unsigned char fAfc;		//AFC mode - 0:disable, 1:enable
	unsigned char fEnableFifo; // Fifo -0 : disable 1: enable
	
	unsigned char cOpClock; 	// 0,2:PCLK, 1:UEXTCLK, 3:EPLL
	unsigned char cDataBit; 	// 0:5bit, 1:6bit, 2:7bit, 3:8bit
	unsigned char cParityBit; 	// 0:no parity, 1:odd, 2:even, 3:forced 1, 4:forced 0
	unsigned char cStopBit; 	// 0:one stopbit, 1:two stopbit
	unsigned char cTxMode; 	// 0:disable, 1:interrupt or polling, 2:DMA0, 3:DMA1
	
	unsigned char cTxTrig; 	// 0:empty, 1:16, 2:32, 3:48 (byte)
	unsigned char cRxMode; 	// 0:disable, 1:interrupt or polling, 2:DMA0, 3:DMA1
	unsigned char cRxTrig; 	// 0:1, 1:8, 2:16, 3:32 (byte)
	unsigned char cRtsTrig; 	// 0:63, 1:56, 2:48, 3:48, 4:40, 5:32, 6:24, 7:16, 8:8 (byte)
	unsigned char cSendBreakSignal;  // ULCON[4]  (0 : normal, 1 : Send Break Signal)
	
	//additional information
	unsigned char cTxIntType;  //0: pulse, 1: level
	unsigned char cRxIntType;  //0: pulse, 1: level
	bool 		  bTxPolling;  //0: interrupt 1: polling.
	bool 		  bRxPolling;  //0: interrupt 1: polling.
	bool			  bRXTimeOuten;	//0: disable 1: enable
	
	bool			  bRXErrorInten;	//0: disable 1: enable
	unsigned char cDmaRxDMD_HS;//0: demand 1: handshake
	unsigned char cDmaRxTSZ;		//0: single  1: burst
	unsigned char cDmaTxDMD_HS;	//0: demand 1: handshake
	unsigned char cDmaTxTSZ;		//0: single  1: burst	
} UART_CON;


typedef struct utagDMA
{
    volatile U32 DISRC;	    //0x0
    volatile U32 DISRCC;    //0x4
    volatile U32 DIDST;	    //0x8
    volatile U32 DIDSTC;    //0xc
    volatile U32 DCON;	    //0x10
    volatile U32 DSTAT;	    //0x14
    volatile U32 DCSRC;	    //0x18
    volatile U32 DCDST;	    //0x1c
    volatile U32 DMASKTRIG; //0x20
    volatile U32 DMAREQSEL; //0x24
}uDMA;


#ifdef __cplusplus
extern "C" {
#endif


//Root Test function
void Test_UART(void);


#ifdef __cplusplus
}
#endif


#endif /*__UART_H__*/

⌨️ 快捷键说明

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