Kamcho Library 02.00.03  lib.kamcho.02.00.03.287
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 RESERVED: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 RXFFRST:1;
49  uint8_t TXFFRST:1;
50  uint8_t INTDELAY:1;
51  uint8_t UARTEN:1;
52  uint8_t Reserved:4;
53  };
54  uint8_t BYTE;
55  } CTRL1;
56  union {
57  struct {
58  uint8_t UDTRDY:1;
59  uint8_t UOVRUNERR:1;
60  uint8_t UPRTYERR:1;
61  uint8_t UFRMERR:1;
62  uint8_t UBREAKINT:1;
63  uint8_t UTXFFEMPTY:1;
64  uint8_t UTXEMPTY:1;
65  uint8_t UERR:1;
66  };
67  uint8_t BYTE;
68  } STATUS;
69  uint16_t DIV;
70 } UART_SFRS_t;
71 
72 #define UART_SFRS ((__IO UART_SFRS_t *) (SDIO_BASE + 0x10))
74 #define E_UART_STATUS_DATA_READY ((uint8_t) (1<<0))
75 #define E_UART_STATUS_OVERRUN_ERROR ((uint8_t) (1<<1))
76 #define E_UART_STATUS_PARITY_ERROR ((uint8_t) (1<<2))
77 #define E_UART_STATUS_FRAME_ERROR ((uint8_t) (1<<3))
78 #define E_UART_STATUS_BREAKINT_ERROR ((uint8_t) (1<<4))
79 #define E_UART_STATUS_TX_FIFO_EMPTY ((uint8_t) (1<<5))
80 #define E_UART_STATUS_TX_EMPTY ((uint8_t) (1<<6))
81 #define E_UART_STATUS_ERROR ((uint8_t) (1<<7))
83 #define E_UART_INT_STATUS_NONE 0x01
84 #define E_UART_INT_STATUS_TX_COMPLETE 0x02
85 #define E_UART_INT_STATUS_RX_READY 0x04
86 #define E_UART_INT_STATUS_RX_ERROR 0x06
87 #define E_UART_INT_STATUS_RX_TIMEOUT 0x0C
90 #define E_UART_DATA_SIZE_5BIT 0
91 #define E_UART_DATA_SIZE_6BIT 1
92 #define E_UART_DATA_SIZE_7BIT 2
93 #define E_UART_DATA_SIZE_8BIT 3
95 #define E_UART_STOP_BIT_1 0
96 #define E_UART_STOP_BIT_2 1
98 #define E_UART_PARITY_BIT_ODD 0
99 #define E_UART_PARITY_BIT_EVEN 1
101 #define E_UART_INT_DELAY_1 0
102 #define E_UART_INT_DELAY_3 1
109 static __INLINE void f_UART_BaudRateDiv(uint32_t div)
110 {
111  UART_SFRS->DIV = div;
112 }
113 
119 static __INLINE uint8_t f_UART_LineStatus(void)
120 {
121  return UART_SFRS->STATUS.BYTE;
122 }
123 
127 static __INLINE void f_UART_RxFiFoReset(void)
128 {
129  UART_SFRS->CTRL1.RXFFRST = 1;
130 }
131 
135 static __INLINE void f_UART_TxFiFoReset(void)
136 {
137  UART_SFRS->CTRL1.TXFFRST = 1;
138 }
139 
143 static __INLINE void f_UART_Enable(void)
144 {
145  UART_SFRS->CTRL1.UARTEN = 1;
146 }
147 
151 static __INLINE void f_UART_Disable(void)
152 {
153  UART_SFRS->CTRL1.UARTEN = 0;
154 }
155 
161 static __INLINE uint8_t f_UART_RxData(void)
162 {
163  return UART_SFRS->DATA;
164 }
165 
171 static __INLINE void f_UART_TxData(uint8_t data)
172 {
173  UART_SFRS->DATA = data;
174 }
175 
179 static __INLINE void f_UART_EnableRxIRQ(void)
180 {
181  UART_SFRS->ICTCL.URXIEN = 1;
182 }
183 
187 static __INLINE void f_UART_DisableRxIRQ(void)
188 {
189  UART_SFRS->ICTCL.URXIEN = 0;
190 }
191 
195 static __INLINE void f_UART_EnableTxIRQ(void)
196 {
197  UART_SFRS->ICTCL.UTXIEN = 1;
198 }
199 
203 static __INLINE void f_UART_DisableTxIRQ(void)
204 {
205  UART_SFRS->ICTCL.UTXIEN = 0;
206 }
207 
211 static __INLINE void f_UART_EnableRxTimeoutIRQ(void)
212 {
213  UART_SFRS->ICTCL.UTOUTIEN = 1;
214 }
215 
219 static __INLINE void f_UART_DisableRxTimeoutIRQ(void)
220 {
221  UART_SFRS->ICTCL.UTOUTIEN = 0;
222 }
223 
227 static __INLINE void f_UART_EnableRxErrorIRQ(void)
228 {
229  UART_SFRS->ICTCL.URXERREN = 1;
230 }
231 
235 static __INLINE void f_UART_DisableRxErrorIRQ(void)
236 {
237  UART_SFRS->ICTCL.URXERREN = 0;
238 }
239 
245 static __INLINE uint8_t f_UART_TxEmpty(void)
246 {
247  return UART_SFRS->STATUS.UTXEMPTY;
248 }
249 
255 static __INLINE uint8_t f_UART_RxDataReady(void)
256 {
257  return UART_SFRS->STATUS.UDTRDY;
258 }
259 
265 static __INLINE uint8_t f_UART_IntStatus(void)
266 {
267  return UART_SFRS->ICTCL.UISTTS;
268 }
269 
275 static __INLINE void f_UART_SetDataSize(uint8_t size)
276 {
277  switch (size) {
278  case 8:
279  UART_SFRS->LCTRL.USIZE = E_UART_DATA_SIZE_8BIT;
280  break;
281  case 7:
282  UART_SFRS->LCTRL.USIZE = E_UART_DATA_SIZE_7BIT;
283  break;
284  case 6:
285  UART_SFRS->LCTRL.USIZE = E_UART_DATA_SIZE_6BIT;
286  break;
287  case 5:
288  UART_SFRS->LCTRL.USIZE = E_UART_DATA_SIZE_5BIT;
289  break;
290  default:
291  UART_SFRS->LCTRL.USIZE = E_UART_DATA_SIZE_8BIT;
292  break;
293  }
294 }
295 
301 static __INLINE void f_UART_SetStopBit(uint8_t stop)
302 {
303  switch (stop) {
304  case 1:
305  UART_SFRS->LCTRL.USTOP = E_UART_STOP_BIT_1;
306  break;
307  default:
308  UART_SFRS->LCTRL.USTOP = E_UART_STOP_BIT_2;
309  break;
310  }
311 }
312 
316 static __INLINE void f_UART_SetEvenParityBit(void)
317 {
318  UART_SFRS->LCTRL.UPARITY = E_UART_PARITY_BIT_EVEN;
319 }
320 
324 static __INLINE void f_UART_SetOddParityBit(void)
325 {
326  UART_SFRS->LCTRL.UPARITY = E_UART_PARITY_BIT_ODD;
327 }
328 
332 static __INLINE void f_UART_EnableParity(void)
333 {
334  UART_SFRS->LCTRL.UPAREN = 1;
335 }
336 
340 static __INLINE void f_UART_DisableParity(void)
341 {
342  UART_SFRS->LCTRL.UPAREN = 0;
343 }
344 
348 static __INLINE void f_UART_EnableStickyParity(void)
349 {
350  UART_SFRS->LCTRL.USTICKEN = 1;
351 }
352 
356 static __INLINE void f_UART_DisableStickyParity(void)
357 {
358  UART_SFRS->LCTRL.USTICKEN = 0;
359 }
360 
364 static __INLINE void f_UART_EnableBreak(void)
365 {
366  UART_SFRS->LCTRL.UBREAKEN = 1;
367 }
368 
372 static __INLINE void f_UART_DisableBreak(void)
373 {
374  UART_SFRS->LCTRL.UBREAKEN = 0;
375 }
376 
380 static __INLINE void f_UART_EnableLoopBack(void)
381 {
382  UART_SFRS->LCTRL.ULOOPEN = 1;
383 }
384 
388 static __INLINE void f_UART_DisableLoopBack(void)
389 {
390  UART_SFRS->LCTRL.ULOOPEN = 0;
391 }
392 
396 static __INLINE void f_UART_SetInterruptDelay(uint8_t delay)
397 {
398  switch (delay) {
399  case 0:
400  UART_SFRS->CTRL1.INTDELAY = E_UART_INT_DELAY_1;
401  break;
402  default:
403  UART_SFRS->CTRL1.INTDELAY = E_UART_INT_DELAY_3;
404  break;
405  }
406 }
407 
408 #endif /* __UART_SFRS_H__ */
static __INLINE uint8_t f_UART_TxEmpty(void)
Check if UART transmitter empty.
Definition: uart_sfrs.h:245
#define E_UART_DATA_SIZE_5BIT
Definition: uart_sfrs.h:90
static __INLINE void f_UART_EnableStickyParity(void)
Enable UART sticky parity.
Definition: uart_sfrs.h:348
uint16_t DIV
Definition: uart_sfrs.h:69
static __INLINE uint8_t f_UART_RxDataReady(void)
check if UART data received
Definition: uart_sfrs.h:255
#define E_UART_STOP_BIT_1
Definition: uart_sfrs.h:95
#define E_UART_PARITY_BIT_EVEN
Definition: uart_sfrs.h:99
static __INLINE void f_UART_DisableBreak(void)
Disable UART break.
Definition: uart_sfrs.h:372
#define UART_SFRS
Definition: uart_sfrs.h:72
static __INLINE void f_UART_EnableBreak(void)
Enable UART break.
Definition: uart_sfrs.h:364
static __INLINE void f_UART_SetInterruptDelay(uint8_t delay)
Set UART interrupt delay in cycles.
Definition: uart_sfrs.h:396
#define E_UART_DATA_SIZE_8BIT
Definition: uart_sfrs.h:93
static __INLINE uint8_t f_UART_RxData(void)
UART receive data.
Definition: uart_sfrs.h:161
static __INLINE void f_UART_DisableLoopBack(void)
Disable UART loop back.
Definition: uart_sfrs.h:388
static __INLINE void f_UART_Enable(void)
Enable UART hardware module.
Definition: uart_sfrs.h:143
static __INLINE void f_UART_EnableRxIRQ(void)
Enable UART receiver interrupt.
Definition: uart_sfrs.h:179
static __INLINE void f_UART_SetOddParityBit(void)
Set UART parity bit as odd.
Definition: uart_sfrs.h:324
static __INLINE uint8_t f_UART_IntStatus(void)
Get UART interrupt status.
Definition: uart_sfrs.h:265
static __INLINE void f_UART_DisableRxErrorIRQ(void)
Disable UART receiver error interrupt.
Definition: uart_sfrs.h:235
static __INLINE void f_UART_DisableRxIRQ(void)
Disable UART receiver interrupt.
Definition: uart_sfrs.h:187
static __INLINE void f_UART_EnableRxTimeoutIRQ(void)
Enable UART receiver time out interrupt.
Definition: uart_sfrs.h:211
static __INLINE void f_UART_EnableTxIRQ(void)
Enable UART transmitter interrupt.
Definition: uart_sfrs.h:195
static __INLINE void f_UART_DisableTxIRQ(void)
Disable UART transmitter interrupt.
Definition: uart_sfrs.h:203
static __INLINE void f_UART_EnableRxErrorIRQ(void)
Enable UART receiver error interrupt.
Definition: uart_sfrs.h:227
#define E_UART_DATA_SIZE_7BIT
Definition: uart_sfrs.h:92
#define E_UART_PARITY_BIT_ODD
Definition: uart_sfrs.h:98
static __INLINE void f_UART_DisableRxTimeoutIRQ(void)
Disable UART receiver time out interrupt.
Definition: uart_sfrs.h:219
static __INLINE void f_UART_DisableParity(void)
Disable UART parity.
Definition: uart_sfrs.h:340
uint8_t BYTE
Definition: uart_sfrs.h:32
static __INLINE uint8_t f_UART_LineStatus(void)
Get UART line status.
Definition: uart_sfrs.h:119
uint8_t DATA
Definition: uart_sfrs.h:19
static __INLINE void f_UART_EnableParity(void)
Enable UART parity.
Definition: uart_sfrs.h:332
static __INLINE void f_UART_SetStopBit(uint8_t stop)
Set UART stop bit size in number of bits.
Definition: uart_sfrs.h:301
static __INLINE void f_UART_EnableLoopBack(void)
Enable UART loop back.
Definition: uart_sfrs.h:380
static __INLINE void f_UART_TxData(uint8_t data)
UART transmit data.
Definition: uart_sfrs.h:171
static __INLINE void f_UART_Disable(void)
Disable UART hardware module.
Definition: uart_sfrs.h:151
#define E_UART_INT_DELAY_1
Definition: uart_sfrs.h:101
#define E_UART_DATA_SIZE_6BIT
Definition: uart_sfrs.h:91
#define E_UART_INT_DELAY_3
Definition: uart_sfrs.h:102
A structure to represent Special Function Registers for UART.
Definition: uart_sfrs.h:18
#define E_UART_STOP_BIT_2
Definition: uart_sfrs.h:96
static __INLINE void f_UART_SetEvenParityBit(void)
Set UART parity bit as even.
Definition: uart_sfrs.h:316
static __INLINE void f_UART_SetDataSize(uint8_t size)
Set UART data size in number of bits.
Definition: uart_sfrs.h:275
static __INLINE void f_UART_TxFiFoReset(void)
Reset UART transmitter FIFO.
Definition: uart_sfrs.h:135
static __INLINE void f_UART_RxFiFoReset(void)
Reset UART receiver FIFO.
Definition: uart_sfrs.h:127
static __INLINE void f_UART_DisableStickyParity(void)
Disable UART sticky parity.
Definition: uart_sfrs.h:356