blob: 8c61bbd990402bb05010ee119222050c6e343171 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
|
#ifndef __UART_H__
#define __UART_H__
#define BAUD_RATE 9600
/*
UARTAn control register 0 (UAnCTL0)
*/
#define _10_UARTA_UAnCTL0_INITIALVALUE 0x10U
/* UARTAn operation control (UAnPWR) */
#define _00_UARTA_OPERATION_DISABLE 0x00U /* disable UARTAn operation (UARTAn reset asynchronously) */
#define _80_UARTA_OPERATION_ENABLE 0x80U /* enable UARTAn operation */
/* Transmission operation enable (UAnTXE) */
#define _00_UARTA_TRANSMISSION_DISABLE 0x00U /* disable transmission operation */
#define _40_UARTA_TRANSMISSION_ENABLE 0x40U /* enable transmission operation */
/* Reception operation enable (UAnRXE) */
#define _00_UARTA_RECEPTION_DISABLE 0x00U /* disable reception operation */
#define _20_UARTA_RECEPTION_ENABLE 0x20U /* enable reception operation */
/* Transfer direction selection (UAnDIR) */
#define _00_UARTA_TRANSFDIR_MSB 0x00U /* MSB-first transfer */
#define _10_UARTA_TRANSFDIR_LSB 0x10U /* LSB-first transfer */
/* Parity selection during transmission/reception (UAnPS1,UAnPS0) */
#define _00_UARTA_PARITY_NONE 0x00U /* no parity output/reception with no parity */
#define _04_UARTA_PARITY_ZREO 0x04U /* 0 parity output/reception with 0 parity */
#define _08_UARTA_PARITY_ODD 0x08U /* odd parity output/odd parity check */
#define _0C_UARTA_PARITY_EVEN 0x0CU /* even parity output/even parity check */
/* Specification of data character length of 1 frame of transmit/receive data (UAnCL) */
#define _00_UARTA_DATALENGTH_7BIT 0x00U /* 7 bits */
#define _02_UARTA_DATALENGTH_8BIT 0x02U /* 8 bits */
/* Specification of length of stop bit for transmit data (UAnSL) */
#define _00_UARTA_STOPLENGTH_1BIT 0x00U /* 1 bit */
#define _01_UARTA_STOPLENGTH_2BIT 0x01U /* 2 bits */
/*
UARTAn base clock selects register (UAnCTL1)
*/
/* UAnCTL1 register (UAnCKS3 - UAnCKS0) */
#define _00_UARTA_BASECLK_FXX_2 0x00U /* fXX/2 */
#define _01_UARTA_BASECLK_FXX_4 0x01U /* fXX/2^2 */
#define _02_UARTA_BASECLK_FXX_8 0x02U /* fXX/2^3 */
#define _03_UARTA_BASECLK_FXX_16 0x03U /* fXX/2^4 */
#define _04_UARTA_BASECLK_FXX_32 0x04U /* fXX/2^5 */
#define _05_UARTA_BASECLK_FXX_64 0x05U /* fXX/2^6 */
#define _06_UARTA_BASECLK_FXX_128 0x06U /* fXX/2^7 */
#define _07_UARTA_BASECLK_FXX_256 0x07U /* fXX/2^8 */
#define _08_UARTA_BASECLK_FXX_512 0x08U /* fXX/2^9 */
#define _09_UARTA_BASECLK_FXX_1024 0x09U /* fXX/2^10 */
#define _0A_UARTA_BASECLK_FXX_2048 0x0AU /* fXX/2^11 */
#define _0B_UARTA_BASECLK_FXX_4096 0x0BU /* fXX/2^12 */
/*
UARTAn option control register 0 (UAnOPT0)
*/
#define _14_UARTA_UAnOPT0_INITIALVALUE 0x14U
/* Transmit data level bit(UAnTDL) */
#define _00_UARTA_TRAN_DATALEVEL_NORMAL 0x00U /* normal output of transfer data */
#define _02_UARTA_TRAN_DATALEVEL_INVERTED 0x02U /* inverted output of transfer data */
/* Receive data level bit(UAnRDL) */
#define _00_UARTA_REC_DATALEVEL_NORMAL 0x00U /* normal input of transfer data */
#define _01_UARTA_REC_DATALEVEL_INVERTED 0x01U /* inverted input of transfer data */
/*
CSIBn control register 0 (CBnCTL0)
*/
/* Specification of CSIBn operation disable/enable (CBnPWR)*/
#define _00_CSIB_OPERATION_DISABLE 0x00U /* disable CSIBn operation and reset the CBnSTR register */
#define _80_CSIB_OPERATION_ENABLE 0x80U /* enable CSIBn operation */
/* Specification of transmit operation disable/enable (CBnTXE)*/
#define _00_CSIB_TRANSMIT_DISABLE 0x00U /* disable transmit operation */
#define _40_CSIB_TRANSMIT_ENABLE 0x40U /* enable transmit operation */
/* Specification of receive operation disable/enable (CBnRXE)*/
#define _00_CSIB_RECEIVE_DISABLE 0x00U /* disable receive operation */
#define _20_CSIB_RECEIVE_ENABLE 0x20U /* enable receive operation */
/* Specification of transfer direction mode (MSB/LSB) (CBnDIR) */
#define _00_CSIB_DATA_MSB 0x00U /* MSB first */
#define _10_CSIB_DATA_LSB 0x10U /* LSB first */
/* Transfer mode specification (CBnTMS) */
#define _00_CSIB_MODE_SINGLE 0x00U /* single transfer mode */
#define _02_CSIB_MODE_CONTINUOUS 0x02U /* continuous transfer mode */
/* Specification of start transfer disable/enable (CBnSCE) */
#define _00_CSIB_STARTTRG_INVALID 0x00U /* communication start trigger invalid */
#define _01_CSIB_STARTTRG_VALID 0x01U /* communication start trigger valid */
/*
CSIBn control register 1 (CBnCTL1)
*/
/* Specification of data transmission/reception timing in relation to SCKBn (CBnCKP, CBnDAP) */
#define _00_CSIB_DATA_TIMING1 0x00U /* communication type 1 */
#define _08_CSIB_DATA_TIMING2 0x08U /* communication type 2 */
#define _10_CSIB_DATA_TIMING3 0x10U /* communication type 3 */
#define _18_CSIB_DATA_TIMING4 0x18U /* communication type 4 */
/* Specification of input clock (CBnCKS2 - CBnCKS0) */
#define _00_CSIB_CLOCK_1 0x00U /* fXX /2 */
#define _01_CSIB_CLOCK_2 0x01U /* fXX/4 */
#define _02_CSIB_CLOCK_3 0x02U /* fXX /8 */
#define _03_CSIB_CLOCK_4 0x03U /* fXX /16 */
#define _04_CSIB_CLOCK_5 0x04U /* fXX /32 */
#define _05_CSIB_CLOCK_6 0x05U /* fXX /64 */
#define _06_CSIB_CLOCK_7 0x06U /* fBRGm */
#define _07_CSIB_CLOCK_EXT 0x07U /* external clock SCKBn */
/*
CSIBn control register 2 (CBnCTL2)
*/
/* Serial register bit length (CBnCL3,CBnCL2,CBnCL1,CBnCL0) */
#define _00_CSIB_DATA_LENGTH_8 0x00U /* 8 bits */
#define _01_CSIB_DATA_LENGTH_9 0x01U /* 9 bits */
#define _02_CSIB_DATA_LENGTH_10 0x02U /* 10 bits */
#define _03_CSIB_DATA_LENGTH_11 0x03U /* 11 bits */
#define _04_CSIB_DATA_LENGTH_12 0x04U /* 12 bits */
#define _05_CSIB_DATA_LENGTH_13 0x05U /* 13 bits */
#define _06_CSIB_DATA_LENGTH_14 0x06U /* 14 bits */
#define _07_CSIB_DATA_LENGTH_15 0x07U /* 15 bits */
#define _08_CSIB_DATA_LENGTH_16 0x08U /* 16 bits */
/*
CSIBn status register (CBnSTR)
*/
/* Communication status flag (CBnTSF) */
#define _00_CSIB_COMMUNICATION_STOP 0x00U /* communication stopped */
#define _80_CSIB_COMMUNICATING 0x80U /* communicating */
/* Overrun error flag (CBnOVE) */
#define _00_CSIB_OVERRUN_NONE 0x00U /* no overrun */
#define _01_CSIB_OVERRUN 0x01U /* overrun */
/*
BRGm prescaler mode registers (PRSMm)
*/
/* Baud rate output(BGCEm) */
#define _00_CSIB_FBRGM_DISABLE 0x00U /* baudrate output disabled */
#define _10_CSIB_FBRGM_ENABLE 0x10U /* baudrate output enabled */
/* Input clock selection (BGCSm1,BGCSm0) */
#define _00_CSIB_FBGCS_0 0x00U /* fXX */
#define _01_CSIB_FBGCS_1 0x01U /* fXX/2 */
#define _02_CSIB_FBGCS_2 0x02U /* fXX/4 */
#define _03_CSIB_FBGCS_3 0x03U /* fXX/8 */
#define CB4RIC UA0RIC
#define CB4TIC UA0TIC
#define CB0RIC IICIC1
/*
IIC control register (IICCn)
*/
/* IIC operation enable (IICEn) */
#define _80_IIC_OPERATION 0x80U
#define _00_IIC_OPERATION_DISABLE 0x00U /* stop operation */
#define _80_IIC_OPERATION_ENABLE 0x80U /* enable operation */
/* Exit from communications (LRELn) */
#define _40_IIC_COMMUNICATION 0x40U
#define _00_IIC_COMMUNICATION_NORMAL 0x00U /* normal operation */
#define _40_IIC_COMMUNICATION_EXIT 0x40U /* exit from current communication */
/* Wait cancellation (WRELn) */
#define _20_IIC_WAITCANCEL 0x20U
#define _00_IIC_WAIT_NOTCANCEL 0x00U /* do not cancel wait */
#define _20_IIC_WAIT_CANCEL 0x20U /* cancel wait */
/* Generation of interrupt when stop condition (SPIEn) */
#define _10_IIC_STOPINT 0x10U
#define _00_IIC_STOPINT_DISABLE 0x00U /* disable */
#define _10_IIC_STOPINT_ENABLE 0x10U /* enable */
/* Wait and interrupt generation (WTIMn) */
#define _08_IIC_WAITINT 0x08U
#define _00_IIC_WAITINT_CLK8FALLING 0x00U /* generate at the eighth clock falling edge */
#define _08_IIC_WAITINT_CLK9FALLING 0x08U /* generated at the ninth clock falling edge */
/* Acknowledgement control (ACKEn) */
#define _04_IIC_ACK 0x04
#define _00_IIC_ACK_DISABLE 0x00U /* disable acknowledgement */
#define _04_IIC_ACK_ENABLE 0x04U /* enable acknowledgement */
/* Start condition trigger (STTn) */
#define _02_IIC_STARTCONDITION 0x02U
#define _00_IIC_START_NOTGENERATE 0x00U /* do not generate start condition */
#define _02_IIC_START_GENERATE 0x02U /* generate start condition */
/* Stop condition trigger (SPTn) */
#define _01_IIC_STOPCONDITION 0x01U
#define _00_IIC_STOP_NOTGENERATE 0x00U /* do not generate stop condition */
#define _01_IIC_STOP_GENERATE 0x01U /* generate stop condition */
/*
IIC Status Register (IICSn)
*/
/* Master device status (MSTSn) */
#define _80_IIC_MASTERSTATUS 0x80U
#define _00_IIC_STATUS_NOTMASTER 0x00U /* slave device status or communication standby status */
#define _80_IIC_STATUS_MASTER 0x80U /* master device communication status */
/* Detection of arbitration loss (ALDn) */
#define _40_IIC_ARBITRATION 0x40U
#define _00_IIC_ARBITRATION_NO 0x00U /* arbitration win or no arbitration */
#define _40_IIC_ARBITRATION_LOSS 0x40U /* arbitration loss */
/* Detection of extension code reception (EXCn) */
#define _20_IIC_EXTENSIONCODE 0x20U
#define _00_IIC_EXTCODE_NOT 0x00U /* extension code not received */
#define _20_IIC_EXTCODE_RECEIVED 0x20U /* extension code received */
/* Detection of matching addresses (COIn) */
#define _10_IIC_ADDRESSMATCH 0x10U
#define _00_IIC_ADDRESS_NOTMATCH 0x00U /* addresses do not match */
#define _10_IIC_ADDRESS_MATCH 0x10U /* addresses match */
/* Detection of transmit/receive status (TRCn) */
#define _08_IIC_STATUS 0x08U
#define _00_IIC_STATUS_RECEIVE 0x00U /* receive status */
#define _08_IIC_STATUS_TRANSMIT 0x08U /* transmit status */
/* Detection of acknowledge signal (ACKDn) */
#define _04_IIC_ACKDETECTION 0x04U
#define _00_IIC_ACK_NOTDETECTED 0x00U /* ACK signal was not detected */
#define _04_IIC_ACK_DETECTED 0x04U /* ACK signal was detected */
/* Detection of start condition (STDn) */
#define _02_IIC_STARTDETECTION 0x02U
#define _00_IIC_START_NOTDETECTED 0x00U /* start condition not detected */
#define _02_IIC_START_DETECTED 0x02U /* start condition detected */
/* Detection of stop condition (SPDn) */
#define _01_IIC_STOPDETECTION 0x01U
#define _00_IIC_STOP_NOTDETECTED 0x00U /* stop condition not detected */
#define _01_IIC_STOP_DETECTED 0x01U /* stop condition detected */
/*
IIC Flag Register (IICFn)
*/
/* STTn clear flag (STCFn) */
#define _80_IIC_STARTFLAG 0x80U
#define _00_IIC_STARTFLAG_GENERATE 0x00U /* generate start condition */
#define _80_IIC_STARTFLAG_UNSUCCESSFUL 0x80U /* start condition generation unsuccessful */
/* IIC bus status flag (IICBSYn) */
#define _40_IIC_BUSSTATUS 0x40U
#define _00_IIC_BUS_RELEASE 0x00U /* bus release status */
#define _40_IIC_BUS_COMMUNICATION 0x40U /* bus communication status */
/* Initial start enable trigger (STCENn) */
#define _02_IIC_STARTWITHSTOP 0x02U
#define _00_IIC_START_WITHSTOP 0x00U /* generation of a start condition upon detection of a stop condition */
#define _02_IIC_START_WITHOUTSTOP 0x02U /* generation of a start condition without detecting a stop condition */
/* Communication reservation function disable bit (IICRSVn) */
#define _01_IIC_RESERVATION 0x01U
#define _00_IIC_RESERVATION_ENABLE 0x00U /* enable communication reservation */
#define _01_IIC_RESERVATION_DISABLE 0x01U /* disable communication reservation */
/*
IIC clock selection register (IICCLn)
*/
#define _00_IICCL_INITIALVALUE 0x00U
/* Detection of SCL0n pin level (CLDn) */
#define _20_IIC_SCLLEVEL 0x20U
#define _00_IIC_SCL_LOW 0x00U /* clock line at low level */
#define _20_IIC_SCL_HIGH 0x20U /* clock line at high level */
/* Detection of SDA0 pin level (DADn) */
#define _10_IIC_SDALEVEL 0x10U
#define _00_IIC_SDA_LOW 0x00U /* data line at low level */
#define _10_IIC_SDA_HIGH 0x10U /* data line at high level */
/* Operation mode switching (SMCn) */
#define _08_IIC_OPERATIONMODE 0x08U
#define _00_IIC_MODE_STANDARD 0x00U /* operates in standard mode */
#define _08_IIC_MODE_HIGHSPEED 0x08U /* operates in high-speed mode */
/* Digital filter operation control (DFCn) */
#define _04_IIC_DIGITALFILTER 0x04U
#define _00_IIC_FILTER_OFF 0x00U /* digital filter off */
#define _04_IIC_FILTER_ON 0x04U /* digital filter on */
/* Operation mode switching (CLn1, CLn0) */
#define _03_IIC_CLOCKSELECTION 0x03U
/* Combine of (CLn1, CLn0)*/
#define _00_IIC_CLOCK0 0x00U
#define _01_IIC_CLOCK1 0x01U
#define _02_IIC_CLOCK2 0x02U
#define _03_IIC_CLOCK3 0x03U
/*
IIC division clock select register (OCKSn)
*/
#define _10_IIC_SELECTED0 0x10U
#define _11_IIC_SELECTED1 0x11U
#define _12_IIC_SELECTED2 0x12U
#define _13_IIC_SELECTED3 0x13U
#define _18_IIC_SELECTED4 0x18U
/*
IIC function expansion register 0 (IICXn)
*/
/* IIC clock expension (CLXn) */
#define _01_IIC_CLOCKEXPENSION 0x01U
#define _00_IIC_EXPENSION0 0x00U
#define _01_IIC_EXPENSION1 0x01U
#define _80_ADDRESS_COMPLETE 0x80U
#define _00_IIC_MASTER_FLAG_CLEAR 0x00U
#define IICIC2 UA1RIC
#define IICIC0 UA2RIC
/*
*******************************************************************************
** Macro define
*******************************************************************************
*/
/* Selection of 8-bit counter output clock (UA1BRS7~UA1BRS0) */
#define _D0_UARTA1_BASECLK_DIVISION 0xD0U /* 4 ~ 255 */ //9600
#define _11_UARTA1_BASECLK_DIVISION 0x11U /* 4 ~ 255 */ //115200
enum TransferMode
{
SEND, RECEIVE
};
void rt_hw_uart_init(void);
#endif
|