6 #include <drivers/adc/adi_adc.h> 7 #include <adi_processor.h> 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)") 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) 27 #define SET_STATE(X) (pDevice->nDriverStatus |= (uint32_t)(X)) 28 #define CLR_STATE(X) (pDevice->nDriverStatus &= ~((uint32_t)(X))) 30 #define NUM_ADC_CHANNELS (8u) 31 #define NUM_ADC_COMPARATOR_CHANNELS (4u) 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),
39 ADC_STATUS_NON_BLOCKING_EN = (1u << 3),
40 ADC_STATUS_BLOCKING_EN = (1u << 4),
41 ADC_STATUS_COMPARATOR_EN = (1u << 5),
43 ADC_STATUS_SAMPLING_IN_PROGRESS = (1u << 6),
44 ADC_STATUS_CALIBRATION_EN = (1u << 7),
45 ADC_STATUS_CALIBRATION_DONE = (1u << 8),
47 ADC_STATUS_BATTERY_DONE = (1u << 9),
49 ADC_STATUS_OVERSAMPLING_EN = (1u << 10),
50 ADC_STATUS_AVGERAGING_EN = (1u << 11),
52 ADC_STATUS_TEMP_SENSOR_EN = (1u << 12),
54 ADC_STATUS_TMP_DONE = (1u << 13),
55 ADC_STATUS_TMP2_DONE = (1u << 14),
58 typedef enum __ADC_FIFO_MODE {
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,
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),
74 typedef enum __ADC_BUFFER_STATUS {
75 ADC_BUFFER_STATUS_OK = ((uint32_t)1u << 0u),
76 ADC_BUFFER_STATUS_OVERFLOW = ((uint32_t)1u << 1u)
79 typedef struct __ADC_INT_BUFFER {
83 uint16_t* pCurDataBuffer;
84 uint32_t nNumSamplesRemaining;
88 typedef struct __ADC_ACTIVE_DATA {
92 typedef ADI_ADC_RESULT (*ADC_MANAGE_FIFO_FUNC)(
struct __ADI_ADC_DEVICE *pDevice, ADC_FIFO_MODE eFifoMode);
94 typedef struct __ADI_ADC_DEVICE
96 volatile uint32_t nDriverStatus;
97 ADI_ADC_TypeDef *pReg;
99 ADI_CALLBACK pfCallback;
101 ADC_ACTIVE_DATA ActData;
102 ADC_MANAGE_FIFO_FUNC pfManageFifo;
104 ADC_INT_BUFFER s_Buffer;
105 uint8_t ComparitorHi;
106 uint8_t ComparitorLo;
107 uint8_t ComparitorHys;
112 typedef struct __ADI_ADC_INFO
115 ADI_ADC_TypeDef* pReg;
struct __ADI_ADC_DEVICE * ADI_ADC_HANDLE