Tiva Driver Lib
adc.h
1 //*****************************************************************************
2 //
3 // adc.h - ADC headers for using the ADC driver functions.
4 //
5 // Copyright (c) 2005-2013 Texas Instruments Incorporated. All rights reserved.
6 // Software License Agreement
7 //
8 // Redistribution and use in source and binary forms, with or without
9 // modification, are permitted provided that the following conditions
10 // are met:
11 //
12 // Redistributions of source code must retain the above copyright
13 // notice, this list of conditions and the following disclaimer.
14 //
15 // Redistributions in binary form must reproduce the above copyright
16 // notice, this list of conditions and the following disclaimer in the
17 // documentation and/or other materials provided with the
18 // distribution.
19 //
20 // Neither the name of Texas Instruments Incorporated nor the names of
21 // its contributors may be used to endorse or promote products derived
22 // from this software without specific prior written permission.
23 //
24 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
27 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
28 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
29 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
30 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
31 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
32 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
33 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 //
36 // This is part of revision 1.1 of the Tiva Peripheral Driver Library.
37 //
38 //*****************************************************************************
39 
40 #ifndef __DRIVERLIB_ADC_H__
41 #define __DRIVERLIB_ADC_H__
42 
43 //*****************************************************************************
44 //
45 // If building with a C++ compiler, make all of the definitions in this header
46 // have a C binding.
47 //
48 //*****************************************************************************
49 #ifdef __cplusplus
50 extern "C"
51 {
52 #endif
53 
54 //*****************************************************************************
55 //
56 // Values that can be passed to ADCSequenceConfigure as the ui32Trigger
57 // parameter.
58 //
59 //*****************************************************************************
60 #define ADC_TRIGGER_PROCESSOR 0x00000000 // Processor event
61 #define ADC_TRIGGER_COMP0 0x00000001 // Analog comparator 0 event
62 #define ADC_TRIGGER_COMP1 0x00000002 // Analog comparator 1 event
63 #define ADC_TRIGGER_COMP2 0x00000003 // Analog comparator 2 event
64 #define ADC_TRIGGER_EXTERNAL 0x00000004 // External event
65 #define ADC_TRIGGER_TIMER 0x00000005 // Timer event
66 #define ADC_TRIGGER_PWM0 0x00000006 // PWM0 event
67 #define ADC_TRIGGER_PWM1 0x00000007 // PWM1 event
68 #define ADC_TRIGGER_PWM2 0x00000008 // PWM2 event
69 #define ADC_TRIGGER_PWM3 0x00000009 // PWM3 event
70 #define ADC_TRIGGER_ALWAYS 0x0000000F // Always event
71 
72 //*****************************************************************************
73 //
74 // Values that can be passed to ADCSequenceStepConfigure as the ui32Config
75 // parameter.
76 //
77 //*****************************************************************************
78 #define ADC_CTL_TS 0x00000080 // Temperature sensor select
79 #define ADC_CTL_IE 0x00000040 // Interrupt enable
80 #define ADC_CTL_END 0x00000020 // Sequence end select
81 #define ADC_CTL_D 0x00000010 // Differential select
82 #define ADC_CTL_CH0 0x00000000 // Input channel 0
83 #define ADC_CTL_CH1 0x00000001 // Input channel 1
84 #define ADC_CTL_CH2 0x00000002 // Input channel 2
85 #define ADC_CTL_CH3 0x00000003 // Input channel 3
86 #define ADC_CTL_CH4 0x00000004 // Input channel 4
87 #define ADC_CTL_CH5 0x00000005 // Input channel 5
88 #define ADC_CTL_CH6 0x00000006 // Input channel 6
89 #define ADC_CTL_CH7 0x00000007 // Input channel 7
90 #define ADC_CTL_CH8 0x00000008 // Input channel 8
91 #define ADC_CTL_CH9 0x00000009 // Input channel 9
92 #define ADC_CTL_CH10 0x0000000A // Input channel 10
93 #define ADC_CTL_CH11 0x0000000B // Input channel 11
94 #define ADC_CTL_CH12 0x0000000C // Input channel 12
95 #define ADC_CTL_CH13 0x0000000D // Input channel 13
96 #define ADC_CTL_CH14 0x0000000E // Input channel 14
97 #define ADC_CTL_CH15 0x0000000F // Input channel 15
98 #define ADC_CTL_CH16 0x00000100 // Input channel 16
99 #define ADC_CTL_CH17 0x00000101 // Input channel 17
100 #define ADC_CTL_CH18 0x00000102 // Input channel 18
101 #define ADC_CTL_CH19 0x00000103 // Input channel 19
102 #define ADC_CTL_CH20 0x00000104 // Input channel 20
103 #define ADC_CTL_CH21 0x00000105 // Input channel 21
104 #define ADC_CTL_CH22 0x00000106 // Input channel 22
105 #define ADC_CTL_CH23 0x00000107 // Input channel 23
106 #define ADC_CTL_CMP0 0x00080000 // Select Comparator 0
107 #define ADC_CTL_CMP1 0x00090000 // Select Comparator 1
108 #define ADC_CTL_CMP2 0x000A0000 // Select Comparator 2
109 #define ADC_CTL_CMP3 0x000B0000 // Select Comparator 3
110 #define ADC_CTL_CMP4 0x000C0000 // Select Comparator 4
111 #define ADC_CTL_CMP5 0x000D0000 // Select Comparator 5
112 #define ADC_CTL_CMP6 0x000E0000 // Select Comparator 6
113 #define ADC_CTL_CMP7 0x000F0000 // Select Comparator 7
114 
115 //*****************************************************************************
116 //
117 // Values that can be passed to ADCComparatorConfigure as part of the
118 // ui32Config parameter.
119 //
120 //*****************************************************************************
121 #define ADC_COMP_TRIG_NONE 0x00000000 // Trigger Disabled
122 #define ADC_COMP_TRIG_LOW_ALWAYS \
123  0x00001000 // Trigger Low Always
124 #define ADC_COMP_TRIG_LOW_ONCE 0x00001100 // Trigger Low Once
125 #define ADC_COMP_TRIG_LOW_HALWAYS \
126  0x00001200 // Trigger Low Always (Hysteresis)
127 #define ADC_COMP_TRIG_LOW_HONCE 0x00001300 // Trigger Low Once (Hysteresis)
128 #define ADC_COMP_TRIG_MID_ALWAYS \
129  0x00001400 // Trigger Mid Always
130 #define ADC_COMP_TRIG_MID_ONCE 0x00001500 // Trigger Mid Once
131 #define ADC_COMP_TRIG_HIGH_ALWAYS \
132  0x00001C00 // Trigger High Always
133 #define ADC_COMP_TRIG_HIGH_ONCE 0x00001D00 // Trigger High Once
134 #define ADC_COMP_TRIG_HIGH_HALWAYS \
135  0x00001E00 // Trigger High Always (Hysteresis)
136 #define ADC_COMP_TRIG_HIGH_HONCE \
137  0x00001F00 // Trigger High Once (Hysteresis)
138 
139 #define ADC_COMP_INT_NONE 0x00000000 // Interrupt Disabled
140 #define ADC_COMP_INT_LOW_ALWAYS \
141  0x00000010 // Interrupt Low Always
142 #define ADC_COMP_INT_LOW_ONCE 0x00000011 // Interrupt Low Once
143 #define ADC_COMP_INT_LOW_HALWAYS \
144  0x00000012 // Interrupt Low Always
145  // (Hysteresis)
146 #define ADC_COMP_INT_LOW_HONCE 0x00000013 // Interrupt Low Once (Hysteresis)
147 #define ADC_COMP_INT_MID_ALWAYS \
148  0x00000014 // Interrupt Mid Always
149 #define ADC_COMP_INT_MID_ONCE 0x00000015 // Interrupt Mid Once
150 #define ADC_COMP_INT_HIGH_ALWAYS \
151  0x0000001C // Interrupt High Always
152 #define ADC_COMP_INT_HIGH_ONCE 0x0000001D // Interrupt High Once
153 #define ADC_COMP_INT_HIGH_HALWAYS \
154  0x0000001E // Interrupt High Always
155  // (Hysteresis)
156 #define ADC_COMP_INT_HIGH_HONCE \
157  0x0000001F // Interrupt High Once (Hysteresis)
158 
159 //*****************************************************************************
160 //
161 // Values that can be used to modify the sequence number passed to
162 // ADCProcessorTrigger in order to get cross-module synchronous processor
163 // triggers.
164 //
165 //*****************************************************************************
166 #define ADC_TRIGGER_WAIT 0x08000000 // Wait for the synchronous trigger
167 #define ADC_TRIGGER_SIGNAL 0x80000000 // Signal the synchronous trigger
168 
169 //*****************************************************************************
170 //
171 // Values that can be passed to ADCPhaseDelaySet as the ui32Phase parameter and
172 // returned from ADCPhaseDelayGet.
173 //
174 //*****************************************************************************
175 #define ADC_PHASE_0 0x00000000 // 0 degrees
176 #define ADC_PHASE_22_5 0x00000001 // 22.5 degrees
177 #define ADC_PHASE_45 0x00000002 // 45 degrees
178 #define ADC_PHASE_67_5 0x00000003 // 67.5 degrees
179 #define ADC_PHASE_90 0x00000004 // 90 degrees
180 #define ADC_PHASE_112_5 0x00000005 // 112.5 degrees
181 #define ADC_PHASE_135 0x00000006 // 135 degrees
182 #define ADC_PHASE_157_5 0x00000007 // 157.5 degrees
183 #define ADC_PHASE_180 0x00000008 // 180 degrees
184 #define ADC_PHASE_202_5 0x00000009 // 202.5 degrees
185 #define ADC_PHASE_225 0x0000000A // 225 degrees
186 #define ADC_PHASE_247_5 0x0000000B // 247.5 degrees
187 #define ADC_PHASE_270 0x0000000C // 270 degrees
188 #define ADC_PHASE_292_5 0x0000000D // 292.5 degrees
189 #define ADC_PHASE_315 0x0000000E // 315 degrees
190 #define ADC_PHASE_337_5 0x0000000F // 337.5 degrees
191 
192 //*****************************************************************************
193 //
194 // Values that can be passed to ADCReferenceSet as the ui32Ref parameter.
195 //
196 //*****************************************************************************
197 #define ADC_REF_INT 0x00000000 // Internal reference
198 #define ADC_REF_EXT_3V 0x00000001 // External 3V reference
199 #define ADC_REF_EXT_1V 0x00000003 // External 1V reference
200 
201 //*****************************************************************************
202 //
203 // Values that can be passed to ADCIntDisableEx(), ADCIntEnableEx(),
204 // ADCIntClearEx() and ADCIntStatusEx().
205 //
206 //*****************************************************************************
207 #define ADC_INT_SS0 0x00000001
208 #define ADC_INT_SS1 0x00000002
209 #define ADC_INT_SS2 0x00000004
210 #define ADC_INT_SS3 0x00000008
211 #define ADC_INT_DMA_SS0 0x00000100
212 #define ADC_INT_DMA_SS1 0x00000200
213 #define ADC_INT_DMA_SS2 0x00000400
214 #define ADC_INT_DMA_SS3 0x00000800
215 #define ADC_INT_DCON_SS0 0x00010000
216 #define ADC_INT_DCON_SS1 0x00020000
217 #define ADC_INT_DCON_SS2 0x00040000
218 #define ADC_INT_DCON_SS3 0x00080000
219 
220 //*****************************************************************************
221 //
222 // Prototypes for the APIs.
223 //
224 //*****************************************************************************
225 extern void ADCIntRegister(uint32_t ui32Base, uint32_t ui32SequenceNum,
226  void (*pfnHandler)(void));
227 extern void ADCIntUnregister(uint32_t ui32Base, uint32_t ui32SequenceNum);
228 extern void ADCIntDisable(uint32_t ui32Base, uint32_t ui32SequenceNum);
229 extern void ADCIntEnable(uint32_t ui32Base, uint32_t ui32SequenceNum);
230 extern uint32_t ADCIntStatus(uint32_t ui32Base, uint32_t ui32SequenceNum,
231  bool bMasked);
232 extern void ADCIntClear(uint32_t ui32Base, uint32_t ui32SequenceNum);
233 extern void ADCSequenceEnable(uint32_t ui32Base, uint32_t ui32SequenceNum);
234 extern void ADCSequenceDisable(uint32_t ui32Base, uint32_t ui32SequenceNum);
235 extern void ADCSequenceConfigure(uint32_t ui32Base, uint32_t ui32SequenceNum,
236  uint32_t ui32Trigger, uint32_t ui32Priority);
237 extern void ADCSequenceStepConfigure(uint32_t ui32Base,
238  uint32_t ui32SequenceNum,
239  uint32_t ui32Step, uint32_t ui32Config);
240 extern int32_t ADCSequenceOverflow(uint32_t ui32Base,
241  uint32_t ui32SequenceNum);
242 extern void ADCSequenceOverflowClear(uint32_t ui32Base,
243  uint32_t ui32SequenceNum);
244 extern int32_t ADCSequenceUnderflow(uint32_t ui32Base,
245  uint32_t ui32SequenceNum);
246 extern void ADCSequenceUnderflowClear(uint32_t ui32Base,
247  uint32_t ui32SequenceNum);
248 extern int32_t ADCSequenceDataGet(uint32_t ui32Base, uint32_t ui32SequenceNum,
249  uint32_t *pui32Buffer);
250 extern void ADCProcessorTrigger(uint32_t ui32Base, uint32_t ui32SequenceNum);
251 extern void ADCSoftwareOversampleConfigure(uint32_t ui32Base,
252  uint32_t ui32SequenceNum,
253  uint32_t ui32Factor);
254 extern void ADCSoftwareOversampleStepConfigure(uint32_t ui32Base,
255  uint32_t ui32SequenceNum,
256  uint32_t ui32Step,
257  uint32_t ui32Config);
258 extern void ADCSoftwareOversampleDataGet(uint32_t ui32Base,
259  uint32_t ui32SequenceNum,
260  uint32_t *pui32Buffer,
261  uint32_t ui32Count);
262 extern void ADCHardwareOversampleConfigure(uint32_t ui32Base,
263  uint32_t ui32Factor);
264 extern void ADCComparatorConfigure(uint32_t ui32Base, uint32_t ui32Comp,
265  uint32_t ui32Config);
266 extern void ADCComparatorRegionSet(uint32_t ui32Base, uint32_t ui32Comp,
267  uint32_t ui32LowRef, uint32_t ui32HighRef);
268 extern void ADCComparatorReset(uint32_t ui32Base, uint32_t ui32Comp,
269  bool bTrigger, bool bInterrupt);
270 extern void ADCComparatorIntDisable(uint32_t ui32Base,
271  uint32_t ui32SequenceNum);
272 extern void ADCComparatorIntEnable(uint32_t ui32Base,
273  uint32_t ui32SequenceNum);
274 extern uint32_t ADCComparatorIntStatus(uint32_t ui32Base);
275 extern void ADCComparatorIntClear(uint32_t ui32Base, uint32_t ui32Status);
276 extern void ADCReferenceSet(uint32_t ui32Base, uint32_t ui32Ref);
277 extern uint32_t ADCReferenceGet(uint32_t ui32Base);
278 extern void ADCPhaseDelaySet(uint32_t ui32Base, uint32_t ui32Phase);
279 extern uint32_t ADCPhaseDelayGet(uint32_t ui32Base);
280 
281 //*****************************************************************************
282 //
283 // Mark the end of the C bindings section for C++ compilers.
284 //
285 //*****************************************************************************
286 #ifdef __cplusplus
287 }
288 #endif
289 
290 #endif // __DRIVERLIB_ADC_H__
void ADCReferenceSet(uint32_t ui32Base, uint32_t ui32Ref)
Definition: adc.c:1414
void ADCSequenceUnderflowClear(uint32_t ui32Base, uint32_t ui32SequenceNum)
Definition: adc.c:755
void ADCComparatorIntDisable(uint32_t ui32Base, uint32_t ui32SequenceNum)
Definition: adc.c:1298
void ADCIntRegister(uint32_t ui32Base, uint32_t ui32SequenceNum, void(*pfnHandler)(void))
Definition: adc.c:141
uint32_t ADCReferenceGet(uint32_t ui32Base)
Definition: adc.c:1447
void ADCComparatorConfigure(uint32_t ui32Base, uint32_t ui32Comp, uint32_t ui32Config)
Definition: adc.c:1186
int32_t ADCSequenceUnderflow(uint32_t ui32Base, uint32_t ui32SequenceNum)
Definition: adc.c:726
uint32_t ADCIntStatus(uint32_t ui32Base, uint32_t ui32SequenceNum, bool bMasked)
Definition: adc.c:293
void ADCIntEnable(uint32_t ui32Base, uint32_t ui32SequenceNum)
Definition: adc.c:257
void ADCSequenceOverflowClear(uint32_t ui32Base, uint32_t ui32SequenceNum)
Definition: adc.c:697
void ADCIntDisable(uint32_t ui32Base, uint32_t ui32SequenceNum)
Definition: adc.c:228
void ADCHardwareOversampleConfigure(uint32_t ui32Base, uint32_t ui32Factor)
Definition: adc.c:1088
void ADCSoftwareOversampleDataGet(uint32_t ui32Base, uint32_t ui32SequenceNum, uint32_t *pui32Buffer, uint32_t ui32Count)
Definition: adc.c:1017
void ADCSoftwareOversampleConfigure(uint32_t ui32Base, uint32_t ui32SequenceNum, uint32_t ui32Factor)
Definition: adc.c:887
int32_t ADCSequenceOverflow(uint32_t ui32Base, uint32_t ui32SequenceNum)
Definition: adc.c:668
void ADCComparatorReset(uint32_t ui32Base, uint32_t ui32Comp, bool bTrigger, bool bInterrupt)
Definition: adc.c:1257
int32_t ADCSequenceDataGet(uint32_t ui32Base, uint32_t ui32SequenceNum, uint32_t *pui32Buffer)
Definition: adc.c:788
void ADCComparatorIntClear(uint32_t ui32Base, uint32_t ui32Status)
Definition: adc.c:1378
void ADCSoftwareOversampleStepConfigure(uint32_t ui32Base, uint32_t ui32SequenceNum, uint32_t ui32Step, uint32_t ui32Config)
Definition: adc.c:932
void ADCIntClear(uint32_t ui32Base, uint32_t ui32SequenceNum)
Definition: adc.c:357
void ADCSequenceEnable(uint32_t ui32Base, uint32_t ui32SequenceNum)
Definition: adc.c:385
void ADCSequenceDisable(uint32_t ui32Base, uint32_t ui32SequenceNum)
Definition: adc.c:413
uint32_t ADCComparatorIntStatus(uint32_t ui32Base)
Definition: adc.c:1352
void ADCSequenceConfigure(uint32_t ui32Base, uint32_t ui32SequenceNum, uint32_t ui32Trigger, uint32_t ui32Priority)
Definition: adc.c:486
uint32_t ADCPhaseDelayGet(uint32_t ui32Base)
Definition: adc.c:1525
void ADCSequenceStepConfigure(uint32_t ui32Base, uint32_t ui32SequenceNum, uint32_t ui32Step, uint32_t ui32Config)
Definition: adc.c:578
void ADCPhaseDelaySet(uint32_t ui32Base, uint32_t ui32Phase)
Definition: adc.c:1487
void ADCProcessorTrigger(uint32_t ui32Base, uint32_t ui32SequenceNum)
Definition: adc.c:848
void ADCComparatorIntEnable(uint32_t ui32Base, uint32_t ui32SequenceNum)
Definition: adc.c:1325
void ADCComparatorRegionSet(uint32_t ui32Base, uint32_t ui32Comp, uint32_t ui32LowRef, uint32_t ui32HighRef)
Definition: adc.c:1222
void ADCIntUnregister(uint32_t ui32Base, uint32_t ui32SequenceNum)
Definition: adc.c:188