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

📄 xuartns550.h

📁 powerpc405下linux的串口驱动程序
💻 H
📖 第 1 页 / 共 2 页
字号:
/* $Id: xuartns550.h,v 1.1 2006/02/17 22:43:40 moleres Exp $ *//*******************************************************************************       XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"*       AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND*       SOLUTIONS FOR XILINX DEVICES.  BY PROVIDING THIS DESIGN, CODE,*       OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE,*       APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION*       THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT,*       AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE*       FOR YOUR IMPLEMENTATION.  XILINX EXPRESSLY DISCLAIMS ANY*       WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE*       IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR*       REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF*       INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS*       FOR A PARTICULAR PURPOSE.**       (c) Copyright 2002-2005 Xilinx Inc.*       All rights reserved.******************************************************************************//****************************************************************************//**** @file xuartns550.h** This driver supports the following features in the Xilinx 16450/16550* compatible UART.** - Dynamic data format (baud rate, data bits, stop bits, parity)* - Polled mode* - Interrupt driven mode* - Transmit and receive FIFOs (16 bytes each for the 16550)* - Access to the external modem control lines and the two discrete outputs** The only difference between the 16450 and the 16550 is the addition of* transmit and receive FIFOs in the 16550.** <b>Initialization & Configuration</b>** The XUartNs550_Config structure is used by the driver to configure itself. This* configuration structure is typically created by the tool-chain based on HW* build properties.** To support multiple runtime loading and initialization strategies employed* by various operating systems, the driver instance can be initialized in one* of the following ways:**   - XUartNs550_Initialize(InstancePtr, DeviceId) - The driver looks up its own*     configuration structure created by the tool-chain based on an ID provided*     by the tool-chain.**   - XUartNs550_CfgInitialize(InstancePtr, CfgPtr, EffectiveAddr) - Uses a*     configuration structure provided by the caller. If running in a system*     with address translation, the provided virtual memory base address*     replaces the physical address present in the configuration structure.** <b>Baud Rate</b>** The UART has an internal baud rate generator that is clocked at a specified* input clock frequency. Not all baud rates can be generated from some clock* frequencies. The requested baud rate is checked using the provided clock for* the system, and checked against the acceptable error range. An error may be* returned from some functions indicating the baud rate was in error because* it could not be generated.** <b>Interrupts</b>** The device does not have any way to disable the receiver such that the* receive FIFO may contain unwanted data. The FIFOs are not flushed when the* driver is initialized, but a function is provided to allow the user to reset* the FIFOs if desired.** The driver defaults to no interrupts at initialization such that interrupts* must be enabled if desired. An interrupt is generated for any of the following* conditions.** - Transmit FIFO is empty* - Data in the receive FIFO equal to the receive threshold* - Data in the receiver when FIFOs are disabled* - Any receive status error or break condition detected* - Data in the receive FIFO for 4 character times without receiver activity* - A change of a modem signal** The application can control which interrupts are enabled using the SetOptions* function.** In order to use interrupts, it is necessary for the user to connect the driver* interrupt handler, XUartNs550_InterruptHandler(), to the interrupt system of* the application. This function does not save and restore the processor context* such that the user must provide it. A handler must be set for the driver such* that the handler is called when interrupt events occur. The handler is called* from interrupt context and is designed to allow application specific processing* to be performed.** The functions, XUartNs550_Send() and XUartNs550_Recv(), are provided in the* driver to allow data to be sent and received. They are designed to be used in* polled or interrupt modes.** @note** The default configuration for the UART after initialization is:** - 19,200 bps or XPAR_DEFAULT_BAUD_RATE if defined* - 8 data bits* - 1 stop bit* - no parity* - FIFO's are enabled with a receive threshold of 8 bytes** <pre>* MODIFICATION HISTORY:** Ver   Who  Date     Changes* ----- ---- -------- -----------------------------------------------* 1.00a ecm  08/16/01 First release* 1.00b jhl  03/11/02 Repartitioned the driver for smaller files.* 1.01a jvb  12/14/05 I separated dependency on the static config table and*                     xparameters.h from the driver initialization by moving*                     _Initialize and _LookupConfig to _sinit.c. I also added*                     the new _CfgInitialize routine.* </pre>******************************************************************************/#ifndef XUARTNS550_H /* prevent circular inclusions */#define XUARTNS550_H /* by using protection macros */#ifdef __cplusplusextern "C" {#endif/***************************** Include Files ********************************/#include "xbasic_types.h"#include "xstatus.h"#include "xuartns550_l.h"/************************** Constant Definitions ****************************//* The following constants indicate the max and min baud rates and these * numbers are based only on the testing that has been done. The hardware * is capable of other baud rates. */#define XUN_NS16550_MAX_RATE        115200#define XUN_NS16550_MIN_RATE        300/** @name Configuration options * @{ *//** * These constants specify the options that may be set or retrieved * with the driver, each is a unique bit mask such that multiple options * may be specified.  These constants indicate the function of the option * when in the active state. * * <pre> * XUN_OPTION_SET_BREAK         Set a break condition * XUN_OPTION_LOOPBACK          Enable local loopback * XUN_OPTION_DATA_INTR         Enable data interrupts * XUN_OPTION_MODEM_INTR        Enable modem interrupts * XUN_OPTION_FIFOS_ENABLE      Enable FIFOs * XUN_OPTION_RESET_TX_FIFO     Reset the transmit FIFO * XUN_OPTION_RESET_RX_FIFO     Reset the receive FIFO * XUN_OPTION_ASSERT_OUT2       Assert out2 signal * XUN_OPTION_ASSERT_OUT1       Assert out1 signal * XUN_OPTION_ASSERT_RTS        Assert RTS signal * XUN_OPTION_ASSERT_DTR        Assert DTR signal * </pre> */#define XUN_OPTION_SET_BREAK        0x0400#define XUN_OPTION_LOOPBACK         0x0200#define XUN_OPTION_DATA_INTR        0x0100#define XUN_OPTION_MODEM_INTR       0x0080#define XUN_OPTION_FIFOS_ENABLE     0x0040#define XUN_OPTION_RESET_TX_FIFO    0x0020#define XUN_OPTION_RESET_RX_FIFO    0x0010#define XUN_OPTION_ASSERT_OUT2      0x0008#define XUN_OPTION_ASSERT_OUT1      0x0004#define XUN_OPTION_ASSERT_RTS       0x0002#define XUN_OPTION_ASSERT_DTR       0x0001/*@}*//** @name Data format values * @{ *//** * These constants specify the data format that may be set or retrieved * with the driver.  The data format includes the number of data bits, the * number of stop bits and parity. * * <pre> * XUN_FORMAT_8_BITS            8 data bits * XUN_FORMAT_7_BITS            7 data bits * XUN_FORMAT_6_BITS            6 data bits * XUN_FORMAT_5_BITS            5 data bits * XUN_FORMAT_EVEN_PARITY       Even parity * XUN_FORMAT_ODD_PARITY        Odd parity * XUN_FORMAT_NO_PARITY         No parity * XUN_FORMAT_2_STOP_BIT        2 stop bits * XUN_FORMAT_1_STOP_BIT        1 stop bit * </pre> */#define XUN_FORMAT_8_BITS          3#define XUN_FORMAT_7_BITS          2#define XUN_FORMAT_6_BITS          1#define XUN_FORMAT_5_BITS          0#define XUN_FORMAT_EVEN_PARITY     2#define XUN_FORMAT_ODD_PARITY      1#define XUN_FORMAT_NO_PARITY       0#define XUN_FORMAT_2_STOP_BIT      1#define XUN_FORMAT_1_STOP_BIT      0/*@}*//** @name FIFO trigger values * @{ *//* * These constants specify receive FIFO trigger levels which specify * the number of bytes at which a receive data event (interrupt) will occur. * * <pre> * XUN_FIFO_TRIGGER_14          14 byte trigger level * XUN_FIFO_TRIGGER_08           8 byte trigger level * XUN_FIFO_TRIGGER_04           4 byte trigger level * XUN_FIFO_TRIGGER_01           1 byte trigger level * </pre> */#define XUN_FIFO_TRIGGER_14         0xC0#define XUN_FIFO_TRIGGER_08         0x80#define XUN_FIFO_TRIGGER_04         0x40#define XUN_FIFO_TRIGGER_01         0x00/*@}*//** @name Modem status values * @{

⌨️ 快捷键说明

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