]> git.sur5r.net Git - freertos/blob - Demo/CORTEX_LM3S811_GCC/hw_include/hw_adc.h
Start to re-arrange files to include FreeRTOS+ in main download.
[freertos] / Demo / CORTEX_LM3S811_GCC / hw_include / hw_adc.h
1 //*****************************************************************************\r
2 //\r
3 // hw_adc.h - Macros used when accessing the ADC hardware.\r
4 //\r
5 // Copyright (c) 2005,2006 Luminary Micro, Inc.  All rights reserved.\r
6 //\r
7 // Software License Agreement\r
8 //\r
9 // Luminary Micro, Inc. (LMI) is supplying this software for use solely and\r
10 // exclusively on LMI's Stellaris Family of microcontroller products.\r
11 //\r
12 // The software is owned by LMI and/or its suppliers, and is protected under\r
13 // applicable copyright laws.  All rights are reserved.  Any use in violation\r
14 // of the foregoing restrictions may subject the user to criminal sanctions\r
15 // under applicable laws, as well as to civil liability for the breach of the\r
16 // terms and conditions of this license.\r
17 //\r
18 // THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED\r
19 // OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF\r
20 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.\r
21 // LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR\r
22 // CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.\r
23 //\r
24 // This is part of revision 991 of the Stellaris Driver Library.\r
25 //\r
26 //*****************************************************************************\r
27 \r
28 #ifndef __HW_ADC_H__\r
29 #define __HW_ADC_H__\r
30 \r
31 //*****************************************************************************\r
32 //\r
33 // The following define the offsets of the ADC registers.\r
34 //\r
35 //*****************************************************************************\r
36 #define ADC_O_ACTSS             0x00000000  // Active sample register\r
37 #define ADC_O_RIS               0x00000004  // Raw interrupt status register\r
38 #define ADC_O_IM                0x00000008  // Interrupt mask register\r
39 #define ADC_O_ISC               0x0000000C  // Interrupt status/clear register\r
40 #define ADC_O_OSTAT             0x00000010  // Overflow status register\r
41 #define ADC_O_EMUX              0x00000014  // Event multiplexer select reg.\r
42 #define ADC_O_USTAT             0x00000018  // Underflow status register\r
43 #define ADC_O_SSPRI             0x00000020  // Channel priority register\r
44 #define ADC_O_PSSI              0x00000028  // Processor sample initiate reg.\r
45 #define ADC_O_SAC               0x00000030  // Sample Averaging Control reg.\r
46 #define ADC_O_SSMUX0            0x00000040  // Multiplexer select 0 register\r
47 #define ADC_O_SSCTL0            0x00000044  // Sample sequence control 0 reg.\r
48 #define ADC_O_SSFIFO0           0x00000048  // Result FIFO 0 register\r
49 #define ADC_O_SSFSTAT0          0x0000004C  // FIFO 0 status register\r
50 #define ADC_O_SSMUX1            0x00000060  // Multiplexer select 1 register\r
51 #define ADC_O_SSCTL1            0x00000064  // Sample sequence control 1 reg.\r
52 #define ADC_O_SSFIFO1           0x00000068  // Result FIFO 1 register\r
53 #define ADC_O_SSFSTAT1          0x0000006C  // FIFO 1 status register\r
54 #define ADC_O_SSMUX2            0x00000080  // Multiplexer select 2 register\r
55 #define ADC_O_SSCTL2            0x00000084  // Sample sequence control 2 reg.\r
56 #define ADC_O_SSFIFO2           0x00000088  // Result FIFO 2 register\r
57 #define ADC_O_SSFSTAT2          0x0000008C  // FIFO 2 status register\r
58 #define ADC_O_SSMUX3            0x000000A0  // Multiplexer select 3 register\r
59 #define ADC_O_SSCTL3            0x000000A4  // Sample sequence control 3 reg.\r
60 #define ADC_O_SSFIFO3           0x000000A8  // Result FIFO 3 register\r
61 #define ADC_O_SSFSTAT3          0x000000AC  // FIFO 3 status register\r
62 #define ADC_O_TMLB              0x00000100  // Test mode loopback register\r
63 \r
64 //*****************************************************************************\r
65 //\r
66 // The following define the offsets of the ADC sequence registers.\r
67 //\r
68 //*****************************************************************************\r
69 #define ADC_O_SEQ               0x00000040  // Offset to the first sequence\r
70 #define ADC_O_SEQ_STEP          0x00000020  // Increment to the next sequence\r
71 #define ADC_O_X_SSMUX           0x00000000  // Multiplexer select register\r
72 #define ADC_O_X_SSCTL           0x00000004  // Sample sequence control register\r
73 #define ADC_O_X_SSFIFO          0x00000008  // Result FIFO register\r
74 #define ADC_O_X_SSFSTAT         0x0000000C  // FIFO status register\r
75 \r
76 //*****************************************************************************\r
77 //\r
78 // The following define the bit fields in the ADC_ACTSS register.\r
79 //\r
80 //*****************************************************************************\r
81 #define ADC_ACTSS_ASEN3         0x00000008  // Sample sequence 3 enable\r
82 #define ADC_ACTSS_ASEN2         0x00000004  // Sample sequence 2 enable\r
83 #define ADC_ACTSS_ASEN1         0x00000002  // Sample sequence 1 enable\r
84 #define ADC_ACTSS_ASEN0         0x00000001  // Sample sequence 0 enable\r
85 \r
86 //*****************************************************************************\r
87 //\r
88 // The following define the bit fields in the ADC_RIS register.\r
89 //\r
90 //*****************************************************************************\r
91 #define ADC_RIS_INR3            0x00000008  // Sample sequence 3 interrupt\r
92 #define ADC_RIS_INR2            0x00000004  // Sample sequence 2 interrupt\r
93 #define ADC_RIS_INR1            0x00000002  // Sample sequence 1 interrupt\r
94 #define ADC_RIS_INR0            0x00000001  // Sample sequence 0 interrupt\r
95 \r
96 //*****************************************************************************\r
97 //\r
98 // The following define the bit fields in the ADC_IM register.\r
99 //\r
100 //*****************************************************************************\r
101 #define ADC_IM_MASK3            0x00000008  // Sample sequence 3 mask\r
102 #define ADC_IM_MASK2            0x00000004  // Sample sequence 2 mask\r
103 #define ADC_IM_MASK1            0x00000002  // Sample sequence 1 mask\r
104 #define ADC_IM_MASK0            0x00000001  // Sample sequence 0 mask\r
105 \r
106 //*****************************************************************************\r
107 //\r
108 // The following define the bit fields in the ADC_ISC register.\r
109 //\r
110 //*****************************************************************************\r
111 #define ADC_ISC_IN3             0x00000008 // Sample sequence 3 interrupt\r
112 #define ADC_ISC_IN2             0x00000004 // Sample sequence 2 interrupt\r
113 #define ADC_ISC_IN1             0x00000002 // Sample sequence 1 interrupt\r
114 #define ADC_ISC_IN0             0x00000001 // Sample sequence 0 interrupt\r
115 \r
116 //*****************************************************************************\r
117 //\r
118 // The following define the bit fields in the ADC_OSTAT register.\r
119 //\r
120 //*****************************************************************************\r
121 #define ADC_OSTAT_OV3           0x00000008  // Sample sequence 3 overflow\r
122 #define ADC_OSTAT_OV2           0x00000004  // Sample sequence 2 overflow\r
123 #define ADC_OSTAT_OV1           0x00000002  // Sample sequence 1 overflow\r
124 #define ADC_OSTAT_OV0           0x00000001  // Sample sequence 0 overflow\r
125 \r
126 //*****************************************************************************\r
127 //\r
128 // The following define the bit fields in the ADC_EMUX register.\r
129 //\r
130 //*****************************************************************************\r
131 #define ADC_EMUX_EM3_MASK       0x0000F000  // Event mux 3 mask\r
132 #define ADC_EMUX_EM3_PROCESSOR  0x00000000  // Processor event\r
133 #define ADC_EMUX_EM3_COMP0      0x00001000  // Analog comparator 0 event\r
134 #define ADC_EMUX_EM3_COMP1      0x00002000  // Analog comparator 1 event\r
135 #define ADC_EMUX_EM3_COMP2      0x00003000  // Analog comparator 2 event\r
136 #define ADC_EMUX_EM3_EXTERNAL   0x00004000  // External event\r
137 #define ADC_EMUX_EM3_TIMER      0x00005000  // Timer event\r
138 #define ADC_EMUX_EM3_PWM0       0x00006000  // PWM0 event\r
139 #define ADC_EMUX_EM3_PWM1       0x00007000  // PWM1 event\r
140 #define ADC_EMUX_EM3_PWM2       0x00008000  // PWM2 event\r
141 #define ADC_EMUX_EM3_ALWAYS     0x0000F000  // Always event\r
142 #define ADC_EMUX_EM2_MASK       0x00000F00  // Event mux 2 mask\r
143 #define ADC_EMUX_EM2_PROCESSOR  0x00000000  // Processor event\r
144 #define ADC_EMUX_EM2_COMP0      0x00000100  // Analog comparator 0 event\r
145 #define ADC_EMUX_EM2_COMP1      0x00000200  // Analog comparator 1 event\r
146 #define ADC_EMUX_EM2_COMP2      0x00000300  // Analog comparator 2 event\r
147 #define ADC_EMUX_EM2_EXTERNAL   0x00000400  // External event\r
148 #define ADC_EMUX_EM2_TIMER      0x00000500  // Timer event\r
149 #define ADC_EMUX_EM2_PWM0       0x00000600  // PWM0 event\r
150 #define ADC_EMUX_EM2_PWM1       0x00000700  // PWM1 event\r
151 #define ADC_EMUX_EM2_PWM2       0x00000800  // PWM2 event\r
152 #define ADC_EMUX_EM2_ALWAYS     0x00000F00  // Always event\r
153 #define ADC_EMUX_EM1_MASK       0x000000F0  // Event mux 1 mask\r
154 #define ADC_EMUX_EM1_PROCESSOR  0x00000000  // Processor event\r
155 #define ADC_EMUX_EM1_COMP0      0x00000010  // Analog comparator 0 event\r
156 #define ADC_EMUX_EM1_COMP1      0x00000020  // Analog comparator 1 event\r
157 #define ADC_EMUX_EM1_COMP2      0x00000030  // Analog comparator 2 event\r
158 #define ADC_EMUX_EM1_EXTERNAL   0x00000040  // External event\r
159 #define ADC_EMUX_EM1_TIMER      0x00000050  // Timer event\r
160 #define ADC_EMUX_EM1_PWM0       0x00000060  // PWM0 event\r
161 #define ADC_EMUX_EM1_PWM1       0x00000070  // PWM1 event\r
162 #define ADC_EMUX_EM1_PWM2       0x00000080  // PWM2 event\r
163 #define ADC_EMUX_EM1_ALWAYS     0x000000F0  // Always event\r
164 #define ADC_EMUX_EM0_MASK       0x0000000F  // Event mux 0 mask\r
165 #define ADC_EMUX_EM0_PROCESSOR  0x00000000  // Processor event\r
166 #define ADC_EMUX_EM0_COMP0      0x00000001  // Analog comparator 0 event\r
167 #define ADC_EMUX_EM0_COMP1      0x00000002  // Analog comparator 1 event\r
168 #define ADC_EMUX_EM0_COMP2      0x00000003  // Analog comparator 2 event\r
169 #define ADC_EMUX_EM0_EXTERNAL   0x00000004  // External event\r
170 #define ADC_EMUX_EM0_TIMER      0x00000005  // Timer event\r
171 #define ADC_EMUX_EM0_PWM0       0x00000006  // PWM0 event\r
172 #define ADC_EMUX_EM0_PWM1       0x00000007  // PWM1 event\r
173 #define ADC_EMUX_EM0_PWM2       0x00000008  // PWM2 event\r
174 #define ADC_EMUX_EM0_ALWAYS     0x0000000F  // Always event\r
175 #define ADC_EMUX_EM0_SHIFT               0  // The shift for the first event\r
176 #define ADC_EMUX_EM1_SHIFT               4  // The shift for the second event\r
177 #define ADC_EMUX_EM2_SHIFT               8  // The shift for the third event\r
178 #define ADC_EMUX_EM3_SHIFT              12  // The shift for the fourth event\r
179 \r
180 //*****************************************************************************\r
181 //\r
182 // The following define the bit fields in the ADC_USTAT register.\r
183 //\r
184 //*****************************************************************************\r
185 #define ADC_USTAT_UV3           0x00000008  // Sample sequence 3 underflow\r
186 #define ADC_USTAT_UV2           0x00000004  // Sample sequence 2 underflow\r
187 #define ADC_USTAT_UV1           0x00000002  // Sample sequence 1 underflow\r
188 #define ADC_USTAT_UV0           0x00000001  // Sample sequence 0 underflow\r
189 \r
190 //*****************************************************************************\r
191 //\r
192 // The following define the bit fields in the ADC_SSPRI register.\r
193 //\r
194 //*****************************************************************************\r
195 #define ADC_SSPRI_SS3_MASK      0x00003000  // Sequencer 3 priority mask\r
196 #define ADC_SSPRI_SS3_1ST       0x00000000  // First priority\r
197 #define ADC_SSPRI_SS3_2ND       0x00001000  // Second priority\r
198 #define ADC_SSPRI_SS3_3RD       0x00002000  // Third priority\r
199 #define ADC_SSPRI_SS3_4TH       0x00003000  // Fourth priority\r
200 #define ADC_SSPRI_SS2_MASK      0x00000300  // Sequencer 2 priority mask\r
201 #define ADC_SSPRI_SS2_1ST       0x00000000  // First priority\r
202 #define ADC_SSPRI_SS2_2ND       0x00000100  // Second priority\r
203 #define ADC_SSPRI_SS2_3RD       0x00000200  // Third priority\r
204 #define ADC_SSPRI_SS2_4TH       0x00000300  // Fourth priority\r
205 #define ADC_SSPRI_SS1_MASK      0x00000030  // Sequencer 1 priority mask\r
206 #define ADC_SSPRI_SS1_1ST       0x00000000  // First priority\r
207 #define ADC_SSPRI_SS1_2ND       0x00000010  // Second priority\r
208 #define ADC_SSPRI_SS1_3RD       0x00000020  // Third priority\r
209 #define ADC_SSPRI_SS1_4TH       0x00000030  // Fourth priority\r
210 #define ADC_SSPRI_SS0_MASK      0x00000003  // Sequencer 0 priority mask\r
211 #define ADC_SSPRI_SS0_1ST       0x00000000  // First priority\r
212 #define ADC_SSPRI_SS0_2ND       0x00000001  // Second priority\r
213 #define ADC_SSPRI_SS0_3RD       0x00000002  // Third priority\r
214 #define ADC_SSPRI_SS0_4TH       0x00000003  // Fourth priority\r
215 \r
216 //*****************************************************************************\r
217 //\r
218 // The following define the bit fields in the ADC_PSSI register.\r
219 //\r
220 //*****************************************************************************\r
221 #define ADC_PSSI_SS3            0x00000008  // Trigger sample sequencer 3\r
222 #define ADC_PSSI_SS2            0x00000004  // Trigger sample sequencer 2\r
223 #define ADC_PSSI_SS1            0x00000002  // Trigger sample sequencer 1\r
224 #define ADC_PSSI_SS0            0x00000001  // Trigger sample sequencer 0\r
225 \r
226 //*****************************************************************************\r
227 //\r
228 // The following define the bit fields in the ADC_SAC register.\r
229 //\r
230 //*****************************************************************************\r
231 #define ADC_SAC_AVG_OFF         0x00000000  // No hardware oversampling\r
232 #define ADC_SAC_AVG_2X          0x00000001  // 2x hardware oversampling\r
233 #define ADC_SAC_AVG_4X          0x00000002  // 4x hardware oversampling\r
234 #define ADC_SAC_AVG_8X          0x00000003  // 8x hardware oversampling\r
235 #define ADC_SAC_AVG_16X         0x00000004  // 16x hardware oversampling\r
236 #define ADC_SAC_AVG_32X         0x00000005  // 32x hardware oversampling\r
237 #define ADC_SAC_AVG_64X         0x00000006  // 64x hardware oversampling\r
238 \r
239 //*****************************************************************************\r
240 //\r
241 // The following define the bit fields in the ADC_SSMUX0, ADC_SSMUX1,\r
242 // ADC_SSMUX2, and ADC_SSMUX3 registers.  Not all fields are present in all\r
243 // registers.\r
244 //\r
245 //*****************************************************************************\r
246 #define ADC_SSMUX_MUX7_MASK     0x70000000  // 8th mux select mask\r
247 #define ADC_SSMUX_MUX6_MASK     0x07000000  // 7th mux select mask\r
248 #define ADC_SSMUX_MUX5_MASK     0x00700000  // 6th mux select mask\r
249 #define ADC_SSMUX_MUX4_MASK     0x00070000  // 5th mux select mask\r
250 #define ADC_SSMUX_MUX3_MASK     0x00007000  // 4th mux select mask\r
251 #define ADC_SSMUX_MUX2_MASK     0x00000700  // 3rd mux select mask\r
252 #define ADC_SSMUX_MUX1_MASK     0x00000070  // 2nd mux select mask\r
253 #define ADC_SSMUX_MUX0_MASK     0x00000007  // 1st mux select mask\r
254 #define ADC_SSMUX_MUX7_SHIFT    28\r
255 #define ADC_SSMUX_MUX6_SHIFT    24\r
256 #define ADC_SSMUX_MUX5_SHIFT    20\r
257 #define ADC_SSMUX_MUX4_SHIFT    16\r
258 #define ADC_SSMUX_MUX3_SHIFT    12\r
259 #define ADC_SSMUX_MUX2_SHIFT    8\r
260 #define ADC_SSMUX_MUX1_SHIFT    4\r
261 #define ADC_SSMUX_MUX0_SHIFT    0\r
262 \r
263 //*****************************************************************************\r
264 //\r
265 // The following define the bit fields in the ADC_SSCTL0, ADC_SSCTL1,\r
266 // ADC_SSCTL2, and ADC_SSCTL3 registers.  Not all fields are present in all\r
267 // registers.\r
268 //\r
269 //*****************************************************************************\r
270 #define ADC_SSCTL_TS7           0x80000000  // 8th temperature sensor select\r
271 #define ADC_SSCTL_IE7           0x40000000  // 8th interrupt enable\r
272 #define ADC_SSCTL_END7          0x20000000  // 8th sequence end select\r
273 #define ADC_SSCTL_D7            0x10000000  // 8th differential select\r
274 #define ADC_SSCTL_TS6           0x08000000  // 7th temperature sensor select\r
275 #define ADC_SSCTL_IE6           0x04000000  // 7th interrupt enable\r
276 #define ADC_SSCTL_END6          0x02000000  // 7th sequence end select\r
277 #define ADC_SSCTL_D6            0x01000000  // 7th differential select\r
278 #define ADC_SSCTL_TS5           0x00800000  // 6th temperature sensor select\r
279 #define ADC_SSCTL_IE5           0x00400000  // 6th interrupt enable\r
280 #define ADC_SSCTL_END5          0x00200000  // 6th sequence end select\r
281 #define ADC_SSCTL_D5            0x00100000  // 6th differential select\r
282 #define ADC_SSCTL_TS4           0x00080000  // 5th temperature sensor select\r
283 #define ADC_SSCTL_IE4           0x00040000  // 5th interrupt enable\r
284 #define ADC_SSCTL_END4          0x00020000  // 5th sequence end select\r
285 #define ADC_SSCTL_D4            0x00010000  // 5th differential select\r
286 #define ADC_SSCTL_TS3           0x00008000  // 4th temperature sensor select\r
287 #define ADC_SSCTL_IE3           0x00004000  // 4th interrupt enable\r
288 #define ADC_SSCTL_END3          0x00002000  // 4th sequence end select\r
289 #define ADC_SSCTL_D3            0x00001000  // 4th differential select\r
290 #define ADC_SSCTL_TS2           0x00000800  // 3rd temperature sensor select\r
291 #define ADC_SSCTL_IE2           0x00000400  // 3rd interrupt enable\r
292 #define ADC_SSCTL_END2          0x00000200  // 3rd sequence end select\r
293 #define ADC_SSCTL_D2            0x00000100  // 3rd differential select\r
294 #define ADC_SSCTL_TS1           0x00000080  // 2nd temperature sensor select\r
295 #define ADC_SSCTL_IE1           0x00000040  // 2nd interrupt enable\r
296 #define ADC_SSCTL_END1          0x00000020  // 2nd sequence end select\r
297 #define ADC_SSCTL_D1            0x00000010  // 2nd differential select\r
298 #define ADC_SSCTL_TS0           0x00000008  // 1st temperature sensor select\r
299 #define ADC_SSCTL_IE0           0x00000004  // 1st interrupt enable\r
300 #define ADC_SSCTL_END0          0x00000002  // 1st sequence end select\r
301 #define ADC_SSCTL_D0            0x00000001  // 1st differential select\r
302 \r
303 //*****************************************************************************\r
304 //\r
305 // The following define the bit fields in the ADC_SSFIFO0, ADC_SSFIFO1,\r
306 // ADC_SSFIFO2, and ADC_SSFIFO3 registers.\r
307 //\r
308 //*****************************************************************************\r
309 #define ADC_SSFIFO_DATA_MASK    0x000003FF  // Sample data\r
310 #define ADC_SSFIFO_DATA_SHIFT   0\r
311 \r
312 //*****************************************************************************\r
313 //\r
314 // The following define the bit fields in the ADC_SSFSTAT0, ADC_SSFSTAT1,\r
315 // ADC_SSFSTAT2, and ADC_SSFSTAT3 registers.\r
316 //\r
317 //*****************************************************************************\r
318 #define ADC_SSFSTAT_FULL        0x00001000  // FIFO is full\r
319 #define ADC_SSFSTAT_EMPTY       0x00000100  // FIFO is empty\r
320 #define ADC_SSFSTAT_HPTR        0x000000F0  // FIFO head pointer\r
321 #define ADC_SSFSTAT_TPTR        0x0000000F  // FIFO tail pointer\r
322 \r
323 //*****************************************************************************\r
324 //\r
325 // The following define the bit fields in the ADC_TMLB register.\r
326 //\r
327 //*****************************************************************************\r
328 #define ADC_TMLB_LB             0x00000001  // Loopback control signals\r
329 \r
330 //*****************************************************************************\r
331 //\r
332 // The following define the bit fields in the loopback ADC data.\r
333 //\r
334 //*****************************************************************************\r
335 #define ADC_LB_CNT_MASK         0x000003C0  // Sample counter mask\r
336 #define ADC_LB_CONT             0x00000020  // Continuation sample\r
337 #define ADC_LB_DIFF             0x00000010  // Differential sample\r
338 #define ADC_LB_TS               0x00000008  // Temperature sensor sample\r
339 #define ADC_LB_MUX_MASK         0x00000007  // Input channel number mask\r
340 #define ADC_LB_CNT_SHIFT        6           // Sample counter shift\r
341 #define ADC_LB_MUX_SHIFT        0           // Input channel number shift\r
342 \r
343 #endif // __HW_ADC_H__\r