]> git.sur5r.net Git - freertos/blob - Demo/ARM7_AT91FR40008_GCC/usart.h
First version under SVN is V4.0.1
[freertos] / Demo / ARM7_AT91FR40008_GCC / usart.h
1 //*----------------------------------------------------------------------------\r
2 //*         ATMEL Microcontroller Software Support  -  ROUSSET  -\r
3 //*----------------------------------------------------------------------------\r
4 //* The software is delivered "AS IS" without warranty or condition of any\r
5 //* kind, either express, implied or statutory. This includes without\r
6 //* limitation any warranty or condition with respect to merchantability or\r
7 //* fitness for any particular purpose, or against the infringements of\r
8 //* intellectual property rights of others.\r
9 //*-----------------------------------------------------------------------------\r
10 //* File Name           : usart.h\r
11 //* Object              : USART Header File.\r
12 //*\r
13 //* 1.0 01/04/00 JCZ    : Creation\r
14 //*----------------------------------------------------------------------------\r
15 \r
16 #ifndef usart_h\r
17 #define usart_h\r
18 \r
19 //#include    "periph/stdc/std_c.h"\r
20 //#include    "periph/pio/lib_pio.h"\r
21 \r
22 /*-------------------------------------------*/\r
23 /* USART User Interface Structure Definition */\r
24 /*-------------------------------------------*/\r
25 \r
26 typedef struct\r
27 {\r
28     at91_reg            US_CR ;         /* Control Register */\r
29     at91_reg            US_MR ;         /* Mode Register */\r
30     at91_reg            US_IER ;        /* Interrupt Enable Register */\r
31     at91_reg            US_IDR ;        /* Interrupt Disable Register */\r
32     at91_reg            US_IMR ;        /* Interrupt Mask Register */\r
33     at91_reg            US_CSR ;        /* Channel Status Register */\r
34     at91_reg            US_RHR ;        /* Receive Holding Register */\r
35     at91_reg            US_THR ;        /* Transmit Holding Register */\r
36     at91_reg            US_BRGR ;       /* Baud Rate Generator Register */\r
37     at91_reg            US_RTOR ;       /* Receiver Timeout Register */\r
38     at91_reg            US_TTGR ;       /* Transmitter Time-guard Register */\r
39     at91_reg            Reserved ;\r
40     at91_reg            US_RPR ;        /* Receiver Pointer Register */\r
41     at91_reg            US_RCR ;        /* Receiver Counter Register */\r
42     at91_reg            US_TPR ;        /* Transmitter Pointer Register */\r
43     at91_reg            US_TCR ;        /* Transmitter Counter Register */\r
44 } StructUSART ;\r
45 \r
46 /*--------------------------*/\r
47 /* US_CR : Control Register */\r
48 /*--------------------------*/\r
49 \r
50 #define US_RSTRX                0x0004      /* Reset Receiver */\r
51 #define US_RSTTX                0x0008      /* Reset Transmitter */\r
52 #define US_RXEN                 0x0010      /* Receiver Enable */\r
53 #define US_RXDIS                0x0020      /* Receiver Disable */\r
54 #define US_TXEN                 0x0040      /* Transmitter Enable */\r
55 #define US_TXDIS                0x0080      /* Transmitter Disable */\r
56 #define US_RSTSTA               0x0100      /* Reset Status Bits */\r
57 #define US_STTBRK               0x0200      /* Start Break */\r
58 #define US_STPBRK               0x0400      /* Stop Break */\r
59 #define US_STTTO                0x0800      /* Start Time-out */\r
60 #define US_SENDA                0x1000      /* Send Address */\r
61 \r
62 /*-----------------------*/\r
63 /* US_MR : Mode Register */\r
64 /*-----------------------*/\r
65 \r
66 #define US_CLKS                 0x0030      /* Clock Selection */\r
67 #define US_CLKS_MCK             0x00        /* Master Clock */\r
68 #define US_CLKS_MCK8            0x10        /* Master Clock divided by 8 */\r
69 #define US_CLKS_SCK             0x20        /* External Clock */\r
70 #define US_CLKS_SLCK            0x30        /* Slow Clock */\r
71 \r
72 #define US_CHRL                 0x00C0      /* Byte Length */\r
73 #define US_CHRL_5               0x00        /* 5 bits */\r
74 #define US_CHRL_6               0x40        /* 6 bits */\r
75 #define US_CHRL_7               0x80        /* 7 bits */\r
76 #define US_CHRL_8               0xC0        /* 8 bits */\r
77 \r
78 #define US_SYNC                 0x0100      /* Synchronous Mode Enable */\r
79 \r
80 #define US_PAR                  0x0E00      /* Parity Mode */\r
81 #define US_PAR_EVEN             0x00        /* Even Parity */\r
82 #define US_PAR_ODD              0x200       /* Odd Parity */\r
83 #define US_PAR_SPACE            0x400       /* Space Parity to 0 */\r
84 #define US_PAR_MARK             0x600       /* Marked Parity to 1 */\r
85 #define US_PAR_NO               0x800       /* No Parity */\r
86 #define US_PAR_MULTIDROP        0xC00       /* Multi-drop Mode */\r
87 \r
88 #define US_NBSTOP               0x3000      /* Stop Bit Number */\r
89 #define US_NBSTOP_1             0x0000      /* 1 Stop Bit */\r
90 #define US_NBSTOP_1_5           0x1000      /* 1.5 Stop Bits */\r
91 #define US_NBSTOP_2             0x2000      /* 2 Stop Bits */\r
92 \r
93 #define US_CHMODE                   0xC000  /* Channel Mode */\r
94 #define US_CHMODE_NORMAL            0x0000  /* Normal Mode */\r
95 #define US_CHMODE_AUTOMATIC_ECHO    0x4000  /* Automatic Echo */\r
96 #define US_CHMODE_LOCAL_LOOPBACK    0x8000  /* Local Loopback */\r
97 #define US_CHMODE_REMOTE_LOOPBACK   0xC000  /* Remote Loopback */\r
98 \r
99 #define US_MODE9                0x20000     /* 9 Bit Mode */\r
100 \r
101 #define US_CLKO                 0x40000     /* Baud Rate Output Enable */\r
102 \r
103 /* Mode Register model */\r
104 \r
105 /* Standard Asynchronous Mode : 8 bits , 1 stop , no parity */\r
106 #define US_ASYNC_MODE ( US_CHMODE_NORMAL + \\r
107                         US_NBSTOP_1 + \\r
108                         US_PAR_NO + \\r
109                         US_CHRL_8 + \\r
110                         US_CLKS_MCK )\r
111 \r
112 /* Standard External Asynchronous Mode : 8 bits , 1 stop , no parity */\r
113 #define US_ASYNC_SCK_MODE ( US_CHMODE_NORMAL + \\r
114                             US_NBSTOP_1 + \\r
115                             US_PAR_NO + \\r
116                             US_CHRL_8 + \\r
117                             US_CLKS_SCK )\r
118 \r
119 /* Standard Synchronous Mode : 8 bits , 1 stop , no parity */\r
120 #define US_SYNC_MODE ( US_SYNC + \\r
121                        US_CHMODE_NORMAL + \\r
122                        US_NBSTOP_1 + \\r
123                        US_PAR_NO + \\r
124                        US_CHRL_8 + \\r
125                        US_CLKS_MCK )\r
126 \r
127 /* SCK used Label */\r
128 #define SCK_USED (US_CLKO | US_CLKS_SCK)\r
129 \r
130 /*---------------------------------------------------------------*/\r
131 /* US_IER, US_IDR, US_IMR, US_IMR: Status and Interrupt Register */\r
132 /*---------------------------------------------------------------*/\r
133 \r
134 #define US_RXRDY            0x1       /* Receiver Ready */\r
135 #define US_TXRDY            0x2       /* Transmitter Ready */\r
136 #define US_RXBRK            0x4       /* Receiver Break */\r
137 #define US_ENDRX            0x8       /* End of Receiver PDC Transfer */\r
138 #define US_ENDTX            0x10       /* End of Transmitter PDC Transfer */\r
139 #define US_OVRE             0x20       /* Overrun Error */\r
140 #define US_FRAME            0x40       /* Framing Error */\r
141 #define US_PARE             0x80       /* Parity Error */\r
142 #define US_TIMEOUT          0x100       /* Receiver Timeout */\r
143 #define US_TXEMPTY          0x200       /* Transmitter Empty */\r
144 \r
145 #define US_MASK_IRQ_TX      (US_TXRDY | US_ENDTX | US_TXEMPTY)\r
146 #define US_MASK_IRQ_RX      (US_RXRDY | US_ENDRX | US_TIMEOUT)\r
147 #define US_MASK_IRQ_ERROR   (US_PARE | US_FRAME | US_OVRE | US_RXBRK)\r
148 \r
149 \r
150 \r
151 #endif /* usart_h */\r