Herzog Library 00.00.01  rel_libdev.herzog.00.00.01.10606
uart_sfrs.h
Go to the documentation of this file.
1 
12 #ifndef __UART_SFRS_H__
13 #define __UART_SFRS_H__
14 
18 typedef struct {
19  uint8_t DATA;
20  union {
21  struct {
22  uint8_t URXIEN:1;
23  uint8_t UTXIEN:1;
24  uint8_t URXERREN:1;
25  uint8_t UTOUTIEN:1;
26  uint8_t UISTTS:4;
27  };
28  struct {
29  uint8_t INTEN:4;
30  uint8_t :4;
31  };
32  uint8_t BYTE;
33  } ICTCL;
34  union {
35  struct {
36  uint8_t USIZE:2;
37  uint8_t USTOP:1;
38  uint8_t UPAREN:1;
39  uint8_t UPARITY:1;
40  uint8_t USTICKEN:1;
41  uint8_t UBREAKEN:1;
42  uint8_t ULOOPEN:1;
43  };
44  uint8_t BYTE;
45  } LCTRL;
46  union {
47  struct {
48  uint8_t :3;
49  uint8_t UARTEN:1;
50  uint8_t :4;
51  };
52  uint8_t BYTE;
53  } CTRL1;
54  union {
55  struct {
56  uint8_t UDTRDY:1;
57  uint8_t UOVRUNERR:1;
58  uint8_t UPRTYERR:1;
59  uint8_t UFRMERR:1;
60  uint8_t UBREAKINT:1;
61  uint8_t UTXFFEMPTY:1;
62  uint8_t UTXEMPTY:1;
63  uint8_t UERR:1;
64  };
65  uint8_t BYTE;
66  } STATUS;
67  uint16_t DIV;
68 } UART_SFRS_t;
69 
70 #define UART_SFRS ((__IO UART_SFRS_t *) (0x50000010))
72 #define E_UART_STATUS_DATA_READY ((uint8_t) (1<<0))
73 #define E_UART_STATUS_OVERRUN_ERROR ((uint8_t) (1<<1))
74 #define E_UART_STATUS_PARITY_ERROR ((uint8_t) (1<<2))
75 #define E_UART_STATUS_FRAME_ERROR ((uint8_t) (1<<3))
76 #define E_UART_STATUS_BREAKINT_ERROR ((uint8_t) (1<<4))
77 #define E_UART_STATUS_TX_FIFO_EMPTY ((uint8_t) (1<<5))
78 #define E_UART_STATUS_TX_EMPTY ((uint8_t) (1<<6))
79 #define E_UART_STATUS_ERROR ((uint8_t) (1<<7))
81 #define E_UART_INT_STATUS_NONE 0x01
82 #define E_UART_INT_STATUS_TX_COMPLETE 0x02
83 #define E_UART_INT_STATUS_RX_READY 0x04
84 #define E_UART_INT_STATUS_RX_ERROR 0x06
85 #define E_UART_INT_STATUS_RX_TIMEOUT 0x0C
88 #define E_UART_DATA_SIZE_5BIT 0
89 #define E_UART_DATA_SIZE_6BIT 1
90 #define E_UART_DATA_SIZE_7BIT 2
91 #define E_UART_DATA_SIZE_8BIT 3
93 #define E_UART_STOP_BIT_1 0
94 #define E_UART_STOP_BIT_2 1
96 #define E_UART_PARITY_BIT_ODD 0
97 #define E_UART_PARITY_BIT_EVEN 1
99 #define E_UART_INT_DELAY_1 0
100 #define E_UART_INT_DELAY_3 1
107 static __INLINE void f_UART_BaudRateDiv(uint32_t div)
108 {
109  UART_SFRS->DIV = div;
110 }
111 
117 static __INLINE uint8_t f_UART_LineStatus(void)
118 {
119  return UART_SFRS->STATUS.BYTE;
120 }
121 
125 static __INLINE void f_UART_RxFiFoReset(void)
126 {
127 }
128 
132 static __INLINE void f_UART_TxFiFoReset(void)
133 {
134 }
135 
139 static __INLINE void f_UART_Enable(void)
140 {
141  UART_SFRS->CTRL1.UARTEN = 1;
142 }
143 
147 static __INLINE void f_UART_Disable(void)
148 {
149  UART_SFRS->CTRL1.UARTEN = 0;
150 }
151 
157 static __INLINE uint8_t f_UART_RxData(void)
158 {
159  return UART_SFRS->DATA;
160 }
161 
167 static __INLINE void f_UART_TxData(uint8_t data)
168 {
169  UART_SFRS->DATA = data;
170 }
171 
175 static __INLINE void f_UART_EnableRxIRQ(void)
176 {
177  UART_SFRS->ICTCL.URXIEN = 1;
178 }
179 
183 static __INLINE void f_UART_DisableRxIRQ(void)
184 {
185  UART_SFRS->ICTCL.URXIEN = 0;
186 }
187 
191 static __INLINE void f_UART_EnableTxIRQ(void)
192 {
193  UART_SFRS->ICTCL.UTXIEN = 1;
194 }
195 
199 static __INLINE void f_UART_DisableTxIRQ(void)
200 {
201  UART_SFRS->ICTCL.UTXIEN = 0;
202 }
203 
207 static __INLINE void f_UART_EnableRxTimeoutIRQ(void)
208 {
209  UART_SFRS->ICTCL.UTOUTIEN = 1;
210 }
211 
215 static __INLINE void f_UART_DisableRxTimeoutIRQ(void)
216 {
217  UART_SFRS->ICTCL.UTOUTIEN = 0;
218 }
219 
223 static __INLINE void f_UART_EnableRxErrorIRQ(void)
224 {
225  UART_SFRS->ICTCL.URXERREN = 1;
226 }
227 
231 static __INLINE void f_UART_DisableRxErrorIRQ(void)
232 {
233  UART_SFRS->ICTCL.URXERREN = 0;
234 }
235 
241 static __INLINE uint8_t f_UART_TxEmpty(void)
242 {
243  return UART_SFRS->STATUS.UTXEMPTY;
244 }
245 
251 static __INLINE uint8_t f_UART_RxDataReady(void)
252 {
253  return UART_SFRS->STATUS.UDTRDY;
254 }
255 
261 static __INLINE uint8_t f_UART_IntStatus(void)
262 {
263  return UART_SFRS->ICTCL.UISTTS;
264 }
265 
271 static __INLINE void f_UART_SetDataSize(uint8_t size)
272 {
273  switch (size) {
274  case 8:
275  UART_SFRS->LCTRL.USIZE = E_UART_DATA_SIZE_8BIT;
276  break;
277  case 7:
278  UART_SFRS->LCTRL.USIZE = E_UART_DATA_SIZE_7BIT;
279  break;
280  case 6:
281  UART_SFRS->LCTRL.USIZE = E_UART_DATA_SIZE_6BIT;
282  break;
283  case 5:
284  UART_SFRS->LCTRL.USIZE = E_UART_DATA_SIZE_5BIT;
285  break;
286  default:
287  UART_SFRS->LCTRL.USIZE = E_UART_DATA_SIZE_8BIT;
288  break;
289  }
290 }
291 
297 static __INLINE void f_UART_SetStopBit(uint8_t stop)
298 {
299  switch (stop) {
300  case 1:
301  UART_SFRS->LCTRL.USTOP = E_UART_STOP_BIT_1;
302  break;
303  default:
304  UART_SFRS->LCTRL.USTOP = E_UART_STOP_BIT_2;
305  break;
306  }
307 }
308 
312 static __INLINE void f_UART_SetEvenParityBit(void)
313 {
314  UART_SFRS->LCTRL.UPARITY = E_UART_PARITY_BIT_EVEN;
315 }
316 
320 static __INLINE void f_UART_SetOddParityBit(void)
321 {
322  UART_SFRS->LCTRL.UPARITY = E_UART_PARITY_BIT_ODD;
323 }
324 
328 static __INLINE void f_UART_EnableParity(void)
329 {
330  UART_SFRS->LCTRL.UPAREN = 1;
331 }
332 
336 static __INLINE void f_UART_DisableParity(void)
337 {
338  UART_SFRS->LCTRL.UPAREN = 0;
339 }
340 
344 static __INLINE void f_UART_EnableStickyParity(void)
345 {
346  UART_SFRS->LCTRL.USTICKEN = 1;
347 }
348 
352 static __INLINE void f_UART_DisableStickyParity(void)
353 {
354  UART_SFRS->LCTRL.USTICKEN = 0;
355 }
356 
360 static __INLINE void f_UART_EnableBreak(void)
361 {
362  UART_SFRS->LCTRL.UBREAKEN = 1;
363 }
364 
368 static __INLINE void f_UART_DisableBreak(void)
369 {
370  UART_SFRS->LCTRL.UBREAKEN = 0;
371 }
372 
376 static __INLINE void f_UART_EnableLoopBack(void)
377 {
378  UART_SFRS->LCTRL.ULOOPEN = 1;
379 }
380 
384 static __INLINE void f_UART_DisableLoopBack(void)
385 {
386  UART_SFRS->LCTRL.ULOOPEN = 0;
387 }
388 
392 static __INLINE void f_UART_SetInterruptDelay(uint8_t delay)
393 {
394 }
395 
396 #endif /* __UART_SFRS_H__ */
static __INLINE uint8_t f_UART_TxEmpty(void)
Check if UART transmitter empty.
Definition: uart_sfrs.h:241
#define E_UART_DATA_SIZE_5BIT
Definition: uart_sfrs.h:88
static __INLINE void f_UART_EnableStickyParity(void)
Enable UART sticky parity.
Definition: uart_sfrs.h:344
uint16_t DIV
Definition: uart_sfrs.h:67
static __INLINE uint8_t f_UART_RxDataReady(void)
check if UART data received
Definition: uart_sfrs.h:251
#define E_UART_STOP_BIT_1
Definition: uart_sfrs.h:93
#define E_UART_PARITY_BIT_EVEN
Definition: uart_sfrs.h:97
static __INLINE void f_UART_DisableBreak(void)
Disable UART break.
Definition: uart_sfrs.h:368
#define UART_SFRS
Definition: uart_sfrs.h:70
static __INLINE void f_UART_EnableBreak(void)
Enable UART break.
Definition: uart_sfrs.h:360
static __INLINE void f_UART_SetInterruptDelay(uint8_t delay)
Set UART interrupt delay in cycles.
Definition: uart_sfrs.h:392
#define E_UART_DATA_SIZE_8BIT
Definition: uart_sfrs.h:91
static __INLINE uint8_t f_UART_RxData(void)
UART receive data.
Definition: uart_sfrs.h:157
static __INLINE void f_UART_DisableLoopBack(void)
Disable UART loop back.
Definition: uart_sfrs.h:384
static __INLINE void f_UART_Enable(void)
Enable UART hardware module.
Definition: uart_sfrs.h:139
static __INLINE void f_UART_EnableRxIRQ(void)
Enable UART receiver interrupt.
Definition: uart_sfrs.h:175
static __INLINE void f_UART_SetOddParityBit(void)
Set UART parity bit as odd.
Definition: uart_sfrs.h:320
static __INLINE uint8_t f_UART_IntStatus(void)
Get UART interrupt status.
Definition: uart_sfrs.h:261
static __INLINE void f_UART_DisableRxErrorIRQ(void)
Disable UART receiver error interrupt.
Definition: uart_sfrs.h:231
static __INLINE void f_UART_DisableRxIRQ(void)
Disable UART receiver interrupt.
Definition: uart_sfrs.h:183
static __INLINE void f_UART_EnableRxTimeoutIRQ(void)
Enable UART receiver time out interrupt.
Definition: uart_sfrs.h:207
static __INLINE void f_UART_EnableTxIRQ(void)
Enable UART transmitter interrupt.
Definition: uart_sfrs.h:191
static __INLINE void f_UART_DisableTxIRQ(void)
Disable UART transmitter interrupt.
Definition: uart_sfrs.h:199
static __INLINE void f_UART_EnableRxErrorIRQ(void)
Enable UART receiver error interrupt.
Definition: uart_sfrs.h:223
#define E_UART_DATA_SIZE_7BIT
Definition: uart_sfrs.h:90
#define E_UART_PARITY_BIT_ODD
Definition: uart_sfrs.h:96
static __INLINE void f_UART_DisableRxTimeoutIRQ(void)
Disable UART receiver time out interrupt.
Definition: uart_sfrs.h:215
static __INLINE void f_UART_DisableParity(void)
Disable UART parity.
Definition: uart_sfrs.h:336
uint8_t BYTE
Definition: uart_sfrs.h:32
static __INLINE uint8_t f_UART_LineStatus(void)
Get UART line status.
Definition: uart_sfrs.h:117
uint8_t DATA
Definition: uart_sfrs.h:19
static __INLINE void f_UART_EnableParity(void)
Enable UART parity.
Definition: uart_sfrs.h:328
static __INLINE void f_UART_SetStopBit(uint8_t stop)
Set UART stop bit size in number of bits.
Definition: uart_sfrs.h:297
static __INLINE void f_UART_EnableLoopBack(void)
Enable UART loop back.
Definition: uart_sfrs.h:376
static __INLINE void f_UART_TxData(uint8_t data)
UART transmit data.
Definition: uart_sfrs.h:167
static __INLINE void f_UART_Disable(void)
Disable UART hardware module.
Definition: uart_sfrs.h:147
#define E_UART_DATA_SIZE_6BIT
Definition: uart_sfrs.h:89
A structure to represent Special Function Registers for UART.
Definition: uart_sfrs.h:18
#define E_UART_STOP_BIT_2
Definition: uart_sfrs.h:94
static __INLINE void f_UART_SetEvenParityBit(void)
Set UART parity bit as even.
Definition: uart_sfrs.h:312
static __INLINE void f_UART_SetDataSize(uint8_t size)
Set UART data size in number of bits.
Definition: uart_sfrs.h:271
static __INLINE void f_UART_TxFiFoReset(void)
Reset UART transmitter FIFO.
Definition: uart_sfrs.h:132
static __INLINE void f_UART_RxFiFoReset(void)
Reset UART receiver FIFO.
Definition: uart_sfrs.h:125
static __INLINE void f_UART_DisableStickyParity(void)
Disable UART sticky parity.
Definition: uart_sfrs.h:352