789 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			789 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * @brief LPC13xx UART chip driver
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @note
							 | 
						||
| 
								 | 
							
								 * Copyright(C) NXP Semiconductors, 2012
							 | 
						||
| 
								 | 
							
								 * All rights reserved.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @par
							 | 
						||
| 
								 | 
							
								 * Software that is described herein is for illustrative purposes only
							 | 
						||
| 
								 | 
							
								 * which provides customers with programming information regarding the
							 | 
						||
| 
								 | 
							
								 * LPC products.  This software is supplied "AS IS" without any warranties of
							 | 
						||
| 
								 | 
							
								 * any kind, and NXP Semiconductors and its licensor disclaim any and
							 | 
						||
| 
								 | 
							
								 * all warranties, express or implied, including all implied warranties of
							 | 
						||
| 
								 | 
							
								 * merchantability, fitness for a particular purpose and non-infringement of
							 | 
						||
| 
								 | 
							
								 * intellectual property rights.  NXP Semiconductors assumes no responsibility
							 | 
						||
| 
								 | 
							
								 * or liability for the use of the software, conveys no license or rights under any
							 | 
						||
| 
								 | 
							
								 * patent, copyright, mask work right, or any other intellectual property rights in
							 | 
						||
| 
								 | 
							
								 * or to any products. NXP Semiconductors reserves the right to make changes
							 | 
						||
| 
								 | 
							
								 * in the software without notification. NXP Semiconductors also makes no
							 | 
						||
| 
								 | 
							
								 * representation or warranty that such application will be suitable for the
							 | 
						||
| 
								 | 
							
								 * specified use without further testing or modification.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @par
							 | 
						||
| 
								 | 
							
								 * Permission to use, copy, modify, and distribute this software and its
							 | 
						||
| 
								 | 
							
								 * documentation is hereby granted, under NXP Semiconductors' and its
							 | 
						||
| 
								 | 
							
								 * licensor's relevant copyrights in the software, without fee, provided that it
							 | 
						||
| 
								 | 
							
								 * is used in conjunction with NXP Semiconductors microcontrollers.  This
							 | 
						||
| 
								 | 
							
								 * copyright, permission, and disclaimer notice must appear in all copies of
							 | 
						||
| 
								 | 
							
								 * this code.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef __UART_13XX_H_
							 | 
						||
| 
								 | 
							
								#define __UART_13XX_H_
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "ring_buffer.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef __cplusplus
							 | 
						||
| 
								 | 
							
								extern "C" {
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** @defgroup UART_13XX CHIP: LPC13xx UART driver
							 | 
						||
| 
								 | 
							
								 * @ingroup CHIP_13XX_Drivers
							 | 
						||
| 
								 | 
							
								 * @{
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief USART register block structure
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								typedef struct {					/*!< USARTn Structure       */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									union {
							 | 
						||
| 
								 | 
							
										__IO uint32_t  DLL;			/*!< Divisor Latch LSB. Least significant byte of the baud rate divisor value. The full divisor is used to generate a baud rate from the fractional rate divider (DLAB = 1). */
							 | 
						||
| 
								 | 
							
										__O  uint32_t  THR;			/*!< Transmit Holding Register. The next character to be transmitted is written here (DLAB = 0). */
							 | 
						||
| 
								 | 
							
										__I  uint32_t  RBR;			/*!< Receiver Buffer Register. Contains the next received character to be read (DLAB = 0). */
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									union {
							 | 
						||
| 
								 | 
							
										__IO uint32_t IER;			/*!< Interrupt Enable Register. Contains individual interrupt enable bits for the 7 potential UART interrupts (DLAB = 0). */
							 | 
						||
| 
								 | 
							
										__IO uint32_t DLM;			/*!< Divisor Latch MSB. Most significant byte of the baud rate divisor value. The full divisor is used to generate a baud rate from the fractional rate divider (DLAB = 1). */
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									union {
							 | 
						||
| 
								 | 
							
										__O  uint32_t FCR;			/*!< FIFO Control Register. Controls UART FIFO usage and modes. */
							 | 
						||
| 
								 | 
							
										__I  uint32_t IIR;			/*!< Interrupt ID Register. Identifies which interrupt(s) are pending. */
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									__IO uint32_t LCR;				/*!< Line Control Register. Contains controls for frame formatting and break generation. */
							 | 
						||
| 
								 | 
							
									__IO uint32_t MCR;				/*!< Modem Control Register. Only present on USART ports with full modem support. */
							 | 
						||
| 
								 | 
							
									__I  uint32_t LSR;				/*!< Line Status Register. Contains flags for transmit and receive status, including line errors. */
							 | 
						||
| 
								 | 
							
									__I  uint32_t MSR;				/*!< Modem Status Register. Only present on USART ports with full modem support. */
							 | 
						||
| 
								 | 
							
									__IO uint32_t SCR;				/*!< Scratch Pad Register. Eight-bit temporary storage for software. */
							 | 
						||
| 
								 | 
							
									__IO uint32_t ACR;				/*!< Auto-baud Control Register. Contains controls for the auto-baud feature. */
							 | 
						||
| 
								 | 
							
									__IO uint32_t ICR;				/*!< IrDA control register (not all UARTS) */
							 | 
						||
| 
								 | 
							
									__IO uint32_t FDR;				/*!< Fractional Divider Register. Generates a clock input for the baud rate divider. */
							 | 
						||
| 
								 | 
							
									__IO uint32_t OSR;				/*!< Oversampling Register. Controls the degree of oversampling during each bit time. Only on some UARTS. */
							 | 
						||
| 
								 | 
							
									__IO uint32_t TER1;				/*!< Transmit Enable Register. Turns off USART transmitter for use with software flow control. */
							 | 
						||
| 
								 | 
							
									uint32_t  RESERVED0[3];
							 | 
						||
| 
								 | 
							
								    __IO uint32_t HDEN;				/*!< Half-duplex enable Register- only on some UARTs */
							 | 
						||
| 
								 | 
							
									__I  uint32_t RESERVED1[1];
							 | 
						||
| 
								 | 
							
									__IO uint32_t SCICTRL;			/*!< Smart card interface control register- only on some UARTs */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									__IO uint32_t RS485CTRL;		/*!< RS-485/EIA-485 Control. Contains controls to configure various aspects of RS-485/EIA-485 modes. */
							 | 
						||
| 
								 | 
							
									__IO uint32_t RS485ADRMATCH;	/*!< RS-485/EIA-485 address match. Contains the address match value for RS-485/EIA-485 mode. */
							 | 
						||
| 
								 | 
							
									__IO uint32_t RS485DLY;			/*!< RS-485/EIA-485 direction control delay. */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									union {
							 | 
						||
| 
								 | 
							
										__IO uint32_t SYNCCTRL;		/*!< Synchronous mode control register. Only on USARTs. */
							 | 
						||
| 
								 | 
							
										__I  uint32_t FIFOLVL;		/*!< FIFO Level register. Provides the current fill levels of the transmit and receive FIFOs. */
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									__IO uint32_t TER2;				/*!< Transmit Enable Register. Only on LPC177X_8X UART4 and LPC18XX/43XX USART0/2/3. */
							 | 
						||
| 
								 | 
							
								} LPC_USART_T;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief Macro defines for UART Receive Buffer register
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define UART_RBR_MASKBIT    (0xFF)		        /*!< UART Received Buffer mask bit (8 bits) */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief Macro defines for UART Divisor Latch LSB register
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define UART_LOAD_DLL(div)  ((div) & 0xFF)		/*!< Macro for loading LSB of divisor */
							 | 
						||
| 
								 | 
							
								#define UART_DLL_MASKBIT    (0xFF)	            /*!< Divisor latch LSB bit mask */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief Macro defines for UART Divisor Latch MSB register
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define UART_LOAD_DLM(div)  (((div) >> 8) & 0xFF)	/*!< Macro for loading MSB of divisors */
							 | 
						||
| 
								 | 
							
								#define UART_DLM_MASKBIT    (0xFF)		            /*!< Divisor latch MSB bit mask */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief Macro defines for UART Interrupt Enable Register
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define UART_IER_RBRINT      (1 << 0)	/*!< RBR Interrupt enable */
							 | 
						||
| 
								 | 
							
								#define UART_IER_THREINT     (1 << 1)	/*!< THR Interrupt enable */
							 | 
						||
| 
								 | 
							
								#define UART_IER_RLSINT      (1 << 2)	/*!< RX line status interrupt enable */
							 | 
						||
| 
								 | 
							
								#define UART_IER_MSINT       (1 << 3)	/*!< Modem status interrupt enable - valid for 11xx, 17xx/40xx UART1, 18xx/43xx UART1  only */
							 | 
						||
| 
								 | 
							
								#define UART_IER_CTSINT      (1 << 7)	/*!< CTS signal transition interrupt enable - valid for 17xx/40xx UART1, 18xx/43xx UART1 only */
							 | 
						||
| 
								 | 
							
								#define UART_IER_ABEOINT     (1 << 8)	/*!< Enables the end of auto-baud interrupt */
							 | 
						||
| 
								 | 
							
								#define UART_IER_ABTOINT     (1 << 9)	/*!< Enables the auto-baud time-out interrupt */
							 | 
						||
| 
								 | 
							
								#define UART_IER_BITMASK     (0x307)	/*!< UART interrupt enable register bit mask  - valid for 13xx, 17xx/40xx UART0/2/3, 18xx/43xx UART0/2/3 only*/
							 | 
						||
| 
								 | 
							
								#define UART1_IER_BITMASK    (0x30F)	/*!< UART1 interrupt enable register bit mask - valid for 11xx only */
							 | 
						||
| 
								 | 
							
								#define UART2_IER_BITMASK    (0x38F)	/*!< UART2 interrupt enable register bit mask - valid for 17xx/40xx UART1, 18xx/43xx UART1 only */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief Macro defines for UART Interrupt Identification Register
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define UART_IIR_INTSTAT_PEND   (1 << 0)	/*!< Interrupt pending status - Active low */
							 | 
						||
| 
								 | 
							
								#define UART_IIR_FIFO_EN        (3 << 6)	/*!< These bits are equivalent to FCR[0] */
							 | 
						||
| 
								 | 
							
								#define UART_IIR_ABEO_INT       (1 << 8)	/*!< End of auto-baud interrupt */
							 | 
						||
| 
								 | 
							
								#define UART_IIR_ABTO_INT       (1 << 9)	/*!< Auto-baud time-out interrupt */
							 | 
						||
| 
								 | 
							
								#define UART_IIR_BITMASK        (0x3CF)		/*!< UART interrupt identification register bit mask */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Interrupt ID bit definitions */
							 | 
						||
| 
								 | 
							
								#define UART_IIR_INTID_MASK     (7 << 1)	/*!< Interrupt identification: Interrupt ID mask */
							 | 
						||
| 
								 | 
							
								#define UART_IIR_INTID_RLS      (3 << 1)	/*!< Interrupt identification: Receive line interrupt */
							 | 
						||
| 
								 | 
							
								#define UART_IIR_INTID_RDA      (2 << 1)	/*!< Interrupt identification: Receive data available interrupt */
							 | 
						||
| 
								 | 
							
								#define UART_IIR_INTID_CTI      (6 << 1)	/*!< Interrupt identification: Character time-out indicator interrupt */
							 | 
						||
| 
								 | 
							
								#define UART_IIR_INTID_THRE     (1 << 1)	/*!< Interrupt identification: THRE interrupt */
							 | 
						||
| 
								 | 
							
								#define UART_IIR_INTID_MODEM    (0 << 1)	/*!< Interrupt identification: Modem interrupt */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief Macro defines for UART FIFO Control Register
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define UART_FCR_FIFO_EN        (1 << 0)	/*!< UART FIFO enable */
							 | 
						||
| 
								 | 
							
								#define UART_FCR_RX_RS          (1 << 1)	/*!< UART RX FIFO reset */
							 | 
						||
| 
								 | 
							
								#define UART_FCR_TX_RS          (1 << 2)	/*!< UART TX FIFO reset */
							 | 
						||
| 
								 | 
							
								#define UART_FCR_DMAMODE_SEL    (1 << 3)	/*!< UART DMA mode selection - valid for 17xx/40xx, 18xx/43xx only */
							 | 
						||
| 
								 | 
							
								#define UART_FCR_BITMASK        (0xCF)		/*!< UART FIFO control bit mask */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define UART_TX_FIFO_SIZE       (16)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* FIFO trigger level bit definitions */
							 | 
						||
| 
								 | 
							
								#define UART_FCR_TRG_LEV0       (0)			/*!< UART FIFO trigger level 0: 1 character */
							 | 
						||
| 
								 | 
							
								#define UART_FCR_TRG_LEV1       (1 << 6)	/*!< UART FIFO trigger level 1: 4 character */
							 | 
						||
| 
								 | 
							
								#define UART_FCR_TRG_LEV2       (2 << 6)	/*!< UART FIFO trigger level 2: 8 character */
							 | 
						||
| 
								 | 
							
								#define UART_FCR_TRG_LEV3       (3 << 6)	/*!< UART FIFO trigger level 3: 14 character */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief Macro defines for UART Line Control Register
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								/* UART word length select bit definitions */
							 | 
						||
| 
								 | 
							
								#define UART_LCR_WLEN_MASK      (3 << 0)		/*!< UART word length select bit mask */
							 | 
						||
| 
								 | 
							
								#define UART_LCR_WLEN5          (0 << 0)		/*!< UART word length select: 5 bit data mode */
							 | 
						||
| 
								 | 
							
								#define UART_LCR_WLEN6          (1 << 0)		/*!< UART word length select: 6 bit data mode */
							 | 
						||
| 
								 | 
							
								#define UART_LCR_WLEN7          (2 << 0)		/*!< UART word length select: 7 bit data mode */
							 | 
						||
| 
								 | 
							
								#define UART_LCR_WLEN8          (3 << 0)		/*!< UART word length select: 8 bit data mode */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* UART Stop bit select bit definitions */
							 | 
						||
| 
								 | 
							
								#define UART_LCR_SBS_MASK       (1 << 2)		/*!< UART stop bit select: bit mask */
							 | 
						||
| 
								 | 
							
								#define UART_LCR_SBS_1BIT       (0 << 2)		/*!< UART stop bit select: 1 stop bit */
							 | 
						||
| 
								 | 
							
								#define UART_LCR_SBS_2BIT       (1 << 2)		/*!< UART stop bit select: 2 stop bits (in 5 bit data mode, 1.5 stop bits) */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* UART Parity enable bit definitions */
							 | 
						||
| 
								 | 
							
								#define UART_LCR_PARITY_EN      (1 << 3)		/*!< UART Parity Enable */
							 | 
						||
| 
								 | 
							
								#define UART_LCR_PARITY_DIS     (0 << 3)		/*!< UART Parity Disable */
							 | 
						||
| 
								 | 
							
								#define UART_LCR_PARITY_ODD     (0 << 4)		/*!< UART Parity select: Odd parity */
							 | 
						||
| 
								 | 
							
								#define UART_LCR_PARITY_EVEN    (1 << 4)		/*!< UART Parity select: Even parity */
							 | 
						||
| 
								 | 
							
								#define UART_LCR_PARITY_F_1     (2 << 4)		/*!< UART Parity select: Forced 1 stick parity */
							 | 
						||
| 
								 | 
							
								#define UART_LCR_PARITY_F_0     (3 << 4)		/*!< UART Parity select: Forced 0 stick parity */
							 | 
						||
| 
								 | 
							
								#define UART_LCR_BREAK_EN       (1 << 6)		/*!< UART Break transmission enable */
							 | 
						||
| 
								 | 
							
								#define UART_LCR_DLAB_EN        (1 << 7)		/*!< UART Divisor Latches Access bit enable */
							 | 
						||
| 
								 | 
							
								#define UART_LCR_BITMASK        (0xFF)			/*!< UART line control bit mask */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief Macro defines for UART Modem Control Register
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define UART_MCR_DTR_CTRL       (1 << 0)		/*!< Source for modem output pin DTR */
							 | 
						||
| 
								 | 
							
								#define UART_MCR_RTS_CTRL       (1 << 1)		/*!< Source for modem output pin RTS */
							 | 
						||
| 
								 | 
							
								#define UART_MCR_LOOPB_EN       (1 << 4)		/*!< Loop back mode select */
							 | 
						||
| 
								 | 
							
								#define UART_MCR_AUTO_RTS_EN    (1 << 6)		/*!< Enable Auto RTS flow-control */
							 | 
						||
| 
								 | 
							
								#define UART_MCR_AUTO_CTS_EN    (1 << 7)		/*!< Enable Auto CTS flow-control */
							 | 
						||
| 
								 | 
							
								#define UART_MCR_BITMASK        (0xD3)			/*!< UART bit mask value */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief Macro defines for UART Line Status Register
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define UART_LSR_RDR        (1 << 0)	/*!< Line status: Receive data ready */
							 | 
						||
| 
								 | 
							
								#define UART_LSR_OE         (1 << 1)	/*!< Line status: Overrun error */
							 | 
						||
| 
								 | 
							
								#define UART_LSR_PE         (1 << 2)	/*!< Line status: Parity error */
							 | 
						||
| 
								 | 
							
								#define UART_LSR_FE         (1 << 3)	/*!< Line status: Framing error */
							 | 
						||
| 
								 | 
							
								#define UART_LSR_BI         (1 << 4)	/*!< Line status: Break interrupt */
							 | 
						||
| 
								 | 
							
								#define UART_LSR_THRE       (1 << 5)	/*!< Line status: Transmit holding register empty */
							 | 
						||
| 
								 | 
							
								#define UART_LSR_TEMT       (1 << 6)	/*!< Line status: Transmitter empty */
							 | 
						||
| 
								 | 
							
								#define UART_LSR_RXFE       (1 << 7)	/*!< Line status: Error in RX FIFO */
							 | 
						||
| 
								 | 
							
								#define UART_LSR_TXFE       (1 << 8)	/*!< Line status: Error in RX FIFO */
							 | 
						||
| 
								 | 
							
								#define UART_LSR_BITMASK    (0xFF)		/*!< UART Line status bit mask */
							 | 
						||
| 
								 | 
							
								#define UART1_LSR_BITMASK   (0x1FF)		/*!< UART1 Line status bit mask - valid for 11xx, 18xx/43xx UART0/2/3 only */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief Macro defines for UART Modem Status Register
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define UART_MSR_DELTA_CTS      (1 << 0)	/*!< Modem status: State change of input CTS */
							 | 
						||
| 
								 | 
							
								#define UART_MSR_DELTA_DSR      (1 << 1)	/*!< Modem status: State change of input DSR */
							 | 
						||
| 
								 | 
							
								#define UART_MSR_LO2HI_RI       (1 << 2)	/*!< Modem status: Low to high transition of input RI */
							 | 
						||
| 
								 | 
							
								#define UART_MSR_DELTA_DCD      (1 << 3)	/*!< Modem status: State change of input DCD */
							 | 
						||
| 
								 | 
							
								#define UART_MSR_CTS            (1 << 4)	/*!< Modem status: Clear To Send State */
							 | 
						||
| 
								 | 
							
								#define UART_MSR_DSR            (1 << 5)	/*!< Modem status: Data Set Ready State */
							 | 
						||
| 
								 | 
							
								#define UART_MSR_RI             (1 << 6)	/*!< Modem status: Ring Indicator State */
							 | 
						||
| 
								 | 
							
								#define UART_MSR_DCD            (1 << 7)	/*!< Modem status: Data Carrier Detect State */
							 | 
						||
| 
								 | 
							
								#define UART_MSR_BITMASK        (0xFF)		/*!< Modem status: MSR register bit-mask value */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief Macro defines for UART Auto baudrate control register
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define UART_ACR_START              (1 << 0)	/*!< UART Auto-baud start */
							 | 
						||
| 
								 | 
							
								#define UART_ACR_MODE               (1 << 1)	/*!< UART Auto baudrate Mode 1 */
							 | 
						||
| 
								 | 
							
								#define UART_ACR_AUTO_RESTART       (1 << 2)	/*!< UART Auto baudrate restart */
							 | 
						||
| 
								 | 
							
								#define UART_ACR_ABEOINT_CLR        (1 << 8)	/*!< UART End of auto-baud interrupt clear */
							 | 
						||
| 
								 | 
							
								#define UART_ACR_ABTOINT_CLR        (1 << 9)	/*!< UART Auto-baud time-out interrupt clear */
							 | 
						||
| 
								 | 
							
								#define UART_ACR_BITMASK            (0x307)		/*!< UART Auto Baudrate register bit mask */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief Macro defines for UART RS485 Control register
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define UART_RS485CTRL_NMM_EN       (1 << 0)	/*!< RS-485/EIA-485 Normal Multi-drop Mode (NMM) is disabled */
							 | 
						||
| 
								 | 
							
								#define UART_RS485CTRL_RX_DIS       (1 << 1)	/*!< The receiver is disabled */
							 | 
						||
| 
								 | 
							
								#define UART_RS485CTRL_AADEN        (1 << 2)	/*!< Auto Address Detect (AAD) is enabled */
							 | 
						||
| 
								 | 
							
								#define UART_RS485CTRL_SEL_DTR      (1 << 3)	/*!< If direction control is enabled (bit DCTRL = 1), pin DTR is
							 | 
						||
| 
								 | 
							
																				        used for direction control */
							 | 
						||
| 
								 | 
							
								#define UART_RS485CTRL_DCTRL_EN     (1 << 4)	/*!< Enable Auto Direction Control */
							 | 
						||
| 
								 | 
							
								#define UART_RS485CTRL_OINV_1       (1 << 5)	/*!< This bit reverses the polarity of the direction
							 | 
						||
| 
								 | 
							
																				       control signal on the RTS (or DTR) pin. The direction control pin
							 | 
						||
| 
								 | 
							
																				       will be driven to logic "1" when the transmitter has data to be sent */
							 | 
						||
| 
								 | 
							
								#define UART_RS485CTRL_BITMASK      (0x3F)		/*!< RS485 control bit-mask value */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief Macro defines for UART IrDA Control Register - valid for 11xx, 17xx/40xx UART0/2/3, 18xx/43xx UART3 only
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define UART_ICR_IRDAEN         (1 << 0)			/*!< IrDA mode enable */
							 | 
						||
| 
								 | 
							
								#define UART_ICR_IRDAINV        (1 << 1)			/*!< IrDA serial input inverted */
							 | 
						||
| 
								 | 
							
								#define UART_ICR_FIXPULSE_EN    (1 << 2)			/*!< IrDA fixed pulse width mode */
							 | 
						||
| 
								 | 
							
								#define UART_ICR_PULSEDIV(n)    ((n & 0x07) << 3)	/*!< PulseDiv - Configures the pulse when FixPulseEn = 1 */
							 | 
						||
| 
								 | 
							
								#define UART_ICR_BITMASK        (0x3F)				/*!< UART IRDA bit mask */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief Macro defines for UART half duplex register - ????
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define UART_HDEN_HDEN          ((1 << 0))			/*!< enable half-duplex mode*/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief Macro defines for UART Smart card interface Control Register - valid for 11xx, 18xx/43xx UART0/2/3 only
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define UART_SCICTRL_SCIEN        (1 << 0)			/*!< enable asynchronous half-duplex smart card interface*/
							 | 
						||
| 
								 | 
							
								#define UART_SCICTRL_NACKDIS      (1 << 1)			/*!< NACK response is inhibited*/
							 | 
						||
| 
								 | 
							
								#define UART_SCICTRL_PROTSEL_T1   (1 << 2)			/*!< ISO7816-3 protocol T1 is selected*/
							 | 
						||
| 
								 | 
							
								#define UART_SCICTRL_TXRETRY(n)   ((n & 0x07) << 5)	/*!< number of retransmission*/
							 | 
						||
| 
								 | 
							
								#define UART_SCICTRL_GUARDTIME(n) ((n & 0xFF) << 8)	/*!< Extra guard time*/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief Macro defines for UART Fractional Divider Register
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define UART_FDR_DIVADDVAL(n)   (n & 0x0F)			/*!< Baud-rate generation pre-scaler divisor */
							 | 
						||
| 
								 | 
							
								#define UART_FDR_MULVAL(n)      ((n << 4) & 0xF0)	/*!< Baud-rate pre-scaler multiplier value */
							 | 
						||
| 
								 | 
							
								#define UART_FDR_BITMASK        (0xFF)				/*!< UART Fractional Divider register bit mask */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief Macro defines for UART Tx Enable Register
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define UART_TER1_TXEN      (1 << 7)		/*!< Transmit enable bit  - valid for 11xx, 13xx, 17xx/40xx only */
							 | 
						||
| 
								 | 
							
								#define UART_TER2_TXEN      (1 << 0)		/*!< Transmit enable bit  - valid for 18xx/43xx only */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief Macro defines for UART Synchronous Control Register - 11xx, 18xx/43xx UART0/2/3 only 
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define UART_SYNCCTRL_SYNC             (1 << 0)			/*!< enable synchronous mode*/
							 | 
						||
| 
								 | 
							
								#define UART_SYNCCTRL_CSRC_MASTER      (1 << 1)  		/*!< synchronous master mode*/
							 | 
						||
| 
								 | 
							
								#define UART_SYNCCTRL_FES              (1 << 2)			/*!< sample on falling edge*/
							 | 
						||
| 
								 | 
							
								#define UART_SYNCCTRL_TSBYPASS         (1 << 3)			/*!< to be defined*/
							 | 
						||
| 
								 | 
							
								#define UART_SYNCCTRL_CSCEN            (1 << 4)			/*!< Continuous running clock enable (master mode only)*/
							 | 
						||
| 
								 | 
							
								#define UART_SYNCCTRL_STARTSTOPDISABLE (1 << 5)	        /*!< Do not send start/stop bit*/
							 | 
						||
| 
								 | 
							
								#define UART_SYNCCTRL_CCCLR            (1 << 6)			/*!< stop continuous clock*/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Enable transmission on UART TxD pin
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected pUART peripheral
							 | 
						||
| 
								 | 
							
								 * @return Nothing
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE void Chip_UART_TXEnable(LPC_USART_T *pUART)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									pUART->TER1 = UART_TER1_TXEN;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Disable transmission on UART TxD pin
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected pUART peripheral
							 | 
						||
| 
								 | 
							
								 * @return Nothing
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE void Chip_UART_TXDisable(LPC_USART_T *pUART)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									pUART->TER1 = 0;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Transmit a single data byte through the UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	data	: Byte to transmit
							 | 
						||
| 
								 | 
							
								 * @return	Nothing
							 | 
						||
| 
								 | 
							
								 * @note	This function attempts to place a byte into the UART transmit
							 | 
						||
| 
								 | 
							
								 *			FIFO or transmit hold register regard regardless of UART state
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE void Chip_UART_SendByte(LPC_USART_T *pUART, uint8_t data)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									pUART->THR = (uint32_t) data;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Read a single byte data from the UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @return	A single byte of data read
							 | 
						||
| 
								 | 
							
								 * @note	This function reads a byte from the UART receive FIFO or
							 | 
						||
| 
								 | 
							
								 *			receive hold register regard regardless of UART state. The
							 | 
						||
| 
								 | 
							
								 *			FIFO status should be read first prior to using this function
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE uint8_t Chip_UART_ReadByte(LPC_USART_T *pUART)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									return (uint8_t) (pUART->RBR & UART_RBR_MASKBIT);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Enable UART interrupts
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	intMask	: OR'ed Interrupts to enable in the Interrupt Enable Register (IER)
							 | 
						||
| 
								 | 
							
								 * @return	Nothing
							 | 
						||
| 
								 | 
							
								 * @note	Use an OR'ed value of UART_IER_* definitions with this function
							 | 
						||
| 
								 | 
							
								 *			to enable specific UART interrupts. The Divisor Latch Access Bit
							 | 
						||
| 
								 | 
							
								 *			(DLAB) in LCR must be cleared in order to access the IER register.
							 | 
						||
| 
								 | 
							
								 *			This function doesn't alter the DLAB state
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE void Chip_UART_IntEnable(LPC_USART_T *pUART, uint32_t intMask)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									pUART->IER |= intMask;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Disable UART interrupts
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	intMask	: OR'ed Interrupts to disable in the Interrupt Enable Register (IER)
							 | 
						||
| 
								 | 
							
								 * @return	Nothing
							 | 
						||
| 
								 | 
							
								 * @note	Use an OR'ed value of UART_IER_* definitions with this function
							 | 
						||
| 
								 | 
							
								 *			to disable specific UART interrupts. The Divisor Latch Access Bit
							 | 
						||
| 
								 | 
							
								 *			(DLAB) in LCR must be cleared in order to access the IER register.
							 | 
						||
| 
								 | 
							
								 *			This function doesn't alter the DLAB state
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE void Chip_UART_IntDisable(LPC_USART_T *pUART, uint32_t intMask)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									pUART->IER &= ~intMask;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Returns UART interrupts that are enabled
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @return	Returns the enabled UART interrupts
							 | 
						||
| 
								 | 
							
								 * @note	Use an OR'ed value of UART_IER_* definitions with this function
							 | 
						||
| 
								 | 
							
								 *			to determine which interrupts are enabled. You can check
							 | 
						||
| 
								 | 
							
								 *			for multiple enabled bits if needed.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE uint32_t Chip_UART_GetIntsEnabled(LPC_USART_T *pUART)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									return pUART->IER;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Read the Interrupt Identification Register (IIR)
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @return	Current pending interrupt status per the IIR register
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE uint32_t Chip_UART_ReadIntIDReg(LPC_USART_T *pUART)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									return pUART->IIR;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Setup the UART FIFOs
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	fcr		: FIFO control register setup OR'ed flags
							 | 
						||
| 
								 | 
							
								 * @return	Nothing
							 | 
						||
| 
								 | 
							
								 * @note	Use OR'ed value of UART_FCR_* definitions with this function
							 | 
						||
| 
								 | 
							
								 *			to select specific options. For example, to enable the FIFOs
							 | 
						||
| 
								 | 
							
								 *			with a RX trip level of 8 characters, use something like
							 | 
						||
| 
								 | 
							
								 *			(UART_FCR_FIFO_EN | UART_FCR_TRG_LEV2)
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE void Chip_UART_SetupFIFOS(LPC_USART_T *pUART, uint32_t fcr)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									pUART->FCR = fcr;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Configure data width, parity and stop bits
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected pUART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	config	: UART configuration, OR'ed values of UART_LCR_* defines
							 | 
						||
| 
								 | 
							
								 * @return	Nothing
							 | 
						||
| 
								 | 
							
								 * @note	Select OR'ed config options for the UART from the UART_LCR_*
							 | 
						||
| 
								 | 
							
								 *			definitions. For example, a configuration of 8 data bits, 1
							 | 
						||
| 
								 | 
							
								 *			stop bit, and even (enabled) parity would be
							 | 
						||
| 
								 | 
							
								 *			(UART_LCR_WLEN8 | UART_LCR_SBS_1BIT | UART_LCR_PARITY_EN | UART_LCR_PARITY_EVEN)
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE void Chip_UART_ConfigData(LPC_USART_T *pUART, uint32_t config)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									pUART->LCR = config;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Enable access to Divisor Latches
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @return	Nothing
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE void Chip_UART_EnableDivisorAccess(LPC_USART_T *pUART)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									pUART->LCR |= UART_LCR_DLAB_EN;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Disable access to Divisor Latches
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @return	Nothing
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE void Chip_UART_DisableDivisorAccess(LPC_USART_T *pUART)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									pUART->LCR &= ~UART_LCR_DLAB_EN;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Set LSB and MSB divisor latch registers
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	dll		: Divisor Latch LSB value
							 | 
						||
| 
								 | 
							
								 * @param	dlm		: Divisor Latch MSB value
							 | 
						||
| 
								 | 
							
								 * @return	Nothing
							 | 
						||
| 
								 | 
							
								 * @note	The Divisor Latch Access Bit (DLAB) in LCR must be set in
							 | 
						||
| 
								 | 
							
								 *			order to access the USART Divisor Latches. This function
							 | 
						||
| 
								 | 
							
								 *			doesn't alter the DLAB state.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE void Chip_UART_SetDivisorLatches(LPC_USART_T *pUART, uint8_t dll, uint8_t dlm)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									pUART->DLL = (uint32_t) dll;
							 | 
						||
| 
								 | 
							
									pUART->DLM = (uint32_t) dlm;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Return modem control register/status
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @return	Modem control register (status)
							 | 
						||
| 
								 | 
							
								 * @note	Mask bits of the returned status value with UART_MCR_*
							 | 
						||
| 
								 | 
							
								 *			definitions for specific statuses.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE uint32_t Chip_UART_ReadModemControl(LPC_USART_T *pUART)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									return pUART->MCR;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Set modem control register/status
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	mcr		: Modem control register flags to set
							 | 
						||
| 
								 | 
							
								 * @return	Nothing
							 | 
						||
| 
								 | 
							
								 * @note	Use an Or'ed value of UART_MCR_* definitions with this
							 | 
						||
| 
								 | 
							
								 *			call to set specific options.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE void Chip_UART_SetModemControl(LPC_USART_T *pUART, uint32_t mcr)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									pUART->MCR |= mcr;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Clear modem control register/status
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	mcr		: Modem control register flags to clear
							 | 
						||
| 
								 | 
							
								 * @return	Nothing
							 | 
						||
| 
								 | 
							
								 * @note	Use an Or'ed value of UART_MCR_* definitions with this
							 | 
						||
| 
								 | 
							
								 *			call to clear specific options.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE void Chip_UART_ClearModemControl(LPC_USART_T *pUART, uint32_t mcr)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									pUART->MCR &= ~mcr;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Return Line Status register/status (LSR)
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @return	Line Status register (status)
							 | 
						||
| 
								 | 
							
								 * @note	Mask bits of the returned status value with UART_LSR_*
							 | 
						||
| 
								 | 
							
								 *			definitions for specific statuses.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE uint32_t Chip_UART_ReadLineStatus(LPC_USART_T *pUART)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									return pUART->LSR;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Return Modem Status register/status (MSR)
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @return	Modem Status register (status)
							 | 
						||
| 
								 | 
							
								 * @note	Mask bits of the returned status value with UART_MSR_*
							 | 
						||
| 
								 | 
							
								 *			definitions for specific statuses.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE uint32_t Chip_UART_ReadModemStatus(LPC_USART_T *pUART)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									return pUART->MSR;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Write a byte to the scratchpad register
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	data	: Byte value to write
							 | 
						||
| 
								 | 
							
								 * @return	Nothing
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE void Chip_UART_SetScratch(LPC_USART_T *pUART, uint8_t data)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									pUART->SCR = (uint32_t) data;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Returns current byte value in the scratchpad register
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @return	Byte value read from scratchpad register
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE uint8_t Chip_UART_ReadScratch(LPC_USART_T *pUART)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									return (uint8_t) (pUART->SCR & 0xFF);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Set autobaud register options
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	acr		: Or'ed values to set for ACR register
							 | 
						||
| 
								 | 
							
								 * @return	Nothing
							 | 
						||
| 
								 | 
							
								 * @note	Use an Or'ed value of UART_ACR_* definitions with this
							 | 
						||
| 
								 | 
							
								 *			call to set specific options.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE void Chip_UART_SetAutoBaudReg(LPC_USART_T *pUART, uint32_t acr)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									pUART->ACR |= acr;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Clear autobaud register options
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	acr		: Or'ed values to clear for ACR register
							 | 
						||
| 
								 | 
							
								 * @return	Nothing
							 | 
						||
| 
								 | 
							
								 * @note	Use an Or'ed value of UART_ACR_* definitions with this
							 | 
						||
| 
								 | 
							
								 *			call to clear specific options.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE void Chip_UART_ClearAutoBaudReg(LPC_USART_T *pUART, uint32_t acr)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									pUART->ACR &= ~acr;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Set RS485 control register options
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	ctrl	: Or'ed values to set for RS485 control register
							 | 
						||
| 
								 | 
							
								 * @return	Nothing
							 | 
						||
| 
								 | 
							
								 * @note	Use an Or'ed value of UART_RS485CTRL_* definitions with this
							 | 
						||
| 
								 | 
							
								 *			call to set specific options.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE void Chip_UART_SetRS485Flags(LPC_USART_T *pUART, uint32_t ctrl)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									pUART->RS485CTRL |= ctrl;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Clear RS485 control register options
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	ctrl	: Or'ed values to clear for RS485 control register
							 | 
						||
| 
								 | 
							
								 * @return	Nothing
							 | 
						||
| 
								 | 
							
								 * @note	Use an Or'ed value of UART_RS485CTRL_* definitions with this
							 | 
						||
| 
								 | 
							
								 *			call to clear specific options.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE void Chip_UART_ClearRS485Flags(LPC_USART_T *pUART, uint32_t ctrl)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									pUART->RS485CTRL &= ~ctrl;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Set RS485 address match value
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	addr	: Address match value for RS-485/EIA-485 mode
							 | 
						||
| 
								 | 
							
								 * @return	Nothing
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE void Chip_UART_SetRS485Addr(LPC_USART_T *pUART, uint8_t addr)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									pUART->RS485ADRMATCH = (uint32_t) addr;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Read RS485 address match value
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @return	Address match value for RS-485/EIA-485 mode
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE uint8_t Chip_UART_GetRS485Addr(LPC_USART_T *pUART)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									return (uint8_t) (pUART->RS485ADRMATCH & 0xFF);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Set RS485 direction control (RTS or DTR) delay value
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	dly		: direction control (RTS or DTR) delay value
							 | 
						||
| 
								 | 
							
								 * @return	Nothing
							 | 
						||
| 
								 | 
							
								 * @note	This delay time is in periods of the baud clock. Any delay
							 | 
						||
| 
								 | 
							
								 *			time from 0 to 255 bit times may be programmed.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE void Chip_UART_SetRS485Delay(LPC_USART_T *pUART, uint8_t dly)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									pUART->RS485DLY = (uint32_t) dly;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Read RS485 direction control (RTS or DTR) delay value
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @return	direction control (RTS or DTR) delay value
							 | 
						||
| 
								 | 
							
								 * @note	This delay time is in periods of the baud clock. Any delay
							 | 
						||
| 
								 | 
							
								 *			time from 0 to 255 bit times may be programmed.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								STATIC INLINE uint8_t Chip_UART_GetRS485Delay(LPC_USART_T *pUART)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									return (uint8_t) (pUART->RS485DLY & 0xFF);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Initializes the pUART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	pUART		: Pointer to selected pUART peripheral
							 | 
						||
| 
								 | 
							
								 * @return	Nothing
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void Chip_UART_Init(LPC_USART_T *pUART);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	De-initializes the pUART peripheral.
							 | 
						||
| 
								 | 
							
								 * @param	pUART		: Pointer to selected pUART peripheral
							 | 
						||
| 
								 | 
							
								 * @return	Nothing
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void Chip_UART_DeInit(LPC_USART_T *pUART);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Transmit a byte array through the UART peripheral (non-blocking)
							 | 
						||
| 
								 | 
							
								 * @param	pUART		: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	data		: Pointer to bytes to transmit
							 | 
						||
| 
								 | 
							
								 * @param	numBytes	: Number of bytes to transmit
							 | 
						||
| 
								 | 
							
								 * @return	The actual number of bytes placed into the FIFO
							 | 
						||
| 
								 | 
							
								 * @note	This function places data into the transmit FIFO until either
							 | 
						||
| 
								 | 
							
								 *			all the data is in the FIFO or the FIFO is full. This function
							 | 
						||
| 
								 | 
							
								 *			will not block in the FIFO is full. The actual number of bytes
							 | 
						||
| 
								 | 
							
								 *			placed into the FIFO is returned. This function ignores errors.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								int Chip_UART_Send(LPC_USART_T *pUART, const void *data, int numBytes);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Read data through the UART peripheral (non-blocking)
							 | 
						||
| 
								 | 
							
								 * @param	pUART		: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	data		: Pointer to bytes array to fill
							 | 
						||
| 
								 | 
							
								 * @param	numBytes	: Size of the passed data array
							 | 
						||
| 
								 | 
							
								 * @return	The actual number of bytes read
							 | 
						||
| 
								 | 
							
								 * @note	This function reads data from the receive FIFO until either
							 | 
						||
| 
								 | 
							
								 *			all the data has been read or the passed buffer is completely full.
							 | 
						||
| 
								 | 
							
								 *			This function will not block. This function ignores errors.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								int Chip_UART_Read(LPC_USART_T *pUART, void *data, int numBytes);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Sets best dividers to get a target bit rate (without fractional divider)
							 | 
						||
| 
								 | 
							
								 * @param	pUART		: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	baudrate	: Target baud rate (baud rate = bit rate)
							 | 
						||
| 
								 | 
							
								 * @return	The actual baud rate, or 0 if no rate can be found
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								uint32_t Chip_UART_SetBaud(LPC_USART_T *pUART, uint32_t baudrate);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Sets best dividers to get a target bit rate (with fractional divider)
							 | 
						||
| 
								 | 
							
								 * @param	pUART		: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	baudrate	: Target baud rate (baud rate = bit rate)
							 | 
						||
| 
								 | 
							
								 * @return	The actual baud rate, or 0 if no rate can be found
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								uint32_t Chip_UART_SetBaudFDR(LPC_USART_T *pUART, uint32_t baudrate);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Transmit a byte array through the UART peripheral (blocking)
							 | 
						||
| 
								 | 
							
								 * @param	pUART		: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	data		: Pointer to data to transmit
							 | 
						||
| 
								 | 
							
								 * @param	numBytes	: Number of bytes to transmit
							 | 
						||
| 
								 | 
							
								 * @return	The number of bytes transmitted
							 | 
						||
| 
								 | 
							
								 * @note	This function will send or place all bytes into the transmit
							 | 
						||
| 
								 | 
							
								 *			FIFO. This function will block until the last bytes are in the FIFO.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								int Chip_UART_SendBlocking(LPC_USART_T *pUART, const void *data, int numBytes);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Read data through the UART peripheral (blocking)
							 | 
						||
| 
								 | 
							
								 * @param	pUART		: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	data		: Pointer to data array to fill
							 | 
						||
| 
								 | 
							
								 * @param	numBytes	: Size of the passed data array
							 | 
						||
| 
								 | 
							
								 * @return	The size of the dat array
							 | 
						||
| 
								 | 
							
								 * @note	This function reads data from the receive FIFO until the passed
							 | 
						||
| 
								 | 
							
								 *			buffer is completely full. The function will block until full.
							 | 
						||
| 
								 | 
							
								 *			This function ignores errors.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								int Chip_UART_ReadBlocking(LPC_USART_T *pUART, void *data, int numBytes);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	UART receive-only interrupt handler for ring buffers
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	pRB		: Pointer to ring buffer structure to use
							 | 
						||
| 
								 | 
							
								 * @return	Nothing
							 | 
						||
| 
								 | 
							
								 * @note	If ring buffer support is desired for the receive side
							 | 
						||
| 
								 | 
							
								 *			of data transfer, the UART interrupt should call this
							 | 
						||
| 
								 | 
							
								 *			function for a receive based interrupt status.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void Chip_UART_RXIntHandlerRB(LPC_USART_T *pUART, RINGBUFF_T *pRB);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	UART transmit-only interrupt handler for ring buffers
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	pRB		: Pointer to ring buffer structure to use
							 | 
						||
| 
								 | 
							
								 * @return	Nothing
							 | 
						||
| 
								 | 
							
								 * @note	If ring buffer support is desired for the transmit side
							 | 
						||
| 
								 | 
							
								 *			of data transfer, the UART interrupt should call this
							 | 
						||
| 
								 | 
							
								 *			function for a transmit based interrupt status.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void Chip_UART_TXIntHandlerRB(LPC_USART_T *pUART, RINGBUFF_T *pRB);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Populate a transmit ring buffer and start UART transmit
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	pRB		: Pointer to ring buffer structure to use
							 | 
						||
| 
								 | 
							
								 * @param	data	: Pointer to buffer to move to ring buffer
							 | 
						||
| 
								 | 
							
								 * @param	bytes	: Number of bytes to move
							 | 
						||
| 
								 | 
							
								 * @return	The number of bytes placed into the ring buffer
							 | 
						||
| 
								 | 
							
								 * @note	Will move the data into the TX ring buffer and start the
							 | 
						||
| 
								 | 
							
								 *			transfer. If the number of bytes returned is less than the
							 | 
						||
| 
								 | 
							
								 *			number of bytes to send, the ring buffer is considered full.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								uint32_t Chip_UART_SendRB(LPC_USART_T *pUART, RINGBUFF_T *pRB, const void *data, int bytes);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	Copy data from a receive ring buffer
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	pRB		: Pointer to ring buffer structure to use
							 | 
						||
| 
								 | 
							
								 * @param	data	: Pointer to buffer to fill from ring buffer
							 | 
						||
| 
								 | 
							
								 * @param	bytes	: Size of the passed buffer in bytes
							 | 
						||
| 
								 | 
							
								 * @return	The number of bytes placed into the ring buffer
							 | 
						||
| 
								 | 
							
								 * @note	Will move the data from the RX ring buffer up to the
							 | 
						||
| 
								 | 
							
								 *			the maximum passed buffer size. Returns 0 if there is
							 | 
						||
| 
								 | 
							
								 *			no data in the ring buffer.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								int Chip_UART_ReadRB(LPC_USART_T *pUART, RINGBUFF_T *pRB, void *data, int bytes);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief	UART receive/transmit interrupt handler for ring buffers
							 | 
						||
| 
								 | 
							
								 * @param	pUART	: Pointer to selected UART peripheral
							 | 
						||
| 
								 | 
							
								 * @param	pRXRB	: Pointer to transmit ring buffer
							 | 
						||
| 
								 | 
							
								 * @param	pTXRB	: Pointer to receive ring buffer
							 | 
						||
| 
								 | 
							
								 * @return	Nothing
							 | 
						||
| 
								 | 
							
								 * @note	This provides a basic implementation of the UART IRQ
							 | 
						||
| 
								 | 
							
								 *			handler for support of a ring buffer implementation for
							 | 
						||
| 
								 | 
							
								 *			transmit and receive.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void Chip_UART_IRQRBHandler(LPC_USART_T *pUART, RINGBUFF_T *pRXRB, RINGBUFF_T *pTXRB);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @}
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef __cplusplus
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif /* __UART_13XX_H_ */
							 |