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

📄 uart.h

📁 ucos移植在S3C44BOX上的源码
💻 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 + -