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