NEORV32 Software Framework Documentation
The NEORV32 RISC-V Processor
Loading...
Searching...
No Matches
neorv32_uart.h
Go to the documentation of this file.
1// ================================================================================ //
2// The NEORV32 RISC-V Processor - https://github.com/stnolting/neorv32 //
3// Copyright (c) NEORV32 contributors. //
4// Copyright (c) 2020 - 2024 Stephan Nolting. All rights reserved. //
5// Licensed under the BSD-3-Clause license, see LICENSE for details. //
6// SPDX-License-Identifier: BSD-3-Clause //
7// ================================================================================ //
8
16#ifndef neorv32_uart_h
17#define neorv32_uart_h
18
19#include <stdint.h>
20#include <stdarg.h>
21
22
23/**********************************************************************/
28typedef volatile struct __attribute__((packed,aligned(4))) {
29 uint32_t CTRL;
30 uint32_t DATA;
32
34#define NEORV32_UART0 ((neorv32_uart_t*) (NEORV32_UART0_BASE))
35
37#define NEORV32_UART1 ((neorv32_uart_t*) (NEORV32_UART1_BASE))
38
76
91/**********************************************************************/
98void neorv32_uart_setup(neorv32_uart_t *UARTx, uint32_t baudrate, uint32_t irq_mask);
103void neorv32_uart_putc(neorv32_uart_t *UARTx, char c);
110void neorv32_uart_puts(neorv32_uart_t *UARTx, const char *s);
111void neorv32_uart_vprintf(neorv32_uart_t *UARTx, const char *format, va_list args);
112void neorv32_uart_printf(neorv32_uart_t *UARTx, const char *format, ...);
113int neorv32_uart_scan(neorv32_uart_t *UARTx, char *buffer, int max_size, int echo);
117/**********************************************************************/
121#define neorv32_uart0_available() neorv32_uart_available(NEORV32_UART0)
122#define neorv32_uart0_get_rx_fifo_depth() neorv32_uart_get_rx_fifo_depth(NEORV32_UART0)
123#define neorv32_uart0_get_tx_fifo_depth() neorv32_uart_get_tx_fifo_depth(NEORV32_UART0)
124#define neorv32_uart0_setup(baudrate, irq_mask) neorv32_uart_setup(NEORV32_UART0, baudrate, irq_mask)
125#define neorv32_uart0_disable() neorv32_uart_disable(NEORV32_UART0)
126#define neorv32_uart0_enable() neorv32_uart_enable(NEORV32_UART0)
127#define neorv32_uart0_rtscts_disable() neorv32_uart_rtscts_disable(NEORV32_UART0)
128#define neorv32_uart0_rtscts_enable() neorv32_uart_rtscts_enable(NEORV32_UART0)
129#define neorv32_uart0_putc(c) neorv32_uart_putc(NEORV32_UART0, c)
130#define neorv32_uart0_rx_clear() neorv32_uart_rx_clear(NEORV32_UART0)
131#define neorv32_uart0_tx_clear() neorv32_uart_tx_clear(NEORV32_UART0)
132#define neorv32_uart0_tx_busy() neorv32_uart_tx_busy(NEORV32_UART0)
133#define neorv32_uart0_getc() neorv32_uart_getc(NEORV32_UART0)
134#define neorv32_uart0_char_received() neorv32_uart_char_received(NEORV32_UART0)
135#define neorv32_uart0_char_received_get() neorv32_uart_char_received_get(NEORV32_UART0)
136#define neorv32_uart0_puts(s) neorv32_uart_puts(NEORV32_UART0, s)
137#define neorv32_uart0_printf(...) neorv32_uart_printf(NEORV32_UART0, __VA_ARGS__)
138#define neorv32_uart0_scan(buffer, max_size, echo) neorv32_uart_scan(NEORV32_UART0, buffer, max_size, echo)
139
140#define neorv32_uart1_available() neorv32_uart_available(NEORV32_UART1)
141#define neorv32_uart1_get_rx_fifo_depth() neorv32_uart_get_rx_fifo_depth(NEORV32_UART1)
142#define neorv32_uart1_get_tx_fifo_depth() neorv32_uart_get_tx_fifo_depth(NEORV32_UART1)
143#define neorv32_uart1_setup(baudrate, irq_mask) neorv32_uart_setup(NEORV32_UART1, baudrate, irq_mask)
144#define neorv32_uart1_disable() neorv32_uart_disable(NEORV32_UART1)
145#define neorv32_uart1_enable() neorv32_uart_enable(NEORV32_UART1)
146#define neorv32_uart1_rtscts_disable() neorv32_uart_rtscts_disable(NEORV32_UART1)
147#define neorv32_uart1_rtscts_enable() neorv32_uart_rtscts_enable(NEORV32_UART1)
148#define neorv32_uart1_putc(c) neorv32_uart_putc(NEORV32_UART1, c)
149#define neorv32_uart1_rx_clear() neorv32_uart_rx_clear(NEORV32_UART1)
150#define neorv32_uart1_tx_clear() neorv32_uart_tx_clear(NEORV32_UART1)
151#define neorv32_uart1_tx_busy() neorv32_uart_tx_busy(NEORV32_UART1)
152#define neorv32_uart1_getc() neorv32_uart_getc(NEORV32_UART1)
153#define neorv32_uart1_char_received() neorv32_uart_char_received(NEORV32_UART1)
154#define neorv32_uart1_char_received_get() neorv32_uart_char_received_get(NEORV32_UART1)
155#define neorv32_uart1_puts(s) neorv32_uart_puts(NEORV32_UART1, s)
156#define neorv32_uart1_printf(...) neorv32_uart_printf(NEORV32_UART1, __VA_ARGS__)
157#define neorv32_uart1_scan(buffer, max_size, echo) neorv32_uart_scan(NEORV32_UART1, buffer, max_size, echo)
161#endif // neorv32_uart_h
int neorv32_uart_get_tx_fifo_depth(neorv32_uart_t *UARTx)
Definition neorv32_uart.c:128
void neorv32_uart_tx_clear(neorv32_uart_t *UARTx)
Definition neorv32_uart.c:209
char neorv32_uart_getc(neorv32_uart_t *UARTx)
Definition neorv32_uart.c:240
void neorv32_uart_puts(neorv32_uart_t *UARTx, const char *s)
Definition neorv32_uart.c:293
void neorv32_uart_rtscts_enable(neorv32_uart_t *UARTx)
Definition neorv32_uart.c:162
void neorv32_uart_rtscts_disable(neorv32_uart_t *UARTx)
Definition neorv32_uart.c:173
void neorv32_uart_vprintf(neorv32_uart_t *UARTx, const char *format, va_list args)
Definition neorv32_uart.c:315
void neorv32_uart_putc(neorv32_uart_t *UARTx, char c)
Definition neorv32_uart.c:185
void neorv32_uart_setup(neorv32_uart_t *UARTx, uint32_t baudrate, uint32_t irq_mask)
Definition neorv32_uart.c:55
char neorv32_uart_char_received_get(neorv32_uart_t *UARTx)
Definition neorv32_uart.c:279
int neorv32_uart_tx_busy(neorv32_uart_t *UARTx)
Definition neorv32_uart.c:221
void neorv32_uart_printf(neorv32_uart_t *UARTx, const char *format,...)
Definition neorv32_uart.c:398
int neorv32_uart_available(neorv32_uart_t *UARTx)
Definition neorv32_uart.c:34
int neorv32_uart_scan(neorv32_uart_t *UARTx, char *buffer, int max_size, int echo)
Definition neorv32_uart.c:418
NEORV32_UART_CTRL_enum
Definition neorv32_uart.h:40
@ UART_CTRL_BAUD8
Definition neorv32_uart.h:55
@ UART_CTRL_TX_BUSY
Definition neorv32_uart.h:74
@ UART_CTRL_IRQ_TX_EMPTY
Definition neorv32_uart.h:68
@ UART_CTRL_PRSC0
Definition neorv32_uart.h:44
@ UART_CTRL_BAUD1
Definition neorv32_uart.h:48
@ UART_CTRL_RX_NEMPTY
Definition neorv32_uart.h:58
@ UART_CTRL_BAUD2
Definition neorv32_uart.h:49
@ UART_CTRL_TX_FULL
Definition neorv32_uart.h:63
@ UART_CTRL_EN
Definition neorv32_uart.h:41
@ UART_CTRL_RX_HALF
Definition neorv32_uart.h:59
@ UART_CTRL_TX_CLR
Definition neorv32_uart.h:72
@ UART_CTRL_SIM_MODE
Definition neorv32_uart.h:42
@ UART_CTRL_RX_FULL
Definition neorv32_uart.h:60
@ UART_CTRL_IRQ_RX_NEMPTY
Definition neorv32_uart.h:65
@ UART_CTRL_BAUD3
Definition neorv32_uart.h:50
@ UART_CTRL_TX_NHALF
Definition neorv32_uart.h:62
@ UART_CTRL_BAUD5
Definition neorv32_uart.h:52
@ UART_CTRL_BAUD9
Definition neorv32_uart.h:56
@ UART_CTRL_IRQ_TX_NHALF
Definition neorv32_uart.h:69
@ UART_CTRL_RX_OVER
Definition neorv32_uart.h:73
@ UART_CTRL_BAUD4
Definition neorv32_uart.h:51
@ UART_CTRL_PRSC2
Definition neorv32_uart.h:46
@ UART_CTRL_BAUD6
Definition neorv32_uart.h:53
@ UART_CTRL_BAUD7
Definition neorv32_uart.h:54
@ UART_CTRL_PRSC1
Definition neorv32_uart.h:45
@ UART_CTRL_IRQ_RX_HALF
Definition neorv32_uart.h:66
@ UART_CTRL_TX_EMPTY
Definition neorv32_uart.h:61
@ UART_CTRL_HWFC_EN
Definition neorv32_uart.h:43
@ UART_CTRL_BAUD0
Definition neorv32_uart.h:47
@ UART_CTRL_IRQ_RX_FULL
Definition neorv32_uart.h:67
@ UART_CTRL_RX_CLR
Definition neorv32_uart.h:71
NEORV32_UART_DATA_enum
Definition neorv32_uart.h:78
@ UART_DATA_RTX_MSB
Definition neorv32_uart.h:80
@ UART_DATA_RX_FIFO_SIZE_LSB
Definition neorv32_uart.h:82
@ UART_DATA_TX_FIFO_SIZE_LSB
Definition neorv32_uart.h:85
@ UART_DATA_RX_FIFO_SIZE_MSB
Definition neorv32_uart.h:83
@ UART_DATA_TX_FIFO_SIZE_MSB
Definition neorv32_uart.h:86
@ UART_DATA_RTX_LSB
Definition neorv32_uart.h:79
int neorv32_uart_char_received(neorv32_uart_t *UARTx)
Definition neorv32_uart.c:259
void neorv32_uart_disable(neorv32_uart_t *UARTx)
Definition neorv32_uart.c:151
int neorv32_uart_get_rx_fifo_depth(neorv32_uart_t *UARTx)
Definition neorv32_uart.c:114
void neorv32_uart_enable(neorv32_uart_t *UARTx)
Definition neorv32_uart.c:140
void neorv32_uart_rx_clear(neorv32_uart_t *UARTx)
Definition neorv32_uart.c:198
Definition neorv32_uart.h:28
uint32_t CTRL
Definition neorv32_uart.h:29
uint32_t DATA
Definition neorv32_uart.h:30