📄 xuartns550.h
字号:
/* $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 + -