ADuCM302x Device Drivers API Reference Manual  Release 3.1.2.0
adi_adc_def.h
1 
3 #ifndef ADI_ADC_DEF
4 #define ADI_ADC_DEF
5 
6 #include <drivers/adc/adi_adc.h>
7 #include <adi_processor.h>
8 
9 #if defined(__ECC__)
10 #define ALIGN
11 #define ALIGN4 _Pragma("align(4)")
12 #elif defined(__ICCARM__)
13 #define ALIGN _Pragma("pack()")
14 #define ALIGN4 _Pragma("pack(4)")
15 #elif defined (__GNUC__)
16 #define ALIGN _Pragma("pack()")
17 #define ALIGN4 _Pragma("pack(4)")
18 #endif
19 
20 
21 #define IS_IN_STATE(X) ((pDevice->nDriverStatus & (uint32_t)(X)) == (uint32_t)(X))
22 #define IS_NOT_IN_STATE(X) ((pDevice->nDriverStatus & (uint32_t)(X)) == 0u)
23 #define IS_IN_ALL_STATES(X) ((pDevice->nDriverStatus & (uint32_t)(X)) == (uint32_t)(X))
24 #define IS_IN_ANY_STATE(X) ((pDevice->nDriverStatus & (uint32_t)(X)) != 0u)
25 #define IS_NOT_IN_ANY_STATE(X) ((pDevice->nDriverStatus & (uint32_t)(X)) == 0u)
26 
27 #define SET_STATE(X) (pDevice->nDriverStatus |= (uint32_t)(X))
28 #define CLR_STATE(X) (pDevice->nDriverStatus &= ~((uint32_t)(X)))
29 
30 #define NUM_ADC_CHANNELS (8u)
31 #define NUM_ADC_COMPARATOR_CHANNELS (4u)
32 
33 /* To keep state for the driver for error checking */
34 typedef enum __ADC_STATUS {
35  ADC_STATUS_POWERED_UP = (1u << 0),
36  ADC_STATUS_SUB_SYSTEM_EN = (1u << 1),
37  ADC_STATUS_SUB_SYSTEM_READY = (1u << 2),
38 
39  ADC_STATUS_NON_BLOCKING_EN = (1u << 3),
40  ADC_STATUS_BLOCKING_EN = (1u << 4),
41  ADC_STATUS_COMPARATOR_EN = (1u << 5),
42 
43  ADC_STATUS_SAMPLING_IN_PROGRESS = (1u << 6),
44  ADC_STATUS_CALIBRATION_EN = (1u << 7),
45  ADC_STATUS_CALIBRATION_DONE = (1u << 8),
46 
47  ADC_STATUS_BATTERY_DONE = (1u << 9),
48 
49  ADC_STATUS_OVERSAMPLING_EN = (1u << 10),
50  ADC_STATUS_AVGERAGING_EN = (1u << 11),
51 
52  ADC_STATUS_TEMP_SENSOR_EN = (1u << 12),
53 
54  ADC_STATUS_TMP_DONE = (1u << 13),
55  ADC_STATUS_TMP2_DONE = (1u << 14),
56 } ADC_STATUS;
57 
58 typedef enum __ADC_FIFO_MODE {
59  ADC_FIFO_MODE_INIT,
60  ADC_FIFO_MODE_ENABLED,
61  ADC_FIFO_MODE_INTERRUPT_PROCESS,
62  ADC_FIFO_MODE_INTERRUPT_OVERFLOW,
63  ADC_FIFO_MODE_DMA_BUFFER_PROCESS,
64  ADC_FIFO_MODE_DMA_INVALID_DESC,
65  ADC_FIFO_MODE_ABORT
66 } ADC_FIFO_MODE;
67 
68 typedef enum __ADC_BUFFER_CONFIG {
69  ADC_BUFFER_CONFIG_BUFFER_SINGLE_CONV_EN = ((uint32_t)1u << 1u),
70  ADC_BUFFER_CONFIG_BUFFER_AUTO_MODE_EN = ((uint32_t)1u << 0u),
71 } ADC_BUFFER_CONFIG;
72 
73 
74 typedef enum __ADC_BUFFER_STATUS {
75  ADC_BUFFER_STATUS_OK = ((uint32_t)1u << 0u),
76  ADC_BUFFER_STATUS_OVERFLOW = ((uint32_t)1u << 1u)
77 } ADC_BUFFER_STATUS;
78 
79 typedef struct __ADC_INT_BUFFER {
80  uint16_t nConfig;
81  uint16_t nStatus;
82  ADI_ADC_BUFFER *pUserBuffer;
83  uint16_t* pCurDataBuffer;
84  uint32_t nNumSamplesRemaining;
85  uint32_t nChannels;
86 } ADC_INT_BUFFER;
87 
88 typedef struct __ADC_ACTIVE_DATA {
89  uint32_t nCurChannel;
90 } ADC_ACTIVE_DATA;
91 
92 typedef ADI_ADC_RESULT (*ADC_MANAGE_FIFO_FUNC)(struct __ADI_ADC_DEVICE *pDevice, ADC_FIFO_MODE eFifoMode);
93 
94 typedef struct __ADI_ADC_DEVICE
95 {
96  volatile uint32_t nDriverStatus;
97  ADI_ADC_TypeDef *pReg;
98  void* pCBParam;
99  ADI_CALLBACK pfCallback;
100 
101  ADC_ACTIVE_DATA ActData;
102  ADC_MANAGE_FIFO_FUNC pfManageFifo;
103 
104  ADC_INT_BUFFER s_Buffer;
105  uint8_t ComparitorHi;
106  uint8_t ComparitorLo;
107  uint8_t ComparitorHys;
108 
109  SEM_VAR_DECLR
110 } ADI_ADC_DEVICE;
111 
112 typedef struct __ADI_ADC_INFO
113 {
114  ADI_ADC_HANDLE hDevice;
115  ADI_ADC_TypeDef* pReg;
116 } ADI_ADC_INFO;
117 
118 #endif /* ADI_ADC_DEF */
119 
struct __ADI_ADC_DEVICE * ADI_ADC_HANDLE
Definition: adi_adc.h:163
ADI_ADC_RESULT
Definition: adi_adc.h:73