1 //*****************************************************************************
2 //
3 // uart.h - Defines and Macros for the UART.
4 //
5 // Copyright (c) 2005-2011 Texas Instruments Incorporated.  All rights reserved.
6 // Software License Agreement
7 //
8 // Texas Instruments (TI) is supplying this software for use solely and
9 // exclusively on TI's microcontroller products. The software is owned by
10 // TI and/or its suppliers, and is protected under applicable copyright
11 // laws. You may not combine this software with "viral" open-source
12 // software in order to form a larger program.
13 //
14 // THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
15 // NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
16 // NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17 // A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
18 // CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
19 // DAMAGES, FOR ANY REASON WHATSOEVER.
20 //
21 // This is part of revision 8264 of the Stellaris Peripheral Driver Library.
22 //
23 //*****************************************************************************
24 
25 #ifndef __UART_H__
26 #define __UART_H__
27 
28 //*****************************************************************************
29 //
30 // If building with a C++ compiler, make all of the definitions in this header
31 // have a C binding.
32 //
33 //*****************************************************************************
34 #ifdef __cplusplus
35 extern "C"
36 {
37 #endif
38 
39 //*****************************************************************************
40 //
41 // Values that can be passed to UARTIntEnable, UARTIntDisable, and UARTIntClear
42 // as the ulIntFlags parameter, and returned from UARTIntStatus.
43 //
44 //*****************************************************************************
45 #define UART_INT_9BIT           0x1000      // 9-bit address match interrupt
46 #define UART_INT_OE             0x400       // Overrun Error Interrupt Mask
47 #define UART_INT_BE             0x200       // Break Error Interrupt Mask
48 #define UART_INT_PE             0x100       // Parity Error Interrupt Mask
49 #define UART_INT_FE             0x080       // Framing Error Interrupt Mask
50 #define UART_INT_RT             0x040       // Receive Timeout Interrupt Mask
51 #define UART_INT_TX             0x020       // Transmit Interrupt Mask
52 #define UART_INT_RX             0x010       // Receive Interrupt Mask
53 #define UART_INT_DSR            0x008       // DSR Modem Interrupt Mask
54 #define UART_INT_DCD            0x004       // DCD Modem Interrupt Mask
55 #define UART_INT_CTS            0x002       // CTS Modem Interrupt Mask
56 #define UART_INT_RI             0x001       // RI Modem Interrupt Mask
57 
58 //*****************************************************************************
59 //
60 // Values that can be passed to UARTConfigSetExpClk as the ulConfig parameter
61 // and returned by UARTConfigGetExpClk in the pulConfig parameter.
62 // Additionally, the UART_CONFIG_PAR_* subset can be passed to
63 // UARTParityModeSet as the ulParity parameter, and are returned by
64 // UARTParityModeGet.
65 //
66 //*****************************************************************************
67 #define UART_CONFIG_WLEN_MASK   0x00000060  // Mask for extracting word length
68 #define UART_CONFIG_WLEN_8      0x00000060  // 8 bit data
69 #define UART_CONFIG_WLEN_7      0x00000040  // 7 bit data
70 #define UART_CONFIG_WLEN_6      0x00000020  // 6 bit data
71 #define UART_CONFIG_WLEN_5      0x00000000  // 5 bit data
72 #define UART_CONFIG_STOP_MASK   0x00000008  // Mask for extracting stop bits
73 #define UART_CONFIG_STOP_ONE    0x00000000  // One stop bit
74 #define UART_CONFIG_STOP_TWO    0x00000008  // Two stop bits
75 #define UART_CONFIG_PAR_MASK    0x00000086  // Mask for extracting parity
76 #define UART_CONFIG_PAR_NONE    0x00000000  // No parity
77 #define UART_CONFIG_PAR_EVEN    0x00000006  // Even parity
78 #define UART_CONFIG_PAR_ODD     0x00000002  // Odd parity
79 #define UART_CONFIG_PAR_ONE     0x00000082  // Parity bit is one
80 #define UART_CONFIG_PAR_ZERO    0x00000086  // Parity bit is zero
81 
82 //*****************************************************************************
83 //
84 // Values that can be passed to UARTFIFOLevelSet as the ulTxLevel parameter and
85 // returned by UARTFIFOLevelGet in the pulTxLevel.
86 //
87 //*****************************************************************************
88 #define UART_FIFO_TX1_8         0x00000000  // Transmit interrupt at 1/8 Full
89 #define UART_FIFO_TX2_8         0x00000001  // Transmit interrupt at 1/4 Full
90 #define UART_FIFO_TX4_8         0x00000002  // Transmit interrupt at 1/2 Full
91 #define UART_FIFO_TX6_8         0x00000003  // Transmit interrupt at 3/4 Full
92 #define UART_FIFO_TX7_8         0x00000004  // Transmit interrupt at 7/8 Full
93 
94 //*****************************************************************************
95 //
96 // Values that can be passed to UARTFIFOLevelSet as the ulRxLevel parameter and
97 // returned by UARTFIFOLevelGet in the pulRxLevel.
98 //
99 //*****************************************************************************
100 #define UART_FIFO_RX1_8         0x00000000  // Receive interrupt at 1/8 Full
101 #define UART_FIFO_RX2_8         0x00000008  // Receive interrupt at 1/4 Full
102 #define UART_FIFO_RX4_8         0x00000010  // Receive interrupt at 1/2 Full
103 #define UART_FIFO_RX6_8         0x00000018  // Receive interrupt at 3/4 Full
104 #define UART_FIFO_RX7_8         0x00000020  // Receive interrupt at 7/8 Full
105 
106 //*****************************************************************************
107 //
108 // Values that can be passed to UARTDMAEnable() and UARTDMADisable().
109 //
110 //*****************************************************************************
111 #define UART_DMA_ERR_RXSTOP     0x00000004  // Stop DMA receive if UART error
112 #define UART_DMA_TX             0x00000002  // Enable DMA for transmit
113 #define UART_DMA_RX             0x00000001  // Enable DMA for receive
114 
115 //*****************************************************************************
116 //
117 // Values returned from UARTRxErrorGet().
118 //
119 //*****************************************************************************
120 #define UART_RXERROR_OVERRUN    0x00000008
121 #define UART_RXERROR_BREAK      0x00000004
122 #define UART_RXERROR_PARITY     0x00000002
123 #define UART_RXERROR_FRAMING    0x00000001
124 
125 //*****************************************************************************
126 //
127 // Values that can be passed to UARTHandshakeOutputsSet() or returned from
128 // UARTHandshakeOutputGet().
129 //
130 //*****************************************************************************
131 #define UART_OUTPUT_RTS         0x00000800
132 #define UART_OUTPUT_DTR         0x00000400
133 
134 //*****************************************************************************
135 //
136 // Values that can be returned from UARTHandshakeInputsGet().
137 //
138 //*****************************************************************************
139 #define UART_INPUT_RI           0x00000100
140 #define UART_INPUT_DCD          0x00000004
141 #define UART_INPUT_DSR          0x00000002
142 #define UART_INPUT_CTS          0x00000001
143 
144 //*****************************************************************************
145 //
146 // Values that can be passed to UARTFlowControl() or returned from
147 // UARTFlowControlGet().
148 //
149 //*****************************************************************************
150 #define UART_FLOWCONTROL_TX     0x00008000
151 #define UART_FLOWCONTROL_RX     0x00004000
152 #define UART_FLOWCONTROL_NONE   0x00000000
153 
154 //*****************************************************************************
155 //
156 // Values that can be passed to UARTTxIntModeSet() or returned from
157 // UARTTxIntModeGet().
158 //
159 //*****************************************************************************
160 #define UART_TXINT_MODE_FIFO    0x00000000
161 #define UART_TXINT_MODE_EOT     0x00000010
162 
163 //*****************************************************************************
164 //
165 // Values that can be passed to UARTClockSourceSet() or returned from
166 // UARTClockSourceGet().
167 //
168 //*****************************************************************************
169 #define UART_CLOCK_SYSTEM       0x00000000
170 #define UART_CLOCK_PIOSC        0x00000001
171 
172 //*****************************************************************************
173 //
174 // API Function prototypes
175 //
176 //*****************************************************************************
177 extern void UARTParityModeSet(unsigned long ulBase, unsigned long ulParity);
178 extern unsigned long UARTParityModeGet(unsigned long ulBase);
179 extern void UARTFIFOLevelSet(unsigned long ulBase, unsigned long ulTxLevel,
180                              unsigned long ulRxLevel);
181 extern void UARTFIFOLevelGet(unsigned long ulBase, unsigned long *pulTxLevel,
182                              unsigned long *pulRxLevel);
183 extern void UARTConfigSetExpClk(unsigned long ulBase, unsigned long ulUARTClk,
184                                 unsigned long ulBaud, unsigned long ulConfig);
185 extern void UARTConfigGetExpClk(unsigned long ulBase, unsigned long ulUARTClk,
186                                 unsigned long *pulBaud,
187                                 unsigned long *pulConfig);
188 extern void UARTEnable(unsigned long ulBase);
189 extern void UARTDisable(unsigned long ulBase);
190 extern void UARTFIFOEnable(unsigned long ulBase);
191 extern void UARTFIFODisable(unsigned long ulBase);
192 extern void UARTEnableSIR(unsigned long ulBase, tBoolean bLowPower);
193 extern void UARTDisableSIR(unsigned long ulBase);
194 extern tBoolean UARTCharsAvail(unsigned long ulBase);
195 extern tBoolean UARTSpaceAvail(unsigned long ulBase);
196 extern long UARTCharGetNonBlocking(unsigned long ulBase);
197 extern long UARTCharGet(unsigned long ulBase);
198 extern tBoolean UARTCharPutNonBlocking(unsigned long ulBase,
199                                        unsigned char ucData);
200 extern void UARTCharPut(unsigned long ulBase, unsigned char ucData);
201 extern void UARTBreakCtl(unsigned long ulBase, tBoolean bBreakState);
202 extern tBoolean UARTBusy(unsigned long ulBase);
203 extern void UARTIntRegister(unsigned long ulBase, void(*pfnHandler)(void));
204 extern void UARTIntUnregister(unsigned long ulBase);
205 extern void UARTIntEnable(unsigned long ulBase, unsigned long ulIntFlags);
206 extern void UARTIntDisable(unsigned long ulBase, unsigned long ulIntFlags);
207 extern unsigned long UARTIntStatus(unsigned long ulBase, tBoolean bMasked);
208 extern void UARTIntClear(unsigned long ulBase, unsigned long ulIntFlags);
209 extern void UARTDMAEnable(unsigned long ulBase, unsigned long ulDMAFlags);
210 extern void UARTDMADisable(unsigned long ulBase, unsigned long ulDMAFlags);
211 extern unsigned long UARTRxErrorGet(unsigned long ulBase);
212 extern void UARTRxErrorClear(unsigned long ulBase);
213 extern void UARTSmartCardEnable(unsigned long ulBase);
214 extern void UARTSmartCardDisable(unsigned long ulBase);
215 extern void UARTModemControlSet(unsigned long ulBase,
216                                 unsigned long ulControl);
217 extern void UARTModemControlClear(unsigned long ulBase,
218                                   unsigned long ulControl);
219 extern unsigned long UARTModemControlGet(unsigned long ulBase);
220 extern unsigned long UARTModemStatusGet(unsigned long ulBase);
221 extern void UARTFlowControlSet(unsigned long ulBase, unsigned long ulMode);
222 extern unsigned long UARTFlowControlGet(unsigned long ulBase);
223 extern void UARTTxIntModeSet(unsigned long ulBase, unsigned long ulMode);
224 extern unsigned long UARTTxIntModeGet(unsigned long ulBase);
225 extern void UARTClockSourceSet(unsigned long ulBase, unsigned long ulSource);
226 extern unsigned long UARTClockSourceGet(unsigned long ulBase);
227 extern void UART9BitEnable(unsigned long ulBase);
228 extern void UART9BitDisable(unsigned long ulBase);
229 extern void UART9BitAddrSet(unsigned long ulBase, unsigned char ucAddr,
230                             unsigned char ucMask);
231 extern void UART9BitAddrSend(unsigned long ulBase, unsigned char ucAddr);
232 
233 //*****************************************************************************
234 //
235 // Several UART APIs have been renamed, with the original function name being
236 // deprecated.  These defines provide backward compatibility.
237 //
238 //*****************************************************************************
239 #ifndef DEPRECATED
240 #include "driverlib/sysctl.h"
241 #define UARTConfigSet(a, b, c)                         \
242         UARTConfigSetExpClk(a, SysCtlClockGet(), b, c)
243 #define UARTConfigGet(a, b, c)                         \
244         UARTConfigGetExpClk(a, SysCtlClockGet(), b, c)
245 #define UARTCharNonBlockingGet(a) \
246         UARTCharGetNonBlocking(a)
247 #define UARTCharNonBlockingPut(a, b) \
248         UARTCharPutNonBlocking(a, b)
249 #endif
250 
251 //*****************************************************************************
252 //
253 // Mark the end of the C bindings section for C++ compilers.
254 //
255 //*****************************************************************************
256 #ifdef __cplusplus
257 }
258 #endif
259 
260 #endif //  __UART_H__
261