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

📄 uart.h

📁 5416完整例程
💻 H
字号:
/********************************************************************************/
/* UART.H	v1.00																*/
/* 版权(c)	2003-   	北京合众达电子技术有限责任公司							*/
/* 设计者:	段立锋																*/
/********************************************************************************/
#ifndef _UART
#define _UART

#include  "type.h"

/********************************************************************************/
/* 常量定义																		*/
/********************************************************************************/
// UART instance enumeration
typedef enum
{
    UART_A  = 0,
	UART_B  = 1
} UartId, *PUartId;


/*********************************************************************************
*外部设备寄存器及地址                                                           *
*********************************************************************************
*1、外部UART的寄存器,及寄存器内容
**TL16C752B寄存器地址说明:
*UART的寄存器在IO空间的地址读说明*/
#define rhr	  0x0000 /*接收保持寄存器的地址,只读*/
#define thr   0x0000 /*发送保持寄存器的地址,只写*/
#define ier   0x0001 /*中断使能寄存器的地址,读写*/
#define iir   0x0002 /*中断标志寄存器的地址,只读*/
#define fcr   0x0002 /*FIFO控制寄存器的地址,只写*/
#define lcr   0x0003 /*线路控制寄存器的地址,读写*/
#define mcr   0x0004 /*MODEM控制寄存器的地址,读写*/
#define lsr   0x0005 /*线路状态寄存器的地址,只读*/
#define msr   0x0006 /*MODEM状态寄存器的地址,只读*/
#define spr   0x0007 /*暂存寄存器的地址,读写*/
/*复合寻址寄存器地址说明*/
#define dll   0x0000 /*低位除数寄存器的地址,读写*/
#define dlh   0x0001 /*高位除数寄存器的地址,读写*/
#define efr   0x0002 /*增强功能寄存器的地址,读写*/
#define xon1  0x0004
#define xon2  0x0005
#define xoff1 0x0006
#define xoff2 0x0007
#define tcr   0x0006 /*传送寄存器*/
#define tlr   0x0007 /*触发水平寄存器*/
#define frd   0x0007 /*FIFO准备好寄存器*/
/*UART通路地址*/
#define chanel_a 0x0000 /*A通路*/
#define chanel_b 0x0001 /*B通路*/
/*UART参数的设置*/
/*波特率设置*/
#define buad_1k2	0x04E2
#define buad_2k4	0x0271
#define buad_4k8	0x0138
#define buad_9k6	0x009C
#define buad_19k2	0x004E
#define buad_38k4	0x0027
/*数据格式设置*/
#define data_w5     0x0000 /*数据长度为5*/
#define data_w6     0x0001 /*数据长度为6*/
#define data_w7     0x0002 /*数据长度为7*/
#define data_w8     0x0003 /*数据长度为8*/

#define data_s1     0x0000 /*数据停止位为1*/
#define data_s2     0x0004 /*数据停止位为1个半(数据长度为5)或2个*/

#define data_p      0x0008 /*设置较验位*/
#define data_po     0x0000 /*设置奇较验*/
#define data_pe     0x0010 /*设置偶较验*/
#define data_parity 0x0020 /*设置较验位*/
#define data_break  0x0040 /*设置当发送终止时,输出为低*/
#define uart_parity data_p + data_pe 

/*FIFO设置*/
#define fifo_disable 0x0000 /*禁止fifo*/
#define fifo_enable  0x0001 /*使能fifo*/
#define fifo_rreset  0x0002 /*复位接收fifo*/
#define fifo_xreset  0x0004 /*复位发送fifo*/
#define fifo_dma     0x0008 /*设置DMA方式*/
#define fifo_txdip8    0x0000 /*fifo深度为8个*/
#define fifo_txdip16   0x0010 /*fifo深度为16个*/
#define fifo_txdip32   0x0020 /*fifo深度为32个*/
#define fifo_txdip56   0x0030 /*fifo深度为56个*/
#define fifo_rxdip8    0x0000 /*fifo深度为8个*/
#define fifo_rxdip16   0x0040 /*fifo深度为16个*/
#define fifo_rxdip32   0x0080 /*fifo深度为56个*/
#define fifo_rxdip56   0x00b0 /*fifo深度为60个*/

#define UartLoop       0x0010 /*设置自闭环方式*/

/*UART中断设置*/
#define  uartint_rhr   0x0001 /*设置接收中断*/
#define  uartint_thr   0x0002 /*设置发送中断*/
#define  uartint_rls   0x0004 /*设置接收状态中断*/
#define  uartint_msr   0x0008 /*设置MODEM状态中断*/
#define  uart_sleep    0x0010 /*设置接收中断*/
#define  uartint_xoff  0x0020 /*设置xoff中断*/
#define  uartint_rts   0x0040 /*设置rts中断*/
#define  uartint_cts   0x0080 /*设置cts中断*/

#define  uart_enable   0x0008 /*使能UART中断*/
/********************************************************************************/
/* 函数声明																		*/
/********************************************************************************/
/******************************************************************************/
/* uart_open() - 打开相应的异步串口,获得有效的句柄							  */
/*                                                                            */
/* 参数:                                                            		  */
/*     uart:选择要打开的异步串口   								          */
/*                                                                            */
/* 返回值: 对应的有效句柄  					                              */
/*			当返回值为0xFFFF时,为无效句柄                                    */
/*                                                                            */
/******************************************************************************/
HANDLE uart_open(UartId uart);
/********************************************************************************/
/*																				*/
/* 函数定义:uint _uart_write_reg(uint channel, uint reg,uint regdata)   		*/
/* 功    能:串口初始化                											*/
/*																				*/
/* 入口参数:A	  ---- channel:串口A或是串口B									*/
/*          	   (SP+n) ---- 寄存器reg,如果是.far_mode模式则n为2,否则n为1	*/
/*                     ---- 要写入的数据regdata                                 */
/* 出口参数:A	  ---- 读回寄存器数据											*/
/* 资源使用:AR0,B                                                              */
/*																				*/
/********************************************************************************/
unsigned int uart_write_reg(HANDLE channel,unsigned int reg,unsigned int regdata);
/********************************************************************************/
/*																				*/
/* 函数定义:uint _uart_read_reg(uint channel, uint reg)  						*/
/* 功    能:串口初始化                											*/
/*																				*/
/* 入口参数:A	  ---- channel:串口A或是串口B									*/
/*          	   (SP+n) ---- 寄存器reg,如果是.far_mode模式则n为2,否则n为1	*/
/* 出口参数:A	  ---- 读回寄存器数据											*/
/* 资源使用:AR0	       													    */
/*																				*/
/********************************************************************************/
unsigned int uart_read_reg(HANDLE channel, unsigned int reg);
/******************************************************************************/
/* uart_recive() - 串口接收,并设置相应的寄存器默认值  	                      */
/*                                                                            */
/* 参数:                                                            		  */
/*    Channel:	   有效的串口句柄											  */
/*	  ReadLongth:  每次从缓冲区读取的长度                                     */                   
/*	  rec_data:    缓冲区的首址                                               */
/*                                                                            */
/* 返回值   				        				                          */
/*                                                                            */
/******************************************************************************/
int uart_recive(HANDLE Channel, unsigned int *rec_data);
/******************************************************************************/
/* uart_send_sigle() - 串口发送一个数据,并设置相应的寄存器默认值              */
/*                                                                            */
/* 参数:                                                            		  */
/*    Channel:有效的串口句柄												  */ 
/*	  send_data: 要发送的数据                                                 */
/*                                                                            */
/* 返回值   				        				                          */
/*                                                                            */
/******************************************************************************/
unsigned int uart_send_sigle(HANDLE Channel,unsigned int send_data);
/******************************************************************************/
/* uart_send() - 串口发送,并设置相应的寄存器默认值  	                      */
/*                                                                            */
/* 参数:                                                            		  */
/*    Channel:有效的串口句柄												  */
/*	  longth:  缓冲区的长度                                                   */ 
/*	  send_data: 缓冲区的首址                                                 */
/*                                                                            */
/* 返回值   				        				                          */
/*                                                                            */
/******************************************************************************/						
unsigned int uart_send(HANDLE Channel,unsigned int longth,unsigned int *send_data);
/******************************************************************************/
/* uart_setup() - 设置串口通讯的状态

⌨️ 快捷键说明

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