SimpleLink MCU SDK Driver APIs  tidrivers_cc13xx_cc26xx_3_01_01_03
ADCBufCC26XX.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015-2016, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
228 #ifndef ti_drivers_adc_adcbufcc26xx__include
229 #define ti_drivers_adc_adcbufcc26xx__include
230 
231 #ifdef __cplusplus
232 extern "C" {
233 #endif
234 
235 #include <stdint.h>
236 #include <stdbool.h>
237 
238 #include <ti/drivers/ADCBuf.h>
239 #include <ti/drivers/PIN.h>
243 #include <ti/drivers/Power.h>
245 
246 #ifdef DEVICE_FAMILY
247  #undef DEVICE_FAMILY_PATH
248  #define DEVICE_FAMILY_PATH(x) <ti/devices/DEVICE_FAMILY/x>
249 #else
250  #error "You must define DEVICE_FAMILY at the project level as one of cc26x0, cc26x0r2, cc13x0, etc."
251 #endif
252 
253 #include DEVICE_FAMILY_PATH(driverlib/aux_adc.h)
254 
255 /*
256  * The following allows this header file to be included in an application file
257  * which also includes ti/sysbios/hal/Hwi.h.
258  */
259 #define ti_sysbios_family_arm_m3_Hwi__nolocalnames
260 #include <ti/sysbios/family/arm/m3/Hwi.h>
261 #include <ti/sysbios/knl/Clock.h>
262 #include <ti/sysbios/knl/Semaphore.h>
263 #include <ti/sysbios/knl/Swi.h>
264 
277 /* Add ADCBufCC26XX_CMD_* macros here */
278 
292 #define ADCBufCC26XX_CMD_ACQUIRE_ADC_SEMAPHORE ADCBuf_CMD_RESERVED + 1
293 
307 #define ADCBufCC26XX_CMD_KEEP_ADC_SEMAPHORE ADCBuf_CMD_RESERVED + 2
308 
316 #define ADCBufCC26XX_CMD_KEEP_ADC_SEMAPHORE_DISABLE ADCBuf_CMD_RESERVED + 3
317 
323 #define ADCBufCC26XX_CMD_RELEASE_ADC_SEMAPHORE ADCBuf_CMD_RESERVED + 4
324 
330 #define ADCBufCC26XX_RESOLUTION 12
331 
332 #define ADCBufCC26XX_BYTES_PER_SAMPLE 2
333 
334 /*
335  * =============================================================================
336  * Constants
337  * =============================================================================
338  */
339 
340 /* ADCBuf function table pointer */
342 
343 
344 /*
345  * =============================================================================
346  * Enumerations
347  * =============================================================================
348  */
349 
364 
374  ADCBufCC26XX_SAMPLING_DURATION_2P7_US = AUXADC_SAMPLE_TIME_2P7_US,
375  ADCBufCC26XX_SAMPLING_DURATION_5P3_US = AUXADC_SAMPLE_TIME_5P3_US,
376  ADCBufCC26XX_SAMPLING_DURATION_10P6_US = AUXADC_SAMPLE_TIME_10P6_US,
377  ADCBufCC26XX_SAMPLING_DURATION_21P3_US = AUXADC_SAMPLE_TIME_21P3_US,
378  ADCBufCC26XX_SAMPLING_DURATION_42P6_US = AUXADC_SAMPLE_TIME_42P6_US,
379  ADCBufCC26XX_SAMPLING_DURATION_85P3_US = AUXADC_SAMPLE_TIME_85P3_US,
380  ADCBufCC26XX_SAMPLING_DURATION_170_US = AUXADC_SAMPLE_TIME_170_US,
381  ADCBufCC26XX_SAMPLING_DURATION_341_US = AUXADC_SAMPLE_TIME_341_US,
382  ADCBufCC26XX_SAMPLING_DURATION_682_US = AUXADC_SAMPLE_TIME_682_US,
383  ADCBufCC26XX_SAMPLING_DURATION_1P37_MS = AUXADC_SAMPLE_TIME_1P37_MS,
384  ADCBufCC26XX_SAMPLING_DURATION_2P73_MS = AUXADC_SAMPLE_TIME_2P73_MS,
385  ADCBufCC26XX_SAMPLING_DURATION_5P46_MS = AUXADC_SAMPLE_TIME_5P46_MS,
386  ADCBufCC26XX_SAMPLING_DURATION_10P9_MS = AUXADC_SAMPLE_TIME_10P9_MS
388 
389 
411  ADCBufCC26XX_FIXED_REFERENCE = AUXADC_REF_FIXED,
412  ADCBufCC26XX_VDDS_REFERENCE = AUXADC_REF_VDDS_REL
414 
415 
416 
417 /*
418  * =============================================================================
419  * Structs
420  * =============================================================================
421  */
422 
430  uint8_t dio;
431  uint8_t compBInput;
433 
465 
486 typedef struct ADCBufCC26XX_HWAttrs{
492  uint32_t swiPriority;
508  uint8_t intPriority;
512  uint8_t gpTimerUnit;
514 
515 
516 
522 typedef struct ADCBufCC26XX_Object{
523  /* ADC control variables */
524  bool isOpen;
529  uint8_t currentChannel;
537  /* ADC SYS/BIOS objects */
538  Hwi_Struct hwi;
539  Swi_Struct swi;
540  Semaphore_Struct conversionComplete;
544  /* PIN driver state object and handle */
548  /* UDMA driver handle */
551  /* GPTimer driver handle */
554  uint32_t semaphoreTimeout;
555  uint32_t samplingFrequency;
557 
558 /*
559  * =============================================================================
560  * Functions
561  * =============================================================================
562  */
563 
564 
565 /* Do not interfere with the app if they include the family Hwi module */
566 #undef ti_sysbios_family_arm_m3_Hwi__nolocalnames
567 
568 #ifdef __cplusplus
569 }
570 #endif
571 
572 #endif /* ti_drivers_adc_ADCBufCC26XX__include */
ADCBufCC26XX_Sampling_Mode
Specifies whether the internal reference of the ADC is sourced from the battery voltage or a fixed in...
Definition: ADCBufCC26XX.h:360
Hwi_Struct hwi
Definition: ADCBufCC26XX.h:538
Definition: ADCBufCC26XX.h:361
Definition: ADCBufCC26XX.h:412
Definition: ADCBufCC26XX.h:374
GPTimerCC26XX_Handle timerHandle
Definition: ADCBufCC26XX.h:552
GPTimer driver implementation for CC26XX/CC13XX.
enum ADCBuf_Recurrence_Mode_ ADCBuf_Recurrence_Mode
ADC trigger mode settings.
ADCBufCC26XX_Reference_Source refSource
Definition: ADCBufCC26XX.h:447
struct ADCBufCC26XX_Object * ADCBufCC26XX_Handle
bool inputScalingEnabled
Definition: ADCBufCC26XX.h:463
bool adcSemaphoreInPossession
Definition: ADCBufCC26XX.h:528
Definition: ADCBufCC26XX.h:378
bool isOpen
Definition: ADCBufCC26XX.h:524
ADCBufCC26XX Hardware Attributes.
Definition: ADCBufCC26XX.h:486
uint32_t gptDMAChannelMask
Definition: ADCBufCC26XX.h:494
An ADCBuf_Conversion data structure is used with ADCBuf_convert(). It indicates which channel to perf...
Definition: ADCBuf.h:239
ADCBuf_Return_Mode returnMode
Definition: ADCBufCC26XX.h:535
Semaphore_Struct conversionComplete
Definition: ADCBufCC26XX.h:540
Definition: ADCBufCC26XX.h:385
Power manager interface.
ADCBuf driver interface.
Definition: ADCBufCC26XX.h:382
enum ADCBuf_Return_Mode_ ADCBuf_Return_Mode
ADC return mode settings.
ADCBufCC26XX_Sampling_Mode samplingMode
Definition: ADCBufCC26XX.h:445
uint32_t swiPriority
ADC SWI priority. The higher the number, the higher the priority. The minimum is 0 and the maximum is...
Definition: ADCBufCC26XX.h:492
UDMACC26XX Global configuration.
Definition: UDMACC26XX.h:235
Power manager interface for CC26XX/CC13XX.
uint32_t semaphoreTimeout
Definition: ADCBufCC26XX.h:554
CC26XX specfic extension to ADCBuf_Params.
Definition: ADCBufCC26XX.h:441
PIN_Handle pinHandle
Definition: ADCBufCC26XX.h:546
Definition: ADCBufCC26XX.h:379
uint8_t intPriority
ADC peripheral's interrupt priority.
Definition: ADCBufCC26XX.h:508
ADCBufCC26XX_Reference_Source refSource
Definition: ADCBufCC26XX.h:530
Definition: ADCBufCC26XX.h:381
bool inputScalingEnabled
Definition: ADCBufCC26XX.h:526
Device-specific pin & GPIO driver for CC26xx family [def].
ADCBufCC26XX_Sampling_Duration samplingDuration
Definition: ADCBufCC26XX.h:443
Definition: ADCBufCC26XX.h:380
struct ADCBufCC26XX_Object ADCBufCC26XX_Object
ADCBufCC26XX Object.
bool keepADCSemaphore
Definition: ADCBufCC26XX.h:527
The definition of an ADCBuf function table that contains the required set of functions to control a s...
Definition: ADCBuf.h:387
ADCBufCC26XX_Sampling_Duration samplingDuration
Definition: ADCBufCC26XX.h:532
ADCBuf_Callback callbackFxn
Definition: ADCBufCC26XX.h:533
ADCBuf_Recurrence_Mode recurrenceMode
Definition: ADCBufCC26XX.h:534
Definition: ADCBufCC26XX.h:383
Definition: ADCBufCC26XX.h:386
Swi_Struct swi
Definition: ADCBufCC26XX.h:539
Definition: ADCBufCC26XX.h:362
UDMACC26XX driver implementation.
Definition: ADCBufCC26XX.h:377
Definition: ADCBufCC26XX.h:411
struct ADCBufCC26XX_ParamsExtension ADCBufCC26XX_ParamsExtension
CC26XX specfic extension to ADCBuf_Params.
ADCBufCC26XX_Reference_Source
Specifies whether the internal reference of the ADC is sourced from the battery voltage or a fixed in...
Definition: ADCBufCC26XX.h:410
UDMACC26XX_Handle udmaHandle
Definition: ADCBufCC26XX.h:549
Definition: ADCBufCC26XX.h:375
bool conversionInProgress
Definition: ADCBufCC26XX.h:525
uint8_t currentChannel
Definition: ADCBufCC26XX.h:529
struct ADCBufCC26XX_AdcChannelLutEntry ADCBufCC26XX_AdcChannelLutEntry
Table entry that maps a virtual adc channel to a dio and its corresponding internal analogue signal...
ADCBufCC26XX_AdcChannelLutEntry const * adcChannelLut
Definition: ADCBufCC26XX.h:510
GPTimer Global configuration.
Definition: GPTimerCC26XX.h:385
underlying data structure for type PIN_State
Definition: PIN.h:687
ADCBufCC26XX_Sampling_Mode samplingMode
Definition: ADCBufCC26XX.h:531
uint8_t gpTimerUnit
Definition: ADCBufCC26XX.h:512
uint8_t dio
Definition: ADCBufCC26XX.h:430
PIN_State pinState
Definition: ADCBufCC26XX.h:545
ADCBuf_Conversion * currentConversion
Definition: ADCBufCC26XX.h:542
struct ADCBufCC26XX_HWAttrs ADCBufCC26XX_HWAttrs
ADCBufCC26XX Hardware Attributes.
uint32_t samplingFrequency
Definition: ADCBufCC26XX.h:555
void(* ADCBuf_Callback)(ADCBuf_Handle handle, ADCBuf_Conversion *conversion, void *completedADCBuffer, uint32_t completedChannel)
The definition of a callback function used by the ADC driver when used in ADCBuf_RETURN_MODE_CALLBACK...
Definition: ADCBuf.h:253
uint8_t compBInput
Definition: ADCBufCC26XX.h:431
Definition: ADCBufCC26XX.h:376
Definition: ADCBufCC26XX.h:384
ADCBufCC26XX Object.
Definition: ADCBufCC26XX.h:522
const ADCBuf_FxnTable ADCBufCC26XX_fxnTable
Table entry that maps a virtual adc channel to a dio and its corresponding internal analogue signal...
Definition: ADCBufCC26XX.h:429
Generic PIN & GPIO driver.
ADCBufCC26XX_Sampling_Duration
Amount of time the ADC spends sampling the analogue input.
Definition: ADCBufCC26XX.h:373
Copyright 2016, Texas Instruments Incorporated