1:
10:
11:
15:
16:
#ifndef _UARTPRM_H_
17:
#define _UARTPRM_H_
18:
19:
20:
#include <stdint.h>
21:
#include "lib_common/AG903_common.h"
22:
#include "register/AG903_uartreg.h"
23:
24:
#ifdef __cplusplus
25:
extern "C" {
26:
#endif
27:
28:
29:
#define AG903_UART_CH_NUM (4)
30:
31:
32:
#define AG903_UART_FIFO_SIZE (16)
33:
34:
35:
#define AG903_UART_PSR_MAXNUM (31)
36:
37:
38:
enum _AG903_UartParityType {
39: AG903_UART_PARITY_TYPE_NON = 0,
40: AG903_UART_PARITY_TYPE_ODD,
41: AG903_UART_PARITY_TYPE_EVEN,
42: AG903_UART_PARITY_TYPE_MAX,
43: };
44:
45:
46:
enum _AG903_UartWordlenType {
47: AG903_UART_WORDLEN5_STOP1 = 0,
48: AG903_UART_WORDLEN6_STOP1,
49: AG903_UART_WORDLEN7_STOP1,
50: AG903_UART_WORDLEN8_STOP1,
51: AG903_UART_WORDLEN5_STOP15,
52: AG903_UART_WORDLEN6_STOP2,
53: AG903_UART_WORDLEN7_STOP2,
54: AG903_UART_WORDLEN8_STOP2,
55: AG903_UART_WORDLEN_TYPE_MAX,
56: };
57:
58:
59:
enum _AG903_UartRxFifoTrgl {
60: AG903_UART_RXTRGL_1 = 0,
61: AG903_UART_RXTRGL_4,
62: AG903_UART_RXTRGL_8,
63: AG903_UART_RXTRGL_14,
64: AG903_UART_RXTRGL_MAX,
65: };
66:
67:
68:
enum _AG903_UartTxFifoTrgl {
69: AG903_UART_TXTRGL_1 = 0,
70: AG903_UART_TXTRGL_3,
71: AG903_UART_TXTRGL_9,
72: AG903_UART_TXTRGL_13,
73: AG903_UART_TXTRGL_MAX,
74: };
75:
76:
77:
enum _AG903_UartDmaMode {
78: AG903_UART_DMA_MODE0 = 0,
79: AG903_UART_DMA_MODE1,
80: AG903_UART_DMA_MODE_MAX,
81: };
82:
83:
84:
#define AG903_UART_RXFIFO_BIT (1<<0)
85:
86:
87:
#define AG903_UART_TXFIFO_BIT (1<<1)
88:
89:
90:
#define AG903_UART_ALLFIFO_BIT (
AG903_UART_RXFIFO_BIT |
AG903_UART_TXFIFO_BIT)
91:
92:
#define AG903_UART_FLOW_RTS_BIT (1<<
AG903_UARTn_IER_RTSEn_POS)
93:
#define AG903_UART_FLOW_CTS_BIT (1<<
AG903_UARTn_IER_CTSEn_POS)
94:
#define AG903_UART_FLOW_DTR_BIT (1<<
AG903_UARTn_IER_DTREn_POS)
95:
#define AG903_UART_FLOW_DSR_BIT (1<<
AG903_UARTn_IER_DSREn_POS)
96:
97:
98:
#define AG903_UART_FLOW_ALL_BIT (
AG903_UART_FLOW_RTS_BIT |
AG903_UART_FLOW_CTS_BIT |
AG903_UART_FLOW_DTR_BIT |
AG903_UART_FLOW_DSR_BIT)
99:
100:
#define AG903_UART_DETECT_RTO_BIT (1<<
AG903_UARTn_STAT_RTO_POS)
101:
#define AG903_UART_DETECT_CTO_BIT (1<<
AG903_UARTn_STAT_CTO_POS)
102:
103:
104:
#define AG903_UART_DETECT_ALL_BIT (
AG903_UART_DETECT_RTO_BIT |
AG903_UART_DETECT_CTO_BIT)
105:
106:
#define AG903_UART_IER_DATARDY_BIT (1<<
AG903_UARTn_IER_Receiver_Data_Available_POS)
107:
#define AG903_UART_IER_THREMP_BIT (1<<
AG903_UARTn_IER_THR_Empty_POS)
108:
#define AG903_UART_IER_LINEST_BIT (1<<
AG903_UARTn_IER_Receiver_Line_Status_POS)
109:
#define AG903_UART_IER_MODEMST_BIT (1<<
AG903_UARTn_IER_MODEM_Status_POS)
110:
111:
#define AG903_UART_LSR_DATARDY_BIT (1<<
AG903_UARTn_LSR_Data_Ready_POS)
112:
#define AG903_UART_LSR_OVERRUN_BIT (1<<
AG903_UARTn_LSR_Overrun_Error_POS)
113:
#define AG903_UART_LSR_PARITY_BIT (1<<
AG903_UARTn_LSR_Parity_Error_POS)
114:
#define AG903_UART_LSR_FRAMING_BIT (1<<
AG903_UARTn_LSR_Framing_Error_POS)
115:
#define AG903_UART_LSR_BREAK_BIT (1<<
AG903_UARTn_LSR_Break_Interrupt_POS)
116:
#define AG903_UART_LSR_THREMP_BIT (1<<
AG903_UARTn_LSR_THR_Empty_POS)
117:
#define AG903_UART_LSR_TRANENP_BIT (1<<
AG903_UARTn_LSR_Transmitter_Empty_POS)
118:
#define AG903_UART_LSR_FIFOERR_BIT (1<<
AG903_UARTn_LSR_FIFO_Data_Error_POS)
119:
120:
121:
#define AG903_UART_INT_LINESTATUS (0x06)
122:
123:
124:
#define AG903_UART_INT_DATAREADY (0x04)
125:
126:
127:
#define AG903_UART_INT_RCVTIMEOUT (0x0C)
128:
129:
130:
#define AG903_UART_INT_THREMPTY (0x02)
131:
132:
133:
#define AG903_UART_INT_MODEMSTATUS (0x00)
134:
135:
136:
137:
void AG903_UARTPrmSetDivisor(uint8_t ch, uint8_t pscale, uint16_t div);
138:
void AG903_UARTPrmSetWordLength(uint8_t ch, uint8_t parity_type, uint8_t length_type);
139:
void AG903_UARTPrmDisableFifo(uint8_t ch);
140:
void AG903_UARTPrmEnableFifo(uint8_t ch);
141:
void AG903_UARTPrmSetFifoTrigger(uint8_t ch, uint8_t rx_trgl, uint8_t tx_trgl);
142:
void AG903_UARTPrmResetFifo(uint8_t ch, uint8_t bit);
143:
void AG903_UARTPrmDisableFlowControl(uint8_t ch, uint8_t bit);
144:
void AG903_UARTPrmEnableFlowControl(uint8_t ch, uint8_t bit);
145:
void AG903_UARTPrmSetDmaMode(uint8_t ch, uint8_t mode);
146:
void AG903_UARTPrmSetBreak(uint8_t ch, _Bool enable);
147:
void AG903_UARTPrmDisableInt(uint8_t ch, uint32_t bit);
148:
void AG903_UARTPrmEnableInt(uint8_t ch, uint32_t bit);
149:
void AG903_UARTPrmSendData(uint8_t ch, uint8_t* buf, uint32_t sndsz);
150:
void AG903_UARTPrmGetReceiveData(uint8_t ch, uint8_t* buf);
151:
void AG903_UARTPrmGetIntType(uint8_t ch, uint8_t* type);
152:
void AG903_UARTPrmGetLineStatus(uint8_t ch, uint8_t* status);
153:
void AG903_UARTPrmGetRs485Status(uint8_t ch, uint32_t* status);
154:
155:
void AG903_UARTPrmDisableRS485(uint8_t ch);
156:
void AG903_UARTPrmEnableRS485(uint8_t ch);
157:
void AG903_UARTPrmDisableTimeoutDetect(uint8_t ch);
158:
void AG903_UARTPrmEnableTimeoutDetect(uint8_t ch);
159:
void AG903_UARTPrmDisableTimeoutIntMask(uint8_t ch, uint32_t bit);
160:
void AG903_UARTPrmEnableTimeoutIntMask(uint8_t ch, uint32_t bit);
161:
void AG903_UARTPrmSetAutoMode(uint8_t ch, _Bool hold, _Bool setup);
162:
void AG903_UARTPrmSetSetuptime(uint8_t ch, uint32_t setup_time);
163:
void AG903_UARTPrmSetHoldtime(uint8_t ch, uint32_t hold_time);
164:
void AG903_UARTPrmSetReceivetime(uint8_t ch, uint32_t rcv_time);
165:
void AG903_UARTPrmSetCharainterval(uint8_t ch, uint32_t chara_interval);
166:
void AG903_UARTPrmSetTimeout(uint8_t ch, uint32_t timeout);
167:
void AG903_UARTPrmClerTimeoutStatus(uint8_t ch, uint32_t bit);
168:
169:
#ifdef __cplusplus
170: }
171:
#endif
172:
#endif