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
|
/**
* @file
*
* @ingroup csb337_at91rm9200
*
* @brief Atmel AT91RM9200_USART Register definitions
*/
/*
* Atmel AT91RM9200_USART Register definitions, used in KIT637_V6 (CSB637)
*
* Copyright (c) 2003 by Cogent Computer Systems
* Written by Mike Kelly <mike@cogcomp.com>
*
* Modified by Fernando Nicodemos <fgnicodemos@terra.com.br>
* from NCB - Sistemas Embarcados Ltda. (Brazil)
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.org/license/LICENSE.
*/
#ifndef __AT91RM9200_USART_H__
#define __AT91RM9200_USART_H__
#include <bits.h>
/* Register Offsets */
#define US_CR 0x00 /* Control Register */
#define US_MR 0x04 /* Mode Register */
#define US_IER 0x08 /* Interrupt Enable Register */
#define US_IDR 0x0C /* Interrupt Disable Register */
#define US_IMR 0x10 /* Interrupt Mask Register */
#define US_SR 0x14 /* Channel Status Register */
#define US_RHR 0x18 /* Receiver Holding Register */
#define US_THR 0x1C /* Transmitter Holding Register */
#define US_BRGR 0x20 /* Baud Rate Generator Register */
#define US_RTOR 0x24 /* Receiver Time-out Register */
#define US_TTGR 0x28 /* Transmitter Timeguard Register */
#define US_C1R 0x40 /* Chip ID1 Register - FI DI Ratio Register */
#define US_C2R 0x44 /* Chip ID2 Register - Number of Erros Register */
#define US_FNTR 0x48 /* Force NTRST Register */
#define US_IF 0x4C /* IrDA Filter Register */
/* Bit Defines */
/* Control Register, US_CR, Offset 0x00 */
#define US_CR_RSTRX BIT2 /* 1 = Reset and disable receiver */
#define US_CR_RSTTX BIT3 /* 1 = Reset and disable transmitter */
#define US_CR_RXEN BIT4 /* 1 = Receiver enable */
#define US_CR_RXDIS BIT5 /* 1 = Receiver disable */
#define US_CR_TXEN BIT6 /* 1 = Transmitter enable */
#define US_CR_TXDIS BIT7 /* 1 = Transmitter disable */
#define US_CR_RSTSTA BIT8 /* 1 = Reset PARE, FRAME and OVRE in DBGU_SR. */
#define US_CR_STTBRK BIT9 /* 1 = Start transmission of a Break */
#define US_CR_STPBRK BIT10 /* 1 = Stop transmission of a Break */
#define US_CR_STTTO BIT11 /* 1 = Start Time-out */
#define US_CR_SENDA BIT12 /* 1 = Send Address - MDROP mode only */
#define US_CR_RSTIT BIT13 /* 1 = Reset Iteration */
#define US_CR_RSTNACK BIT14 /* 1 = Reset Non Acknowledge */
#define US_CR_RETTO BIT15 /* 1 = Restart Time-out */
#define US_CR_DTREN BIT16 /* 1 = Data Terminal Ready Enable - AT91RM9200 only */
#define US_CR_DTRDIS BIT17 /* 1 = Data Terminal Ready Disable - AT91RM9200 only */
#define US_CR_RTSEN BIT18 /* 1 = Request To Send Enable */
#define US_CR_RTSDIS BIT19 /* 1 = Request To Send Disable */
/* Mode Register. US_MR. Offset 0x04 */
#define US_MR_USMODE (0xF << 0) /* Mode of the USART */
#define US_MR_USMODE_NORMAL 0
#define US_MR_USMODE_RS485 1
#define US_MR_USMODE_HWHS 2
#define US_MR_USMODE_MODEM 3
#define US_MR_USMODE_ISO7816_T0 4
#define US_MR_USMODE_ISO7816_T1 6
#define US_MR_USMODE_IRDA 8
#define US_MR_USCLKS (3 << 4) /* Clock Selection */
#define US_MR_USCLKS_MCK (0 << 4)
#define US_MR_USCLKS_MCK_DIV8 (1 << 4)
#define US_MR_USCLKS_SCK (3 << 4)
#define US_MR_CHRL (3 << 6) /* Character Length */
#define US_MR_CHRL_5 (0 << 6)
#define US_MR_CHRL_6 (1 << 6)
#define US_MR_CHRL_7 (2 << 6)
#define US_MR_CHRL_8 (3 << 6)
#define US_MR_SYNC (1 << 8) /* Synchronous Mode Select */
#define US_MR_PAR (7 << 9) /* Parity Type */
#define US_MR_PAR_EVEN (0 << 9) /* Even Parity */
#define US_MR_PAR_ODD (1 << 9) /* Odd Parity */
#define US_MR_PAR_SPACE (2 << 9) /* Parity forced to 0 (Space) */
#define US_MR_PAR_MARK (3 << 9) /* Parity forced to 1 (Mark) */
#define US_MR_PAR_NONE (4 << 9) /* No Parity */
#define US_MR_PAR_MDROP (6 << 9) /* Multi-drop mode */
#define US_MR_NBSTOP (3 << 12) /* Number of Stop Bits */
#define US_MR_NBSTOP_1 (0 << 12)
#define US_MR_NBSTOP_1_5 (1 << 12)
#define US_MR_NBSTOP_2 (2 << 12)
#define US_MR_CHMODE (3 << 14) /* Channel Mode */
#define US_MR_CHMODE_NORM (0 << 14) /* Normal Mode */
#define US_MR_CHMODE_AUTO (1 << 14) /* Auto Echo: RXD drives TXD */
#define US_MR_CHMODE_LOC (2 << 14) /* Local Loopback: TXD drives RXD */
#define US_MR_CHMODE_REM (3 << 14) /* Remote Loopback: RXD pin connected to TXD pin. */
#define US_MR_MSBF (1 << 16) /* Bit Order */
#define US_MR_MODE9 (1 << 17) /* 9-bit Character Length */
#define US_MR_CLKO (1 << 18) /* Clock Output Select */
#define US_MR_OVER (1 << 19) /* Oversampling Mode */
#define US_MR_INACK (1 << 20) /* Inhibit Non Acknowledge */
#define US_MR_DSNACK (1 << 21) /* Disable Successive NACK */
#define US_MR_MAX_ITER (7 << 24) /* Max Iterations */
#define US_MR_FILTER (1 << 28) /* Infrared Receive Line Filter */
/* Interrupt Enable Register, US_IER, Offset 0x08 */
/* Interrupt Disable Register, US_IDR, Offset 0x0C */
/* Interrupt Mask Register, US_IMR, Offset 0x10 */
/* Channel Status Register, US_SR, Offset 0x14 */
#define US_IER_RXRDY BIT0 /* RXRDY Interrupt */
#define US_IER_TXRDY BIT1 /* TXRDY Interrupt */
#define US_IER_RXBRK BIT2 /* End of Receive Transfer Interrupt */
#define US_IER_ENDRX BIT3 /* End of Receiver Transfer */
//#define US_IER_ENDTX BIT4 /* End of Transmit Interrupt */
#define US_IER_OVRE BIT5 /* Overrun Interrupt */
#define US_IER_FRAME BIT6 /* Framing Error Interrupt */
#define US_IER_PARE BIT7 /* Parity Error */
#define US_IER_TIMEOUT BIT8 /* Receiver Time-out */
#define US_IER_TXEMPTY BIT9 /* Transmitter Empty */
#define US_IER_ITERATION BIT10 /* Max number of Repetitions Reached */
#define US_IER_TXBUFE BIT11 /* Transmission Buffer Empty */
#define US_IER_RXBUFF BIT12 /* Reception Buffer Full */
#define US_IER_NACK BIT13 /* Non Acknowledge */
#define US_IER_RIIC BIT16 /* Ring Indicator Input Change [AT91RM9200 only] */
#define US_IER_DSRIC BIT17 /* Data Set Ready Input Change [AT91RM9200 only] */
#define US_IER_DCDIC BIT18 /* Data Carrier Detect Input Change [AT91RM9200 only] */
#define US_IER_CTSIC BIT19 /* Clear to Send Input Change */
#define US_IER_ALL 0xC0001AFB /* all assigned bits */
/* FORCE_NTRST Register, US_FNTR, Offset 0x48 */
#define US_FNTR_NTRST BIT0 /* 1 = Force NTRST low in JTAG */
typedef struct {
volatile uint32_t cr;
volatile uint32_t mr;
volatile uint32_t ier;
volatile uint32_t idr;
volatile uint32_t imr;
volatile uint32_t sr;
volatile uint32_t rhr;
volatile uint32_t thr;
volatile uint32_t brgr;
volatile uint32_t _res0[7];
volatile uint32_t cidr;
volatile uint32_t exid;
volatile uint32_t fnr;
} at91rm9200_usart_regs_t;
#endif /* __AT91RM9200_USART_H__ */
|