📄 uart.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 + -