A31L12x F/W Packages  1.4.0
ABOV Cortex-M0+ Core based MCUs Integrated Driver
A31L12x_hal_adc.h
Go to the documentation of this file.
1 /***************************************************************************//****************************************************************************/
34 
35 #ifndef _ADC_H_
36 #define _ADC_H_
37 
38 #include "A31L12x.h"
39 #include "A31L12x_hal_aa_types.h"
40 
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44 
45 //******************************************************************************
46 // Constant
47 //******************************************************************************
48 
49 //---------- ADC Channel Selection Definition ----------
50 #define ADC_AN0 (0x0001uL << ADC_CHSELR_AN0_Pos) // AN0
51 #define ADC_AN1 (0x0001uL << ADC_CHSELR_AN1_Pos) // AN1
52 #define ADC_AN2 (0x0001uL << ADC_CHSELR_AN2_Pos) // AN2
53 #define ADC_AN3 (0x0001uL << ADC_CHSELR_AN3_Pos) // AN3
54 #define ADC_AN4 (0x0001uL << ADC_CHSELR_AN4_Pos) // AN4
55 #define ADC_AN5 (0x0001uL << ADC_CHSELR_AN5_Pos) // AN5
56 #define ADC_AN6 (0x0001uL << ADC_CHSELR_AN6_Pos) // AN6
57 #define ADC_AN7 (0x0001uL << ADC_CHSELR_AN7_Pos) // AN7
58 #define ADC_AN8 (0x0001uL << ADC_CHSELR_AN8_Pos) // AN8
59 #define ADC_AN9 (0x0001uL << ADC_CHSELR_AN9_Pos) // AN9
60 #define ADC_AN10 (0x0001uL << ADC_CHSELR_AN10_Pos) // AN10
61 #define ADC_AN11 (0x0001uL << ADC_CHSELR_AN11_Pos) // AN11
62 #define ADC_AN12 (0x0001uL << ADC_CHSELR_AN12_Pos) // AN12
63 #define ADC_AN13 (0x0001uL << ADC_CHSELR_AN13_Pos) // AN13
64 #define ADC_AN14 (0x0001uL << ADC_CHSELR_AN14_Pos) // AN14
65 #define ADC_AN15 (0x0001uL << ADC_CHSELR_AN15_Pos) // AN15
66 #define ADC_AVSS (0x0001uL << ADC_CHSELR_AN16_Pos) // AVSS
67 #define ADC_AVDD (0x0001uL << ADC_CHSELR_AN18_Pos) // AVDD
68 #define ADC_BGR (0x0001uL << ADC_CHSELR_AN19_Pos) // BGR
69 
70 //---------- ADC Mask Definition ----------------
71 #define ADC_INT_STATUS_MSK 0xfffffff0uL
72 
73 //******************************************************************************
74 // Type
75 //******************************************************************************
76 
77 //==============================================================================
78 // Enumeration
79 //==============================================================================
80 
81 typedef enum
82 {
89 
90 typedef enum
91 {
96 } ADC_INT_Type;
97 
98 typedef enum
99 {
109 
110 //==============================================================================
111 // Structure
112 //==============================================================================
113 
114 typedef struct
115 {
116  /* ADC_CR */
117  uint32_t TrgSel;
118  uint32_t ExtTrgPolSel;
119  uint32_t ConvModSel;
120 
121  /* ADC_PREDR */
122  uint32_t InClkDiv;
123 
124  /* ADC_SAMR */
125  uint32_t SamplingClk;
126 } ADC_CFG_Type;
127 
128 //******************************************************************************
129 // Macro
130 //******************************************************************************
131 
132 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
136 #define ADCEN() (ADC->CR_b.ADCEN = ADC_CR_ADCEN_Enable)
137 
138 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
142 #define ADCDIS() (ADC->CR_b.ADCEN = ADC_CR_ADCEN_Disable)
143 
144 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
148 #define ADCRDY_Stop() (ADC->CR_b.ADRDY = ADC_CR_ADRDY_Stop)
149 
150 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
154 #define ADCRDY_Conv() (ADC->CR_b.ADRDY = ADC_CR_ADRDY_Ready)
155 
156 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
160 #define ADCADST_Set() (ADC->CR_b.ADST = ADC_CR_ADST_Start)
161 
162 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
166 #define ADC_OVSMPEN() (ADC->OVSCR_b.OVSMPEN = ADC_OVSCR_OVSMPEN_Enable)
167 
168 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
172 #define ADC_OVSMPDIS() (ADC->OVSCR_b.OVSMPEN = ADC_OVSCR_OVSMPEN_Disable)
173 
174 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
178 #define ADC_SetOvSmpR(adc_ovsmplr) (ADC->OVSCR_b.OVSMPR = adc_ovsmplr)
179 
180 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
184 #define ADC_SetOvSht(adc_ovsht) (ADC->OVSCR_b.OVSHT = adc_ovsht)
185 
186 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
190 #define ADC_GetLastCh() (ADC->IESR_b.LASTCH)
191 
192 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
196 #define ADCInt_GetStbFg() (ADC->IESR_b.STBIFLAG)
197 
198 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
202 #define ADCInt_ClrStbFg() (ADC->IESR = ((ADC->IESR&0xfffffff0)|(0x01ul<<ADC_IESR_STBIFLAG_Pos)))
203 
204 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
208 #define ADCInt_GetOvRunFg() (ADC->IESR_b.OVRUNIFLAG)
209 
210 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
214 #define ADCInt_ClrOvRunFg() (ADC->IESR = ((ADC->IESR&0xfffffff0)|(0x01ul<<ADC_IESR_OVRUNIFLAG_Pos)))
215 
216 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
220 #define ADCInt_GetEOCFg() (ADC->IESR_b.EOCIFLAG)
221 
222 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
226 #define ADCInt_ClrEOCFg() (ADC->IESR = ((ADC->IESR&0xfffffff0)|(0x01ul<<ADC_IESR_EOCIFLAG_Pos)))
227 
228 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
232 #define ADCInt_GetEOSFg() (ADC->IESR_b.EOSIFLAG)
233 
234 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
238 #define ADCInt_ClrEOSFg() (ADC->IESR = ((ADC->IESR&0xfffffff0)|(0x01ul<<ADC_IESR_EOSIFLAG_Pos)))
239 
240 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
244 #define ADCData_Get() (ADC->DR)
245 
246 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
250 #define ADC_DR_RESULT( n ) ((n) & ADC_DR_ADDATA_Msk)
251 
252 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
256 #define ADC_SetPreData(adc_pred) (ADC->PREDR = adc_pred)
257 
258 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
262 #define ADC_SetSamR(adc_samck) (ADC->SAMR = adc_samck)
263 
264 //******************************************************************************
265 // Function
266 //******************************************************************************
267 
268 HAL_Status_Type HAL_ADC_Init( ADC_Type* ADCx, ADC_CFG_Type* ADC_Config );
269 HAL_Status_Type HAL_ADC_DeInit( ADC_Type* ADCx );
270 
271 HAL_Status_Type HAL_ADC_ConfigInterrupt( ADC_Type* ADCx, ADC_INT_Type ADCIntCfg, FunctionalState NewState );
272 HAL_Status_Type HAL_ADC_OvSamplingConfig( ADC_Type* ADCx, ADC_OV_SAMPLING_RATIO OvSampRatio, ADC_OVSCR_OVSHT_Enum DataShiftRight );
273 HAL_Status_Type HAL_ADC_ChannelSel( ADC_Type* ADCx, uint32_t Channels );
274 HAL_Status_Type HAL_ADC_Start( ADC_Type* ADCx );
275 HAL_Status_Type HAL_ADC_RdyCmd( ADC_Type* ADCx );
276 HAL_Status_Type HAL_ADC_ClearStatus( ADC_Type* ADCx, ADC_INT_STATUS_Type ADCInt_status );
277 uint8_t HAL_ADC_GetStatus( ADC_Type* ADCx );
278 
279 uint16_t HAL_ADC_GetData( ADC_Type* ADCx );
280 
281 #ifdef __cplusplus
282 }
283 #endif
284 
285 #endif /* _ADC_H_ */
286 
HAL_Status_Type HAL_ADC_OvSamplingConfig(ADC_Type *ADCx, ADC_OV_SAMPLING_RATIO OvSampRatio, ADC_OVSCR_OVSHT_Enum DataShiftRight)
ADC oversampling configuration.
ADC_INT_Type
uint32_t SamplingClk
uint32_t InClkDiv
Contains the ABOV typedefs for C standard types. It is intended to be used in ISO C conforming develo...
HAL_Status_Type HAL_ADC_Init(ADC_Type *ADCx, ADC_CFG_Type *ADC_Config)
Initialize the ADC peripheral with the specified parameters.
HAL_Status_Type
HAL_Status_Type HAL_ADC_ChannelSel(ADC_Type *ADCx, uint32_t Channels)
Select ADC Channels to conversion (Ex: ADC_AN0 | ADC_AN5 | ADC_AN14 | ADC_AVDD)
uint16_t HAL_ADC_GetData(ADC_Type *ADCx)
Get Result conversion from A/D data register.
uint8_t HAL_ADC_GetStatus(ADC_Type *ADCx)
Get ADC interrupt status.
HAL_Status_Type HAL_ADC_ConfigInterrupt(ADC_Type *ADCx, ADC_INT_Type ADCIntCfg, FunctionalState NewState)
ADC interrupt configuration.
ADC_OV_SAMPLING_RATIO
HAL_Status_Type HAL_ADC_Start(ADC_Type *ADCx)
Start A/D conversion.
ADC_INT_STATUS_Type
uint32_t ExtTrgPolSel
FunctionalState
HAL_Status_Type HAL_ADC_RdyCmd(ADC_Type *ADCx)
Ready procedure for ADC conversion.
uint32_t ConvModSel
HAL_Status_Type HAL_ADC_DeInit(ADC_Type *ADCx)
Close ADC.
HAL_Status_Type HAL_ADC_ClearStatus(ADC_Type *ADCx, ADC_INT_STATUS_Type ADCInt_status)
Clear ADC interrupt status.