SyterKit 0.4.0.x
SyterKit is a bare-metal framework
Loading...
Searching...
No Matches
sys-uart.h
Go to the documentation of this file.
1#ifndef __SYS_UART_H__
2#define __SYS_UART_H__
3
4#include <types.h>
5
6#include <sys-clk.h>
7#include <sys-gpio.h>
8
9#ifdef __cplusplus
10extern "C" {
11#endif// __cplusplus
12
13/* defines baud rate of the UART frame. */
31
32/* UART Line Control Parameter */
38
39/* UART Number of Stop Bit */
44
45/* UART Data Length */
52
53/*
54 * Define a structure sunxi_serial_reg_t for accessing serial registers.
55 * This structure provides a convenient way to access various registers
56 * associated with a serial interface.
57 */
58typedef struct {
59 union {
60 volatile uint32_t rbr; /* Receiver Buffer Register (offset 0) */
61 volatile uint32_t thr; /* Transmitter Holding Register (offset 0) */
62 volatile uint32_t dll; /* Divisor Latch LSB (offset 0) */
63 };
64 union {
65 volatile uint32_t ier; /* Interrupt Enable Register (offset 1) */
66 volatile uint32_t dlh; /* Divisor Latch MSB (offset 1) */
67 };
68 union {
69 volatile uint32_t fcr; /* FIFO Control Register (offset 2) */
70 volatile uint32_t iir; /* Interrupt Identification Register (offset 2) */
71 };
72 volatile uint32_t lcr; /* Line Control Register (offset 3) */
73 volatile uint32_t mcr; /* Modem Control Register (offset 4) */
74 volatile uint32_t lsr; /* Line Status Register (offset 5) */
75 volatile uint32_t msr; /* Modem Status Register (offset 6) */
76 volatile uint32_t sch; /* Scratch Register (offset 7) */
78
79typedef struct {
80 gpio_mux_t gpio_tx; /* GPIO pin for data transmission */
81 gpio_mux_t gpio_rx; /* GPIO pin for data reception */
83
84/* Define a structure sunxi_serial_t for serial configuration */
85typedef struct {
86 uint32_t base; /* Base address of the serial device */
87 uint8_t id; /* ID of the serial device */
90 sunxi_serial_baudrate_t baud_rate; /* Baud rate configuration */
91 sunxi_serial_parity_t parity; /* Parity configuration */
92 sunxi_serial_stop_bit_t stop; /* Stop bit configuration */
93 sunxi_serial_dlen_t dlen; /* Data length configuration */
95
96#define SERIAL_DEFAULT_CLK_RST_OFFSET(x) (x + 16)
97#define SERIAL_DEFAULT_CLK_GATE_OFFSET(x) (x)
98
99#define SERIAL_DEFAULT_PARENT_CLK (24000000)
100
107
114void sunxi_serial_putc(void *arg, char c);
115
122int sunxi_serial_tstc(void *arg);
123
130char sunxi_serial_getc(void *arg);
131
132#ifdef __cplusplus
133}
134#endif// __cplusplus
135
136#endif// __SYS_UART_H__
u32_t uint32_t
Definition stdint.h:13
u8_t uint8_t
Definition stdint.h:7
sunxi_serial_stop_bit_t
Definition sys-uart.h:40
@ UART_STOP_BIT_0
Definition sys-uart.h:41
@ UART_STOP_BIT_1
Definition sys-uart.h:42
sunxi_serial_baudrate_t
Definition sys-uart.h:14
@ UART_BAUDRATE_460800
Definition sys-uart.h:26
@ UART_BAUDRATE_1200
Definition sys-uart.h:17
@ UART_BAUDRATE_57600
Definition sys-uart.h:23
@ UART_BAUDRATE_38400
Definition sys-uart.h:22
@ UART_BAUDRATE_230400
Definition sys-uart.h:25
@ UART_BAUDRATE_19200
Definition sys-uart.h:21
@ UART_BAUDRATE_921600
Definition sys-uart.h:27
@ UART_BAUDRATE_300
Definition sys-uart.h:15
@ UART_BAUDRATE_9600
Definition sys-uart.h:20
@ UART_BAUDRATE_2400
Definition sys-uart.h:18
@ UART_BAUDRATE_MAX
Definition sys-uart.h:29
@ UART_BAUDRATE_115200
Definition sys-uart.h:24
@ UART_BAUDRATE_4800
Definition sys-uart.h:19
@ UART_BAUDRATE_600
Definition sys-uart.h:16
@ UART_BAUDRATE_1500000
Definition sys-uart.h:28
char sunxi_serial_getc(void *arg)
Read a character from the Sunxi serial interface.
void sunxi_serial_putc(void *arg, char c)
Send a character via the Sunxi serial interface.
sunxi_serial_parity_t
Definition sys-uart.h:33
@ UART_PARITY_EVEN
Definition sys-uart.h:36
@ UART_PARITY_ODD
Definition sys-uart.h:35
@ UART_PARITY_NO
Definition sys-uart.h:34
sunxi_serial_dlen_t
Definition sys-uart.h:46
@ UART_DLEN_8
Definition sys-uart.h:50
@ UART_DLEN_5
Definition sys-uart.h:47
@ UART_DLEN_6
Definition sys-uart.h:48
@ UART_DLEN_7
Definition sys-uart.h:49
int sunxi_serial_tstc(void *arg)
Check if there is any character available for reading from the Sunxi serial interface.
void sunxi_serial_init()
Definition printf.c:40
Definition sys-gpio.h:68
Definition sys-clk.h:17
Definition sys-uart.h:79
gpio_mux_t gpio_tx
Definition sys-uart.h:80
gpio_mux_t gpio_rx
Definition sys-uart.h:81
Definition sys-uart.h:58
volatile uint32_t iir
Definition sys-uart.h:70
volatile uint32_t dll
Definition sys-uart.h:62
volatile uint32_t mcr
Definition sys-uart.h:73
volatile uint32_t msr
Definition sys-uart.h:75
volatile uint32_t lsr
Definition sys-uart.h:74
volatile uint32_t sch
Definition sys-uart.h:76
volatile uint32_t rbr
Definition sys-uart.h:60
volatile uint32_t dlh
Definition sys-uart.h:66
volatile uint32_t fcr
Definition sys-uart.h:69
volatile uint32_t ier
Definition sys-uart.h:65
volatile uint32_t lcr
Definition sys-uart.h:72
volatile uint32_t thr
Definition sys-uart.h:61
Definition sys-uart.h:85
sunxi_serial_pin_t gpio_pin
Definition sys-uart.h:89
sunxi_serial_baudrate_t baud_rate
Definition sys-uart.h:90
sunxi_serial_stop_bit_t stop
Definition sys-uart.h:92
sunxi_serial_dlen_t dlen
Definition sys-uart.h:93
uint32_t base
Definition sys-uart.h:86
uint8_t id
Definition sys-uart.h:87
sunxi_clk_t uart_clk
Definition sys-uart.h:88
sunxi_serial_parity_t parity
Definition sys-uart.h:91