📄 xuartns550.h
字号:
*//** * These constants specify the modem status that may be retrieved * from the driver. * * <pre> * XUN_MODEM_DCD_DELTA_MASK DCD signal changed state * XUN_MODEM_DSR_DELTA_MASK DSR signal changed state * XUN_MODEM_CTS_DELTA_MASK CTS signal changed state * XUN_MODEM_RINGING_MASK Ring signal is active * XUN_MODEM_DSR_MASK Current state of DSR signal * XUN_MODEM_CTS_MASK Current state of CTS signal * XUN_MODEM_DCD_MASK Current state of DCD signal * XUN_MODEM_RING_STOP_MASK Ringing has stopped * </pre> */#define XUN_MODEM_DCD_DELTA_MASK 0x80#define XUN_MODEM_DSR_DELTA_MASK 0x02#define XUN_MODEM_CTS_DELTA_MASK 0x01#define XUN_MODEM_RINGING_MASK 0x40#define XUN_MODEM_DSR_MASK 0x20#define XUN_MODEM_CTS_MASK 0x10#define XUN_MODEM_DCD_MASK 0x08#define XUN_MODEM_RING_STOP_MASK 0x04/*@}*//** @name Callback events * @{ *//** * These constants specify the handler events that are passed to * a handler from the driver. These constants are not bit masks such that * only one will be passed at a time to the handler. * * <pre> * XUN_EVENT_RECV_DATA Data has been received * XUN_EVENT_RECV_TIMEOUT A receive timeout occurred * XUN_EVENT_SENT_DATA Data has been sent * XUN_EVENT_RECV_ERROR A receive error was detected * XUN_EVENT_MODEM A change in modem status * </pre> */#define XUN_EVENT_RECV_DATA 1#define XUN_EVENT_RECV_TIMEOUT 2#define XUN_EVENT_SENT_DATA 3#define XUN_EVENT_RECV_ERROR 4#define XUN_EVENT_MODEM 5/*@}*//** @name Error values * @{ *//** * These constants specify the errors that may be retrieved from * the driver using the XUartNs550_GetLastErrors function. All of them are * bit masks, except no error, such that multiple errors may be specified. * * <pre> * XUN_ERROR_BREAK_MASK Break detected * XUN_ERROR_FRAMING_MASK Receive framing error * XUN_ERROR_PARITY_MASK Receive parity error * XUN_ERROR_OVERRUN_MASK Receive overrun error * XUN_ERROR_NONE No error * </pre> */#define XUN_ERROR_BREAK_MASK 0x10#define XUN_ERROR_FRAMING_MASK 0x08#define XUN_ERROR_PARITY_MASK 0x04#define XUN_ERROR_OVERRUN_MASK 0x02#define XUN_ERROR_NONE 0x00/*@}*//**************************** Type Definitions ******************************//** * This typedef contains configuration information for the device. */typedef struct{ Xuint16 DeviceId; /**< Unique ID of device */ Xuint32 BaseAddress; /**< Base address of device (IPIF) */ Xuint32 InputClockHz; /**< Input clock frequency */ Xuint32 DefaultBaudRate; /**< Baud Rate in bps, ie 1200 */} XUartNs550_Config;/* * The following data type is used to manage the buffers that are handled * when sending and receiving data in the interrupt mode. */typedef struct{ Xuint8 *NextBytePtr; unsigned int RequestedBytes; unsigned int RemainingBytes;} XUartNs550Buffer;/** * This data type allows the data format of the device to be set * and retrieved. */typedef struct{ Xuint32 BaudRate; /**< In bps, ie 1200 */ Xuint32 DataBits; /**< Number of data bits */ Xuint32 Parity; /**< Parity */ Xuint8 StopBits; /**< Number of stop bits */} XUartNs550Format;/** * This data type defines a handler which the application must define * when using interrupt mode. The handler will be called from the driver in an * interrupt context to handle application specific processing. * * @param CallBackRef is a callback reference passed in by the upper layer * when setting the handler, and is passed back to the upper layer when * the handler is called. * @param Event contains one of the event constants indicating why the handler * is being called. * @param EventData contains the number of bytes sent or received at the time of * the call for send and receive events and contains the modem status for * modem events. */typedef void (*XUartNs550_Handler)(void *CallBackRef, Xuint32 Event, unsigned int EventData);/** * UART statistics */typedef struct{ Xuint16 TransmitInterrupts; /**< Number of transmit interrupts */ Xuint16 ReceiveInterrupts; /**< Number of receive interrupts */ Xuint16 StatusInterrupts; /**< Number of status interrupts */ Xuint16 ModemInterrupts; /**< Number of modem interrupts */ Xuint16 CharactersTransmitted; /**< Number of characters transmitted */ Xuint16 CharactersReceived; /**< Number of characters received */ Xuint16 ReceiveOverrunErrors; /**< Number of receive overruns */ Xuint16 ReceiveParityErrors; /**< Number of receive parity errors */ Xuint16 ReceiveFramingErrors; /**< Number of receive framing errors */ Xuint16 ReceiveBreakDetected; /**< Number of receive breaks */} XUartNs550Stats;/** * The XUartNs550 driver instance data. The user is required to allocate a * variable of this type for every UART 16550/16450 device in the system. * A pointer to a variable of this type is then passed to the driver API * functions. */typedef struct{ XUartNs550Stats Stats; /* Component Statistics */ Xuint32 BaseAddress; /* Base address of device (IPIF) */ Xuint32 InputClockHz; /* Input clock frequency */ Xuint32 IsReady; /* Device is initialized and ready */ Xuint32 BaudRate; /* current baud rate of hw */ Xuint8 LastErrors; /* the accumulated errors */ XUartNs550Buffer SendBuffer; XUartNs550Buffer ReceiveBuffer; XUartNs550_Handler Handler; void *CallBackRef; /* Callback reference for control handler */} XUartNs550;/***************** Macros (Inline Functions) Definitions ********************//************************** Function Prototypes *****************************//* * Initialization functions in xuartns550_sinit.c */XStatus XUartNs550_Initialize(XUartNs550 *InstancePtr, Xuint16 DeviceId);XUartNs550_Config *XUartNs550_LookupConfig(Xuint16 DeviceId);/* * required functions in xuartns550.c */XStatus XUartNs550_CfgInitialize(XUartNs550 *InstancePtr, XUartNs550_Config *Config, Xuint32 EffectiveAddr);unsigned int XUartNs550_Send(XUartNs550 *InstancePtr, Xuint8 *BufferPtr, unsigned int NumBytes);unsigned int XUartNs550_Recv(XUartNs550 *InstancePtr, Xuint8 *BufferPtr, unsigned int NumBytes);/* * options functions in xuartns550_options.c */XStatus XUartNs550_SetOptions(XUartNs550 *InstancePtr, Xuint16 Options);Xuint16 XUartNs550_GetOptions(XUartNs550 *InstancePtr);XStatus XUartNs550_SetFifoThreshold(XUartNs550 *InstancePtr, Xuint8 TriggerLevel);Xuint8 XUartNs550_GetFifoThreshold(XUartNs550 *InstancePtr);Xboolean XUartNs550_IsSending(XUartNs550 *InstancePtr);Xuint8 XUartNs550_GetLastErrors(XUartNs550 *InstancePtr);Xuint8 XUartNs550_GetModemStatus(XUartNs550 *InstancePtr);/* * data format functions in xuartns550_format.c */XStatus XUartNs550_SetDataFormat(XUartNs550 *InstancePtr, XUartNs550Format *Format);void XUartNs550_GetDataFormat(XUartNs550 *InstancePtr, XUartNs550Format *Format);/* * interrupt functions in xuartns550_intr.c */void XUartNs550_SetHandler(XUartNs550 *InstancePtr, XUartNs550_Handler FuncPtr, void *CallBackRef);void XUartNs550_InterruptHandler(XUartNs550 *InstancePtr);/* * statistics functions in xuartns550_stats.c */void XUartNs550_GetStats(XUartNs550 *InstancePtr, XUartNs550Stats *StatsPtr);void XUartNs550_ClearStats(XUartNs550 *InstancePtr);/* * self-test functions in xuartns550_selftest.c */XStatus XUartNs550_SelfTest(XUartNs550 *InstancePtr);#ifdef __cplusplus}#endif#endif /* end of protection macro */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -