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