📄 uart.h
字号:
/**************************************************************************************************
*
* 作者: 胡翌博,浙江大学信电系电路与系统2001研
*
* 文件名:uart.h
*
* 版本: 1.1
*
* 功能描述:该文件是uartDrv.c的头文件。
*
* Import文件:
*
* Export文件:no
*
* 版本更迭:
* 日期 版本号 作者 备注
* 07-15-2003 1.0 胡翌博 --实验成功
* 07-27-2003 1.1 胡翌博 --s3c4510b.h更名为s3c4510bDef.h,修改相应的include语句
***************************************************************************************************/
/**************************************************************************************************
register define
*************************************************************************************************/
#ifndef __INC_UART_H
#define __INC_UART_H
#include "typDef.h"
#include "s3c4510bDef.h"
/**************************************************************************************************
* 波特率的定义
*************************************************************************************************/
#define ARM_BAUD_MIN 1200
#define ARM_BAUD_MAX 460860
#define ARM_DEFAULT_BAUD 38400
/**************************************************************************************************
* 行控制寄存器(ULCON0/1)参数的定义
*************************************************************************************************/
#define PARITY_NONE 0x00 /* 无奇偶校验*/
#define PARITY_ODD 0x20 /* 奇校验*/
#define PARITY_EVEN 0x28 /* 偶校验*/
#define ONE_STOP 0x00 /* 1位停止位*/
#define WORD_LEN 0x03 /* 收发数据长度为8比特*/
#define INT_CLK 0x00 /* 采用内部系统时钟 */
#define EXT_CLK 0x40 /* 采用外部时钟 */
/**************************************************************************************************
* UART收发控制寄存器(UCON0/1)参数定义
*************************************************************************************************/
#define UCON_RX 0x01 /* 接收模式为中断*/
#define UCON_STAT_EN 0x04 /* 接收状态中断使能*/
#define UCON_TX 0x08 /* 发送模式为中断*/
#define UCON_TX_DIS 0x01 /* ?发送中断被禁止?*/
#define UCON_DSR 0x20 /* DSR(Data Set Ready)信号使能*/
#define UCON_BREAK 0x40 /* 发送终止使能*/
#define UCON_RX_TX_RESET 0xe4 /* Rx and Tx Reset */
/**************************************************************************************************
* 收发状态寄存器(USTAT0/1)参数定义
*************************************************************************************************/
#define USTAT_DTR_LOW 0x10 /* DTR Enable */
#define USTAT_DTR_HIGH 0x00 /* DTR Disable*/
#define USTAT_TX_READY 0x40 /* Transmitter Ready for another char */
#define USTAT_RX_AVAIL 0x20 /* Character has arrived*/
#define USTAT_OVER_ERR 0x01 /* Over Run Error*/
#define USTAT_PAR_ERR 0x02 /* Parity Error*/
#define USTAT_FRAME_ERR 0x04 /* Frame Error*/
#define USTAT_RX_READY 0x20 /* Receive Data Buffer*/
/**************************************************************************************************
* 采用内部25MHz时钟源时UART的波特率分频常数值
*************************************************************************************************/
#define ARM_CNT_1200 (1301<<4) /* Baud_Rate 1200*/
#define ARM_CNT_2400 (650<<4) /* Baud_Rate 2400*/
#define ARM_CNT_4800 (324<<4) /* Baud_Rate 4800*/
#define ARM_CNT_9600 (162<<4) /* Baud_Rate 9600*/
#define ARM_CNT_19200 (80<<4) /* Baud_Rate 19200*/
#define ARM_CNT_38400 (40<<4) /* Baud_Rate 38400*/
#define ARM_CNT_57600 (26<<4) /* Baud_Rate 57600*/
#define ARM_CNT_115200 (13<<4) /* Baud_Rate 115200*/
#define ARM_CNT_230400 (6<<4) /* Baud_Rate 230400*/
#define ARM_CNT_460800 (2<<4) /* Baud_Rate 460800*/
#define ARM_CNT1_VAL 0x00 /* Baud Rate Divisor Value*/
#define GET_BAUDRATE 0x01
#define SET_BAUDRATE 0x02
/**************************************************************************************************
* UART专用功能寄存器地址的定义
*************************************************************************************************/
#define ULCON0 (ASIC_BASE+0xD000)
#define ULCON1 (ASIC_BASE+0xE000)
#define UCON0 (ASIC_BASE+0xD004)
#define UCON1 (ASIC_BASE+0xE004)
#define USTAT0 (ASIC_BASE+0xD008)
#define USTAT1 (ASIC_BASE+0xE008)
#define UTXBUF0 (ASIC_BASE+0xD00C)
#define UTXBUF1 (ASIC_BASE+0xE00C)
#define URXBUF0 (ASIC_BASE+0xD010)
#define URXBUF1 (ASIC_BASE+0xE010)
#define UBRDIV0 (ASIC_BASE+0xD014)
#define UBRDIV1 (ASIC_BASE+0xE014)
#define BRDCNT0 (ASIC_BASE+0xD018)
#define BRDCNT1 (ASIC_BASE+0xE018)
#define BRDCLK0 (ASIC_BASE+0xD01C)
#define BRDCLK1 (ASIC_BASE+0xE01C)
#define UART_IRQ_MODE 0
#define UART_POLL_MODE 1
/**************************************************************************************************
* typedefs
*************************************************************************************************/
typedef struct
{
// register addresses
volatile UINT32 *lineCtrReg; /* UART line control register */
volatile UINT32 *chanCtrReg; /* UART control register */
volatile UINT32 *statusReg; /* UART status register*/
volatile UINT32 *sendBufReg; /* UART transmit buffer register*/
volatile UINT32 *recvBufReg; /* UART receive buffer register */
volatile UINT32 *baudDivReg; /* UART baud rate divisor register*/
volatile UINT32 *baudCountReg; /* UART0 baud rate count register */
volatile UINT32 *baudMonReg; /*UART0 baud rate clock monitor*/
int channel;
BOOL opened;
int workMode; /* current mode (interrupt or poll) */
int baudFreq; /* input clock frequency */
int options; /* Hardware options */
}UART_DEV;
#endif //__INC_UART_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -