VSF Documented
usart.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18#ifndef __VSF_USART_H__
19#define __VSF_USART_H__
20
21/*============================ INCLUDES ======================================*/
22
23#include "hal/vsf_hal_cfg.h"
24
25#if VSF_HAL_USE_USART == ENABLED
26#include "../__device.h"
27// TODO: include pm driver header
29
30// for dma
31#include "../driver.h"
32
33#ifdef __cplusplus
34extern "C" {
35#endif
36
37/*============================ MACROS ========================================*/
38/*============================ MACROFIED FUNCTIONS ===========================*/
39/*============================ TYPES =========================================*/
40
42 // LINECTRL, bit 0-7
43 VSF_USART_5_BIT_LENGTH = (0x0ul << 5),
44 VSF_USART_6_BIT_LENGTH = (0x1ul << 5),
45 VSF_USART_7_BIT_LENGTH = (0x2ul << 5),
46 VSF_USART_8_BIT_LENGTH = (0x3ul << 5),
47
49 VSF_USART_2_STOPBIT = USART_LINECTRL_STP2,
50
52 VSF_USART_EVEN_PARITY = USART_LINECTRL_PEN | USART_LINECTRL_EPS,
53 VSF_USART_ODD_PARITY = USART_LINECTRL_PEN,
54 VSF_USART_FORCE_0_PARITY = USART_LINECTRL_PEN | USART_LINECTRL_EPS | USART_LINECTRL_SPS,
55 VSF_USART_FORCE_1_PARITY = USART_LINECTRL_PEN | USART_LINECTRL_SPS,
56
57 // CTRL2: bit8 - 23
58 VSF_USART_TX_ENABLE = USART_CTRL2_TXE,
59 VSF_USART_RX_ENABLE = USART_CTRL2_RXE,
60 USART_RTS_EN = USART_CTRL2_RTSEN,
61 USART_CTS_EN = USART_CTRL2_CTSEN,
62
63 // LOOPBACK takes bit10, which is reserved in CTRL2
64 USART_LOOPBACK_EN = (1UL << 10),
75
76 // CTRL3: bit24 - 31
77 VSF_USART_9_BIT_LENGTH = (1ul << (0 + 24)),
78 USART_SAMPLE_RATE_8X = (1ul << (1 + 24)),
81 USART_ASYNC_MODE = (1ul << (4 + 24)),
82 USART_SYNC_CLKOUT_EN = (1ul << (6 + 24)),
83};
84
85struct vsf_usart_status_t {
86 union {
88 struct {
89 uint32_t dummy : 24;
90 uint32_t is_rx_fifo_empty : 1;
91 uint32_t is_tx_fifo_full : 1;
92 uint32_t is_rx_fifo_full : 1;
93 uint32_t is_tx_fifo_empty : 1;
94 uint32_t cts : 1;
95 uint32_t usart_is_busy : 1;
96 };
98 };
99};
100
102 // TX/RX reach fifo threshold, threshold on some devices is bound to 1
103 VSF_USART_IRQ_MASK_TX = USART_INTR_TXIS,
104 VSF_USART_IRQ_MASK_RX = USART_INTR_RXIS,
105
106 // request_rx/request_tx complete, use higher 16-bits
107 // VSF_USART_IRQ_MASK_TX_CPL and VSF_USART_IRQ_MASK_RX_CPL are issued from DMA interrupt
111
112 // optional
113 // error
122
123 // FIFO
125};
126
127/*============================ GLOBAL VARIABLES ==============================*/
128
129#if USART_MAX_PORT >= 0 && VSF_HAL_USE_USART0 == ENABLED
130# if VSF_HAL_USE_LV1
131extern const i_usart_t VSF_USART0;
132# endif
134#endif
135
136#if USART_MAX_PORT >= 1 && VSF_HAL_USE_USART1 == ENABLED
137# if VSF_HAL_USE_LV1
138extern const i_usart_t VSF_USART1;
139# endif
140extern vsf_usart_t vsf_usart1;
141#endif
142
143/*============================ PROTOTYPES ====================================*/
144
145
146#ifdef __cplusplus
147}
148#endif
149
150#endif // VSF_HAL_USE_USART
151#endif // __VSF_USART_H__
vsf_usart_mode_t
Definition uart.h:32
vsf_usart_irq_mask_t
Definition uart.h:105
@ VSF_USART_NO_PARITY
Definition usart.h:111
@ VSF_USART_RX_ENABLE
Definition usart.h:96
@ VSF_USART_TX_ENABLE
Definition usart.h:94
@ VSF_USART_8_BIT_LENGTH
Definition usart.h:43
@ VSF_USART_EVEN_PARITY
Definition usart.h:62
@ VSF_USART_ODD_PARITY
Definition usart.h:61
@ VSF_USART_7_BIT_LENGTH
Definition usart.h:44
@ VSF_USART_1_STOPBIT
Definition usart.h:52
@ VSF_USART_2_STOPBIT
Definition usart.h:55
@ VSF_USART_5_BIT_LENGTH
Definition usart.h:46
@ VSF_USART_6_BIT_LENGTH
Definition usart.h:45
@ VSF_USART_IRQ_MASK_TX_CPL
Definition usart.h:90
@ VSF_USART_IRQ_MASK_TX
Definition usart.h:88
@ VSF_USART_IRQ_MASK_RX
Definition usart.h:87
@ VSF_USART_IRQ_MASK_ERROR
Definition usart.h:95
@ VSF_USART_IRQ_MASK_RX_TIMEOUT
Definition usart.h:98
@ VSF_USART_IRQ_MASK_RX_CPL
Definition usart.h:89
@ VSF_USART_FORCE_0_PARITY
Definition usart.h:162
@ VSF_USART_9_BIT_LENGTH
Definition usart.h:119
@ VSF_USART_FORCE_1_PARITY
Definition usart.h:163
@ VSF_USART_IRQ_MASK_OVERFLOW_ERR
Definition usart.h:210
@ VSF_USART_IRQ_MASK_BREAK_ERR
Definition usart.h:209
@ VSF_USART_IRQ_MASK_PARITY_ERR
Definition usart.h:195
@ VSF_USART_IRQ_MASK_FRAME_ERR
Definition usart.h:208
unsigned uint32_t
Definition stdint.h:9
Definition vsf_template_hal_driver.h:196
Definition uart.h:156
uint32_t cts
Definition vsf_pl011_uart.h:135
uint32_t value
Definition usart.h:279
Definition vsf_template_usart.h:661
vsf_usart_t vsf_usart0
@ USART_SYNC_MODE
Definition usart.h:80
@ USART_CTS_EN
Definition usart.h:61
@ USART_TX_FIFO_THRES_1_4
Definition usart.h:66
@ USART_RX_FIFO_THRES_1_8
Definition usart.h:70
@ USART_SAMPLE_RATE_16X
Definition usart.h:79
@ USART_RTS_EN
Definition usart.h:60
@ USART_TX_FIFO_THRES_3_4
Definition usart.h:68
@ USART_RX_FIFO_THRES_3_4
Definition usart.h:73
@ USART_SYNC_CLKOUT_EN
Definition usart.h:82
@ USART_RX_FIFO_THRES_1_4
Definition usart.h:71
@ USART_TX_FIFO_THRES_7_8
Definition usart.h:69
@ USART_SAMPLE_RATE_8X
Definition usart.h:78
@ USART_ASYNC_MODE
Definition usart.h:81
@ USART_LOOPBACK_EN
Definition usart.h:64
@ USART_RX_FIFO_THRES_7_8
Definition usart.h:74
@ USART_TX_FIFO_THRES_1_8
Definition usart.h:65
@ USART_RX_FIFO_THRES_1_2
Definition usart.h:72
@ USART_TX_FIFO_THRES_1_2
Definition usart.h:67
@ VSF_USART_IRQ_MASK_TX_FIFO_EMPTY
Definition usart.h:124