18 #include <drivers/adc/adi_adc.h> 19 #include <adi_processor.h> 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)") 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) 39 #define SET_STATE(X) (pDevice->nDriverStatus |= (uint32_t)(X)) 40 #define CLR_STATE(X) (pDevice->nDriverStatus &= ~((uint32_t)(X))) 42 #define NUM_ADC_CHANNELS (8u) 43 #define NUM_ADC_COMPARATOR_CHANNELS (4u) 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),
51 ADC_STATUS_NON_BLOCKING_EN = (1u << 3),
52 ADC_STATUS_BLOCKING_EN = (1u << 4),
53 ADC_STATUS_COMPARATOR_EN = (1u << 5),
55 ADC_STATUS_SAMPLING_IN_PROGRESS = (1u << 6),
56 ADC_STATUS_CALIBRATION_EN = (1u << 7),
57 ADC_STATUS_CALIBRATION_DONE = (1u << 8),
59 ADC_STATUS_BATTERY_DONE = (1u << 9),
61 ADC_STATUS_OVERSAMPLING_EN = (1u << 10),
62 ADC_STATUS_AVGERAGING_EN = (1u << 11),
64 ADC_STATUS_TEMP_SENSOR_EN = (1u << 12),
66 ADC_STATUS_TMP_DONE = (1u << 13),
67 ADC_STATUS_TMP2_DONE = (1u << 14),
70 typedef enum __ADC_FIFO_MODE {
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,
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),
86 typedef enum __ADC_BUFFER_STATUS {
87 ADC_BUFFER_STATUS_OK = ((uint32_t)1u << 0u),
88 ADC_BUFFER_STATUS_OVERFLOW = ((uint32_t)1u << 1u)
91 typedef struct __ADC_INT_BUFFER {
95 uint16_t* pCurDataBuffer;
96 uint32_t nNumSamplesRemaining;
100 typedef struct __ADC_ACTIVE_DATA {
101 uint32_t nCurChannel;
104 typedef ADI_ADC_RESULT (*ADC_MANAGE_FIFO_FUNC)(
struct __ADI_ADC_DEVICE *pDevice, ADC_FIFO_MODE eFifoMode);
106 typedef struct __ADI_ADC_DEVICE
108 volatile uint32_t nDriverStatus;
109 ADI_ADC_TypeDef *pReg;
111 ADI_CALLBACK pfCallback;
113 ADC_ACTIVE_DATA ActData;
114 ADC_MANAGE_FIFO_FUNC pfManageFifo;
116 ADC_INT_BUFFER s_Buffer;
117 uint8_t ComparitorHi;
118 uint8_t ComparitorLo;
119 uint8_t ComparitorHys;
124 typedef struct __ADI_ADC_INFO
127 ADI_ADC_TypeDef* pReg;
struct __ADI_ADC_DEVICE * ADI_ADC_HANDLE