HPM SDK
HPMicro Software Development Kit
hpm_uart_drv.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021-2022 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef HPM_UART_DRV_H
9 #define HPM_UART_DRV_H
10 #include "hpm_common.h"
11 #include "hpm_uart_regs.h"
12 #include "hpm_soc_feature.h"
13 
25 enum {
27 };
28 
29 /* @brief Parity */
30 typedef enum parity {
37 
38 /* @brief Stop bits */
39 typedef enum num_of_stop_bits {
44 
45 /* @brief Word length */
46 typedef enum word_length {
52 
53 /* @brief UART fifo trigger levels */
54 typedef enum uart_fifo_trg_lvl {
55 #if defined(HPM_IP_FEATURE_UART_FINE_FIFO_THRLD) && (HPM_IP_FEATURE_UART_FINE_FIFO_THRLD == 1)
72 
77 
82 #else
87 
92 #endif
94 
95 /* @brief UART signals */
96 typedef enum uart_signal {
99 
100 /* @brief UART signal levels */
101 typedef enum uart_signal_level {
105 
106 /* @brief UART modem status */
107 typedef enum uart_modem_stat {
111 
112 /* @brief UART interrupt enable masks */
113 typedef enum uart_intr_enable {
118 #if defined(HPM_IP_FEATURE_UART_RX_IDLE_DETECT) && (HPM_IP_FEATURE_UART_RX_IDLE_DETECT == 1)
120 #endif
121 #if defined(HPM_IP_FEATURE_UART_9BIT_MODE) && (HPM_IP_FEATURE_UART_9BIT_MODE == 1)
123 #endif
124 #if defined(HPM_IP_FEATURE_UART_ADDR_MATCH) && (HPM_IP_FEATURE_UART_ADDR_MATCH == 1)
128 #endif
130 
131 /* @brief UART interrupt IDs */
132 typedef enum uart_intr_id {
139 
140 /* @brief UART status */
141 typedef enum uart_stat {
142  uart_stat_data_ready = UART_LSR_DR_MASK, /* rx data ready in fifo */
151 
155 typedef struct uart_modem_config {
160 
161 #if defined(HPM_IP_FEATURE_UART_RX_IDLE_DETECT) && (HPM_IP_FEATURE_UART_RX_IDLE_DETECT == 1)
169 
177  uint8_t threshold;
179 #endif
180 
184 typedef struct hpm_uart_config {
185  uint32_t src_freq_in_hz;
186  uint32_t baudrate;
188  uint8_t word_length;
189  uint8_t parity;
190  uint8_t tx_fifo_level;
191  uint8_t rx_fifo_level;
192  bool dma_enable;
193  bool fifo_enable;
195 #if defined(HPM_IP_FEATURE_UART_RX_IDLE_DETECT) && (HPM_IP_FEATURE_UART_RX_IDLE_DETECT == 1)
197 #endif
198 #if defined(HPM_IP_FEATURE_UART_9BIT_MODE) && (HPM_IP_FEATURE_UART_9BIT_MODE == 1)
200 #endif
201 #if defined(HPM_IP_FEATURE_UART_RX_EN) && (HPM_IP_FEATURE_UART_RX_EN == 1)
202  bool rx_enable;
203 #endif
205 
206 #if defined(HPM_IP_FEATURE_UART_TRIG_MODE) && (HPM_IP_FEATURE_UART_TRIG_MODE == 1)
207 typedef struct {
208  uint16_t stop_bit_len;
211  bool trig_mode;
214 #endif
215 
216 typedef struct {
217  uint8_t tx_fifo_level;
218  uint8_t rx_fifo_level;
221  bool dma_enable;
222  bool fifo_enable;
224 
225 #ifdef __cplusplus
226 extern "C" {
227 #endif
228 
235 static inline uint8_t uart_get_fifo_size(UART_Type *ptr)
236 {
237  return 16 << ((ptr->CFG & UART_CFG_FIFOSIZE_MASK) >> UART_CFG_FIFOSIZE_SHIFT);
238 }
239 
249 
258 static inline void uart_clear_rx_fifo(UART_Type *ptr)
259 {
260  while (ptr->LSR & UART_LSR_DR_MASK) {
261  ptr->RBR;
262  }
263 }
264 
270 static inline void uart_reset_tx_fifo(UART_Type *ptr)
271 {
272 #if defined(HPM_IP_FEATURE_UART_FCRR) && (HPM_IP_FEATURE_UART_FCRR == 1)
274 #else
275  ptr->FCR = UART_FCR_TFIFORST_MASK | (ptr->GPR);
276 #endif
277 }
278 
284 static inline void uart_reset_rx_fifo(UART_Type *ptr)
285 {
286 #if defined(HPM_IP_FEATURE_UART_FCRR) && (HPM_IP_FEATURE_UART_FCRR == 1)
288 #else
289  ptr->FCR = UART_FCR_RFIFORST_MASK | (ptr->GPR);
290 #endif
291 }
292 
298 static inline void uart_reset_all_fifo(UART_Type *ptr)
299 {
300 #if defined(HPM_IP_FEATURE_UART_FCRR) && (HPM_IP_FEATURE_UART_FCRR == 1)
302 #else
304 #endif
305 }
306 
312 static inline void uart_modem_enable_loopback(UART_Type *ptr)
313 {
314  ptr->MCR |= UART_MCR_LOOP_MASK;
315 }
316 
322 static inline void uart_modem_disable_loopback(UART_Type *ptr)
323 {
324  ptr->MCR &= ~UART_MCR_LOOP_MASK;
325 }
326 
334 {
335  ptr->MCR &= ~UART_MCR_AFE_MASK;
336 }
337 
344 {
345  ptr->MCR |= UART_MCR_AFE_MASK;
346 }
347 
354 static inline void uart_modem_config(UART_Type *ptr, uart_modem_config_t *config)
355 {
356  ptr->MCR = UART_MCR_AFE_SET(config->auto_flow_ctrl_en)
358  | UART_MCR_RTS_SET(!config->set_rts_high);
359 }
360 
367 static inline uint8_t uart_get_modem_status(UART_Type *ptr)
368 {
369  return ptr->MSR;
370 }
371 
378 static inline void uart_write_byte(UART_Type *ptr, uint8_t c)
379 {
380  ptr->THR = UART_THR_THR_SET(c);
381 }
382 
383 
390 static inline uint8_t uart_read_byte(UART_Type *ptr)
391 {
392  return (ptr->RBR & UART_RBR_RBR_MASK);
393 }
394 
404 {
405  return ((ptr->MSR & mask) != 0U) ? true : false;
406 }
407 
414 static inline void uart_disable_irq(UART_Type *ptr, uart_intr_enable_t irq_mask)
415 {
416  ptr->IER &= ~irq_mask;
417 }
418 
425 static inline void uart_enable_irq(UART_Type *ptr, uart_intr_enable_t irq_mask)
426 {
427  ptr->IER |= irq_mask;
428 }
429 
436 static inline uint32_t uart_get_enabled_irq(UART_Type *ptr)
437 {
438  return ptr->IER;
439 }
440 
447 static inline uint8_t uart_get_irq_id(UART_Type *ptr)
448 {
449  return (ptr->IIR & UART_IIR_INTRID_MASK);
450 }
451 
452 #if defined(HPM_IP_FEATURE_UART_RX_IDLE_DETECT) && (HPM_IP_FEATURE_UART_RX_IDLE_DETECT == 1)
453 
454 /* if HPM_IP_FEATURE_UART_E00018_FIX = 1, the IIR2 register exists, should use IIR2 to get/clear rx idle status */
455 #if !defined(HPM_IP_FEATURE_UART_E00018_FIX) || (HPM_IP_FEATURE_UART_E00018_FIX == 0)
460 static inline bool uart_is_rxline_idle(UART_Type *ptr)
461 {
462  return ((ptr->IIR & UART_IIR_RXIDLE_FLAG_MASK) != 0U) ? true : false;
463 }
464 
469 static inline void uart_clear_rxline_idle_flag(UART_Type *ptr)
470 {
471  ptr->IIR = UART_IIR_RXIDLE_FLAG_MASK; /* Write-1-Clear Logic */
472  ptr->FCR = ptr->GPR;
473 }
474 #endif
475 
481 {
483 }
484 
491 {
493 }
494 
502 
503 #endif
504 
505 #if defined(HPM_IP_FEATURE_UART_E00018_FIX) && (HPM_IP_FEATURE_UART_E00018_FIX == 1)
510 static inline bool uart_is_txline_idle(UART_Type *ptr)
511 {
512  return ((ptr->IIR2 & UART_IIR2_TXIDLE_FLAG_MASK) != 0U) ? true : false;
513 }
514 
519 static inline void uart_clear_txline_idle_flag(UART_Type *ptr)
520 {
521  ptr->IIR2 = UART_IIR2_TXIDLE_FLAG_MASK; /* Write-1-Clear Logic */
522 }
523 
528 static inline bool uart_is_rxline_idle(UART_Type *ptr)
529 {
530  return ((ptr->IIR2 & UART_IIR2_RXIDLE_FLAG_MASK) != 0U) ? true : false;
531 }
532 
537 static inline void uart_clear_rxline_idle_flag(UART_Type *ptr)
538 {
539  ptr->IIR2 = UART_IIR2_RXIDLE_FLAG_MASK; /* Write-1-Clear Logic */
540 }
541 #endif
542 
543 #if defined(HPM_IP_FEATURE_UART_9BIT_MODE) && (HPM_IP_FEATURE_UART_9BIT_MODE == 1)
549 {
551 }
552 
559 {
561 }
562 
570 
571 #endif
572 
573 
574 
581 static inline uint8_t uart_get_status(UART_Type *ptr)
582 {
583  return ptr->LSR;
584 }
585 
595 static inline bool uart_check_status(UART_Type *ptr, uart_stat_t mask)
596 {
597  return ((ptr->LSR & mask) != 0U) ? true : false;
598 }
599 
606 void uart_default_config(UART_Type *ptr, uart_config_t *config);
607 
616 
624 hpm_stat_t uart_send_byte(UART_Type *ptr, uint8_t c);
625 
633 hpm_stat_t uart_receive_byte(UART_Type *ptr, uint8_t *c);
634 
643  uart_signal_t signal,
644  uart_signal_level_t level);
645 
653 
662 hpm_stat_t uart_receive_data(UART_Type *ptr, uint8_t *buf, uint32_t size_in_byte);
663 
672 hpm_stat_t uart_send_data(UART_Type *ptr, uint8_t *buf, uint32_t size_in_byte);
673 
686 hpm_stat_t uart_set_baudrate(UART_Type *ptr, uint32_t baudrate, uint32_t src_clock_hz);
687 
688 
689 #if defined(HPM_IP_FEATURE_UART_TRIG_MODE) && (HPM_IP_FEATURE_UART_TRIG_MODE == 1)
699 
707 static inline void uart_software_trig_transfer(UART_Type *ptr)
708 {
711 }
712 
721 static inline void uart_enable_hardware_trig_transfer(UART_Type *ptr, bool enable)
722 {
723  if (enable) {
725  } else {
727  }
728 }
729 
736 static inline uint8_t uart_get_data_count_in_rx_fifo(UART_Type *ptr)
737 {
738  return UART_LSR_RFIFO_NUM_GET(ptr->LSR);
739 }
740 
747 static inline uint8_t uart_get_data_count_in_tx_fifo(UART_Type *ptr)
748 {
749  return UART_LSR_TFIFO_NUM_GET(ptr->LSR);
750 }
751 #endif
752 
753 #if defined(HPM_IP_FEATURE_UART_ADDR_MATCH) && (HPM_IP_FEATURE_UART_ADDR_MATCH == 1)
760 static inline void uart_enable_9bit_transmit_mode(UART_Type *ptr, bool enable)
761 {
762  if (enable) {
766  } else {
770  }
771 }
772 
779 static inline void uart_enable_address0_match(UART_Type *ptr, uint8_t addr)
780 {
783 }
784 
791 static inline void uart_enable_address1_match(UART_Type *ptr, uint8_t addr)
792 {
795 }
796 
802 static inline void uart_disable_address0_match(UART_Type *ptr)
803 {
805 }
806 
812 static inline void uart_disable_address1_match(UART_Type *ptr)
813 {
815 }
816 
822 static inline void uart_disable_address_match(UART_Type *ptr)
823 {
825 }
826 
827 #endif
828 
829 #ifdef __cplusplus
830 }
831 #endif
836 #endif /* HPM_UART_DRV_H */
uint32_t hpm_stat_t
Definition: hpm_common.h:119
#define MAKE_STATUS(group, code)
Definition: hpm_common.h:128
@ status_group_uart
Definition: hpm_common.h:132
void uart_config_transfer_trig_mode(UART_Type *ptr, uart_trig_config_t *config)
uart configure transfer trigger mode
Definition: hpm_uart_drv.c:347
hpm_stat_t uart_flush(UART_Type *ptr)
Flush sending buffer/fifo.
Definition: hpm_uart_drv.c:239
enum num_of_stop_bits num_of_stop_bits_t
static void uart_modem_enable_loopback(UART_Type *ptr)
Enable modem loopback.
Definition: hpm_uart_drv.h:312
hpm_stat_t uart_init(UART_Type *ptr, uart_config_t *config)
Initialization.
Definition: hpm_uart_drv.c:96
static void uart_disable_address0_match(UART_Type *ptr)
uart disable address0 match
Definition: hpm_uart_drv.h:802
hpm_stat_t uart_receive_data(UART_Type *ptr, uint8_t *buf, uint32_t size_in_byte)
Receive bytes blocking.
Definition: hpm_uart_drv.c:284
static uint8_t uart_get_status(UART_Type *ptr)
Get status.
Definition: hpm_uart_drv.h:581
uart_signal
Definition: hpm_uart_drv.h:96
enum uart_intr_enable uart_intr_enable_t
hpm_stat_t uart_set_baudrate(UART_Type *ptr, uint32_t baudrate, uint32_t src_clock_hz)
Sets UART baudrate.
Definition: hpm_uart_drv.c:198
static void uart_enable_address1_match(UART_Type *ptr, uint8_t addr)
uart enable address1 match
Definition: hpm_uart_drv.h:791
static void uart_modem_disable_auto_flow_control(UART_Type *ptr)
Disable modem auto flow control.
Definition: hpm_uart_drv.h:333
hpm_stat_t uart_init_txline_idle_detection(UART_Type *ptr, uart_rxline_idle_config_t txidle_config)
Configure UART TX Line detection.
Definition: hpm_uart_drv.c:327
static bool uart_check_status(UART_Type *ptr, uart_stat_t mask)
Check uart status according to the given status mask.
Definition: hpm_uart_drv.h:595
static bool uart_check_modem_status(UART_Type *ptr, uart_modem_stat_t mask)
Check modem status with given mask.
Definition: hpm_uart_drv.h:403
uart_modem_stat
Definition: hpm_uart_drv.h:107
static void uart_disable_irq(UART_Type *ptr, uart_intr_enable_t irq_mask)
Disable IRQ with mask.
Definition: hpm_uart_drv.h:414
static void uart_disable_txline_idle_detection(UART_Type *ptr)
Disable UART TX Idle Line detection logic.
Definition: hpm_uart_drv.h:558
enum hpm_uart_rxline_idle_cond uart_rxline_idle_cond_t
UART Idle detection conditions, suitable for RX and TX.
static void uart_software_trig_transfer(UART_Type *ptr)
uart software trigger transmit
Definition: hpm_uart_drv.h:707
hpm_stat_t uart_send_data(UART_Type *ptr, uint8_t *buf, uint32_t size_in_byte)
Send bytes blocking.
Definition: hpm_uart_drv.c:294
enum uart_intr_id uart_intr_id_t
enum word_length word_length_t
static void uart_enable_txline_idle_detection(UART_Type *ptr)
Enable UART TX Idle Line detection logic.
Definition: hpm_uart_drv.h:548
uart_intr_id
Definition: hpm_uart_drv.h:132
static uint8_t uart_get_data_count_in_rx_fifo(UART_Type *ptr)
UART get data count in rx fifo.
Definition: hpm_uart_drv.h:736
static void uart_enable_address0_match(UART_Type *ptr, uint8_t addr)
uart enable address0 match
Definition: hpm_uart_drv.h:779
static bool uart_is_txline_idle(UART_Type *ptr)
Determine whether UART TX Line is idle.
Definition: hpm_uart_drv.h:510
static void uart_clear_txline_idle_flag(UART_Type *ptr)
Clear UART TX Line Idle Flag.
Definition: hpm_uart_drv.h:519
parity
Definition: hpm_uart_drv.h:30
enum uart_stat uart_stat_t
static uint8_t uart_get_irq_id(UART_Type *ptr)
Get interrupt identification.
Definition: hpm_uart_drv.h:447
static void uart_modem_enable_auto_flow_control(UART_Type *ptr)
Enable modem auto flow control.
Definition: hpm_uart_drv.h:343
enum uart_modem_stat uart_modem_stat_t
hpm_uart_rxline_idle_cond
UART Idle detection conditions, suitable for RX and TX.
Definition: hpm_uart_drv.h:165
hpm_stat_t uart_send_byte(UART_Type *ptr, uint8_t c)
Send one byte after checking thresh hold status.
Definition: hpm_uart_drv.c:220
static void uart_disable_rxline_idle_detection(UART_Type *ptr)
Disable UART RX Idle Line detection logic.
Definition: hpm_uart_drv.h:490
struct hpm_uart_config uart_config_t
UART config.
static void uart_enable_9bit_transmit_mode(UART_Type *ptr, bool enable)
uart enable 9bit transmit mode
Definition: hpm_uart_drv.h:760
static void uart_reset_tx_fifo(UART_Type *ptr)
Reset TX Fifo.
Definition: hpm_uart_drv.h:270
uart_signal_level
Definition: hpm_uart_drv.h:101
static uint8_t uart_read_byte(UART_Type *ptr)
Read byte from RX.
Definition: hpm_uart_drv.h:390
word_length
Definition: hpm_uart_drv.h:46
static void uart_enable_rxline_idle_detection(UART_Type *ptr)
Enable UART RX Idle Line detection logic.
Definition: hpm_uart_drv.h:480
hpm_stat_t uart_init_rxline_idle_detection(UART_Type *ptr, uart_rxline_idle_config_t rxidle_config)
Configure UART RX Line detection.
Definition: hpm_uart_drv.c:306
struct uart_modem_config uart_modem_config_t
UART modem config.
static void uart_enable_irq(UART_Type *ptr, uart_intr_enable_t irq_mask)
Enable IRQ with mask.
Definition: hpm_uart_drv.h:425
static void uart_modem_config(UART_Type *ptr, uart_modem_config_t *config)
Configure modem.
Definition: hpm_uart_drv.h:354
num_of_stop_bits
Definition: hpm_uart_drv.h:39
static void uart_disable_address1_match(UART_Type *ptr)
uart disable address1 match
Definition: hpm_uart_drv.h:812
enum uart_signal_level uart_signal_level_t
void uart_default_config(UART_Type *ptr, uart_config_t *config)
Get default config.
Definition: hpm_uart_drv.c:27
static uint8_t uart_get_fifo_size(UART_Type *ptr)
Get fifo size.
Definition: hpm_uart_drv.h:235
static void uart_enable_hardware_trig_transfer(UART_Type *ptr, bool enable)
uart enable hardware trigger mode
Definition: hpm_uart_drv.h:721
enum uart_signal uart_signal_t
struct hpm_uart_rxline_idle_detect_config uart_rxline_idle_config_t
UART Idle config, suitable for RX and TX.
static void uart_write_byte(UART_Type *ptr, uint8_t c)
Write byte to TX.
Definition: hpm_uart_drv.h:378
uart_fifo_trg_lvl
Definition: hpm_uart_drv.h:54
static void uart_reset_rx_fifo(UART_Type *ptr)
Reset RX Fifo.
Definition: hpm_uart_drv.h:284
hpm_stat_t uart_receive_byte(UART_Type *ptr, uint8_t *c)
Receive one byte after checking data ready status.
Definition: hpm_uart_drv.c:256
static void uart_reset_all_fifo(UART_Type *ptr)
[in] Reset both TX and RX Fifo
Definition: hpm_uart_drv.h:298
enum parity parity_setting_t
void uart_config_fifo_ctrl(UART_Type *ptr, uart_fifo_ctrl_t *ctrl)
uart config fifo control
Definition: hpm_uart_drv.c:358
enum uart_fifo_trg_lvl uart_fifo_trg_lvl_t
void uart_set_signal_level(UART_Type *ptr, uart_signal_t signal, uart_signal_level_t level)
Set uart signal output level.
Definition: hpm_uart_drv.c:275
static uint8_t uart_get_modem_status(UART_Type *ptr)
Get modem status.
Definition: hpm_uart_drv.h:367
static uint32_t uart_get_enabled_irq(UART_Type *ptr)
Get Enabled IRQ.
Definition: hpm_uart_drv.h:436
static void uart_disable_address_match(UART_Type *ptr)
uart disable address match(address0 and address1)
Definition: hpm_uart_drv.h:822
static uint8_t uart_get_data_count_in_tx_fifo(UART_Type *ptr)
UART get data count in tx fifo.
Definition: hpm_uart_drv.h:747
uart_stat
Definition: hpm_uart_drv.h:141
static void uart_clear_rx_fifo(UART_Type *ptr)
uart clear rx fifo by reading data
Definition: hpm_uart_drv.h:258
static void uart_clear_rxline_idle_flag(UART_Type *ptr)
Clear UART RX Line Idle Flag.
Definition: hpm_uart_drv.h:537
static bool uart_is_rxline_idle(UART_Type *ptr)
Determine whether UART RX Line is idle.
Definition: hpm_uart_drv.h:528
uart_intr_enable
Definition: hpm_uart_drv.h:113
static void uart_modem_disable_loopback(UART_Type *ptr)
Disable modem loopback.
Definition: hpm_uart_drv.h:322
@ status_uart_no_suitable_baudrate_parameter_found
Definition: hpm_uart_drv.h:26
@ uart_signal_rts
Definition: hpm_uart_drv.h:97
@ uart_modem_stat_cts
Definition: hpm_uart_drv.h:108
@ uart_modem_stat_dcts_changed
Definition: hpm_uart_drv.h:109
@ uart_intr_id_tx_slot_avail
Definition: hpm_uart_drv.h:134
@ uart_intr_id_rx_data_avail
Definition: hpm_uart_drv.h:135
@ uart_intr_id_rx_line_stat
Definition: hpm_uart_drv.h:136
@ uart_intr_id_modem_stat
Definition: hpm_uart_drv.h:133
@ uart_intr_id_rx_timeout
Definition: hpm_uart_drv.h:137
@ parity_none
Definition: hpm_uart_drv.h:31
@ parity_always_1
Definition: hpm_uart_drv.h:34
@ parity_even
Definition: hpm_uart_drv.h:33
@ parity_odd
Definition: hpm_uart_drv.h:32
@ parity_always_0
Definition: hpm_uart_drv.h:35
@ uart_rxline_idle_cond_state_machine_idle
Definition: hpm_uart_drv.h:167
@ uart_rxline_idle_cond_rxline_logic_one
Definition: hpm_uart_drv.h:166
@ uart_signal_level_low
Definition: hpm_uart_drv.h:103
@ uart_signal_level_high
Definition: hpm_uart_drv.h:102
@ word_length_5_bits
Definition: hpm_uart_drv.h:47
@ word_length_7_bits
Definition: hpm_uart_drv.h:49
@ word_length_6_bits
Definition: hpm_uart_drv.h:48
@ word_length_8_bits
Definition: hpm_uart_drv.h:50
@ stop_bits_1_5
Definition: hpm_uart_drv.h:41
@ stop_bits_2
Definition: hpm_uart_drv.h:42
@ stop_bits_1
Definition: hpm_uart_drv.h:40
@ uart_fifo_16_bytes
Definition: hpm_uart_drv.h:71
@ uart_fifo_7_bytes
Definition: hpm_uart_drv.h:62
@ uart_fifo_9_bytes
Definition: hpm_uart_drv.h:64
@ uart_fifo_11_bytes
Definition: hpm_uart_drv.h:66
@ uart_tx_fifo_trg_lt_one_quarter
Definition: hpm_uart_drv.h:81
@ uart_tx_fifo_trg_lt_three_quarters
Definition: hpm_uart_drv.h:79
@ uart_fifo_12_bytes
Definition: hpm_uart_drv.h:67
@ uart_rx_fifo_trg_gt_three_quarters
Definition: hpm_uart_drv.h:76
@ uart_tx_fifo_trg_lt_half
Definition: hpm_uart_drv.h:80
@ uart_fifo_10_bytes
Definition: hpm_uart_drv.h:65
@ uart_fifo_4_bytes
Definition: hpm_uart_drv.h:59
@ uart_fifo_5_bytes
Definition: hpm_uart_drv.h:60
@ uart_fifo_3_bytes
Definition: hpm_uart_drv.h:58
@ uart_rx_fifo_trg_not_empty
Definition: hpm_uart_drv.h:73
@ uart_fifo_8_bytes
Definition: hpm_uart_drv.h:63
@ uart_fifo_14_bytes
Definition: hpm_uart_drv.h:69
@ uart_fifo_15_bytes
Definition: hpm_uart_drv.h:70
@ uart_fifo_2_bytes
Definition: hpm_uart_drv.h:57
@ uart_rx_fifo_trg_gt_half
Definition: hpm_uart_drv.h:75
@ uart_tx_fifo_trg_not_full
Definition: hpm_uart_drv.h:78
@ uart_rx_fifo_trg_gt_one_quarter
Definition: hpm_uart_drv.h:74
@ uart_fifo_13_bytes
Definition: hpm_uart_drv.h:68
@ uart_fifo_1_byte
Definition: hpm_uart_drv.h:56
@ uart_fifo_6_bytes
Definition: hpm_uart_drv.h:61
@ uart_stat_overrun_error
Definition: hpm_uart_drv.h:143
@ uart_stat_parity_error
Definition: hpm_uart_drv.h:144
@ uart_stat_transmitter_empty
Definition: hpm_uart_drv.h:148
@ uart_stat_tx_slot_avail
Definition: hpm_uart_drv.h:147
@ uart_stat_line_break
Definition: hpm_uart_drv.h:146
@ uart_stat_data_ready
Definition: hpm_uart_drv.h:142
@ uart_stat_rx_fifo_error
Definition: hpm_uart_drv.h:149
@ uart_stat_framing_error
Definition: hpm_uart_drv.h:145
@ uart_intr_addr_datalost
Definition: hpm_uart_drv.h:127
@ uart_intr_rx_data_avail_or_timeout
Definition: hpm_uart_drv.h:114
@ uart_intr_modem_stat
Definition: hpm_uart_drv.h:117
@ uart_intr_rx_line_stat
Definition: hpm_uart_drv.h:116
@ uart_intr_addr_match
Definition: hpm_uart_drv.h:125
@ uart_intr_tx_slot_avail
Definition: hpm_uart_drv.h:115
@ uart_intr_addr_match_and_rxidle
Definition: hpm_uart_drv.h:126
@ uart_intr_tx_line_idle
Definition: hpm_uart_drv.h:122
@ uart_intr_rx_line_idle
Definition: hpm_uart_drv.h:119
#define UART_ADDR_CFG_A1_EN_MASK
Definition: hpm_uart_regs.h:167
#define UART_ADDR_CFG_ADDR1_MASK
Definition: hpm_uart_regs.h:190
#define UART_LSR_DR_MASK
Definition: hpm_uart_regs.h:1002
#define UART_ADDR_CFG_ADDR1_SET(x)
Definition: hpm_uart_regs.h:192
#define UART_FCRR_RFIFORST_MASK
Definition: hpm_uart_regs.h:400
#define UART_IIR2_TXIDLE_FLAG_MASK
Definition: hpm_uart_regs.h:225
#define UART_IER_EADDRM_IDLE_MASK
Definition: hpm_uart_regs.h:554
#define UART_IER_ETHEI_MASK
Definition: hpm_uart_regs.h:601
#define UART_IDLE_CFG_TX_IDLE_EN_MASK
Definition: hpm_uart_regs.h:62
#define UART_IER_ELSI_MASK
Definition: hpm_uart_regs.h:591
#define UART_ADDR_CFG_RXEN_9BIT_MASK
Definition: hpm_uart_regs.h:154
#define UART_MOTO_CFG_SWTRG_MASK
Definition: hpm_uart_regs.h:425
#define UART_MCR_RTS_SET(x)
Definition: hpm_uart_regs.h:861
#define UART_MCR_AFE_MASK
Definition: hpm_uart_regs.h:834
#define UART_MSR_CTS_MASK
Definition: hpm_uart_regs.h:1014
#define UART_IER_EADDRM_MASK
Definition: hpm_uart_regs.h:544
#define UART_ADDR_CFG_TXEN_9BIT_MASK
Definition: hpm_uart_regs.h:132
#define UART_LSR_TFIFO_NUM_GET(x)
Definition: hpm_uart_regs.h:899
#define UART_MCR_LOOP_MASK
Definition: hpm_uart_regs.h:846
#define UART_ADDR_CFG_ADDR0_MASK
Definition: hpm_uart_regs.h:200
#define UART_IDLE_CFG_RX_IDLE_EN_MASK
Definition: hpm_uart_regs.h:110
#define UART_IIR_RXIDLE_FLAG_MASK
Definition: hpm_uart_regs.h:639
#define UART_LSR_PE_MASK
Definition: hpm_uart_regs.h:979
#define UART_IER_EDATLOST_MASK
Definition: hpm_uart_regs.h:564
#define UART_MSR_DCTS_MASK
Definition: hpm_uart_regs.h:1026
#define UART_MOTO_CFG_HWTRG_EN_MASK
Definition: hpm_uart_regs.h:445
#define UART_ADDR_CFG_ADDR0_SET(x)
Definition: hpm_uart_regs.h:202
#define UART_ADDR_CFG_A0_EN_MASK
Definition: hpm_uart_regs.h:177
#define UART_ADDR_CFG_RXEN_ADDR_MSB_MASK
Definition: hpm_uart_regs.h:144
#define UART_MCR_LOOP_SET(x)
Definition: hpm_uart_regs.h:848
#define UART_FCR_RFIFORST_MASK
Definition: hpm_uart_regs.h:718
#define UART_IER_ERXIDLE_MASK
Definition: hpm_uart_regs.h:524
#define UART_LSR_OE_MASK
Definition: hpm_uart_regs.h:990
#define UART_FCR_TFIFORST_MASK
Definition: hpm_uart_regs.h:705
#define UART_LSR_ERRF_MASK
Definition: hpm_uart_regs.h:911
#define UART_IIR_INTRID_MASK
Definition: hpm_uart_regs.h:660
#define UART_IER_EMSI_MASK
Definition: hpm_uart_regs.h:581
#define UART_IIR2_RXIDLE_FLAG_MASK
Definition: hpm_uart_regs.h:213
#define UART_LSR_FE_MASK
Definition: hpm_uart_regs.h:965
#define UART_IER_ETXIDLE_MASK
Definition: hpm_uart_regs.h:534
#define UART_LSR_TEMT_MASK
Definition: hpm_uart_regs.h:923
#define UART_FCRR_TFIFORST_MASK
Definition: hpm_uart_regs.h:387
#define UART_LSR_LBREAK_MASK
Definition: hpm_uart_regs.h:952
#define UART_CFG_FIFOSIZE_MASK
Definition: hpm_uart_regs.h:294
#define UART_MCR_AFE_SET(x)
Definition: hpm_uart_regs.h:836
#define UART_IER_ERBI_MASK
Definition: hpm_uart_regs.h:614
#define UART_LSR_THRE_MASK
Definition: hpm_uart_regs.h:936
#define UART_RBR_RBR_MASK
Definition: hpm_uart_regs.h:490
#define UART_LSR_RFIFO_NUM_GET(x)
Definition: hpm_uart_regs.h:890
#define UART_MCR_RTS_MASK
Definition: hpm_uart_regs.h:859
#define UART_THR_THR_SET(x)
Definition: hpm_uart_regs.h:502
#define UART_CFG_FIFOSIZE_SHIFT
Definition: hpm_uart_regs.h:295
Definition: hpm_uart_regs.h:12
__RW uint32_t IDLE_CFG
Definition: hpm_uart_regs.h:14
__RW uint32_t MCR
Definition: hpm_uart_regs.h:35
__RW uint32_t ADDR_CFG
Definition: hpm_uart_regs.h:15
__W uint32_t FCR
Definition: hpm_uart_regs.h:32
__R uint32_t MSR
Definition: hpm_uart_regs.h:37
__RW uint32_t IIR
Definition: hpm_uart_regs.h:31
__R uint32_t RBR
Definition: hpm_uart_regs.h:22
__R uint32_t LSR
Definition: hpm_uart_regs.h:36
__RW uint32_t CFG
Definition: hpm_uart_regs.h:17
__RW uint32_t IIR2
Definition: hpm_uart_regs.h:16
__W uint32_t THR
Definition: hpm_uart_regs.h:23
__RW uint32_t FCRR
Definition: hpm_uart_regs.h:19
__RW uint32_t GPR
Definition: hpm_uart_regs.h:38
__RW uint32_t MOTO_CFG
Definition: hpm_uart_regs.h:20
__RW uint32_t IER
Definition: hpm_uart_regs.h:27
UART config.
Definition: hpm_uart_drv.h:184
uint8_t num_of_stop_bits
Definition: hpm_uart_drv.h:187
uint8_t parity
Definition: hpm_uart_drv.h:189
uint8_t rx_fifo_level
Definition: hpm_uart_drv.h:191
bool rx_enable
Definition: hpm_uart_drv.h:202
bool fifo_enable
Definition: hpm_uart_drv.h:193
uint8_t tx_fifo_level
Definition: hpm_uart_drv.h:190
uint8_t word_length
Definition: hpm_uart_drv.h:188
uart_rxline_idle_config_t rxidle_config
Definition: hpm_uart_drv.h:196
uint32_t src_freq_in_hz
Definition: hpm_uart_drv.h:185
uart_rxline_idle_config_t txidle_config
Definition: hpm_uart_drv.h:199
uart_modem_config_t modem_config
Definition: hpm_uart_drv.h:194
uint32_t baudrate
Definition: hpm_uart_drv.h:186
bool dma_enable
Definition: hpm_uart_drv.h:192
UART Idle config, suitable for RX and TX.
Definition: hpm_uart_drv.h:173
bool detect_irq_enable
Definition: hpm_uart_drv.h:175
uint8_t threshold
Definition: hpm_uart_drv.h:177
uart_rxline_idle_cond_t idle_cond
Definition: hpm_uart_drv.h:176
bool detect_enable
Definition: hpm_uart_drv.h:174
Definition: hpm_uart_drv.h:216
uint8_t rx_fifo_level
Definition: hpm_uart_drv.h:218
bool fifo_enable
Definition: hpm_uart_drv.h:222
bool reset_tx_fifo
Definition: hpm_uart_drv.h:219
bool reset_rx_fifo
Definition: hpm_uart_drv.h:220
bool dma_enable
Definition: hpm_uart_drv.h:221
uint8_t tx_fifo_level
Definition: hpm_uart_drv.h:217
UART modem config.
Definition: hpm_uart_drv.h:155
bool loop_back_en
Definition: hpm_uart_drv.h:157
bool auto_flow_ctrl_en
Definition: hpm_uart_drv.h:156
bool set_rts_high
Definition: hpm_uart_drv.h:158
Definition: hpm_uart_drv.h:207
bool en_stop_bit_insert
Definition: hpm_uart_drv.h:209
bool trig_clr_rxfifo
Definition: hpm_uart_drv.h:212
uint16_t stop_bit_len
Definition: hpm_uart_drv.h:208
bool hardware_trig
Definition: hpm_uart_drv.h:210
bool trig_mode
Definition: hpm_uart_drv.h:211