ADC_MEASUREMENT
|
ADC_MEASUREMENT.h
Go to the documentation of this file.
00001 00089 /*CODE_BLOCK_BEGIN*/ 00090 #ifndef ADC_MEASUREMENT_H 00091 #define ADC_MEASUREMENT_H 00092 00093 00094 /*********************************************************************************************************************** 00095 * HEADER FILES 00096 **********************************************************************************************************************/ 00097 00098 #include "GLOBAL_ADC/global_adc.h" 00099 #include "adc_measurement_conf.h" 00100 00101 /********************************************************************************************************************** 00102 * MACROS 00103 **********************************************************************************************************************/ 00104 #if (!((XMC_LIB_MAJOR_VERSION == 2U) && \ 00105 (XMC_LIB_MINOR_VERSION >= 0U) && \ 00106 (XMC_LIB_PATCH_VERSION >= 0U))) 00107 #error "ADC_MEASUREMENT requires XMC Peripheral Library v2.0.0 or higher" 00108 #endif 00109 00110 #if defined (__GNUC__) || defined (__CC_ARM) 00111 #define ADC_MEASUREMENT_DEPRECATED __attribute__((deprecated)) 00112 #else 00113 #define ADC_MEASUREMENT_DEPRECATED 00114 #endif 00115 00116 #define ADC_MEASUREMENT_MODULE_PTR ((XMC_VADC_GLOBAL_t *) (void *) VADC) 00117 00118 /********************************************************************************************************************** 00119 * ENUMS 00120 **********************************************************************************************************************/ 00127 typedef enum ADC_MEASUREMENT_STATUS 00128 { 00129 ADC_MEASUREMENT_STATUS_SUCCESS = 0, 00130 ADC_MEASUREMENT_STATUS_FAILURE, 00131 ADC_MEASUREMENT_STATUS_UNINITIALIZED 00132 } ADC_MEASUREMENT_STATUS_t; 00137 /********************************************************************************************************************** 00138 * DATA STRUCTURES 00139 **********************************************************************************************************************/ 00145 typedef void (*ADC_MEASUREMENT_MUX_CONFIG_t)(void); 00150 typedef struct ADC_MEASUREMENT_ISR 00151 { 00152 uint32_t node_id; 00154 uint32_t priority; 00155 #if(UC_FAMILY == XMC4) 00156 uint32_t sub_priority; 00157 #endif 00158 #ifdef ADC_MEASUREMENT_NON_DEFAULT_IRQ_SOURCE_SELECTED 00159 uint8_t irqctrl; 00160 #endif 00161 } ADC_MEASUREMENT_ISR_t; 00162 00166 typedef struct ADC_MEASUREMENT_CHANNEL 00167 { 00168 #if( XMC_VADC_GROUP_AVAILABLE == 1U) 00169 XMC_VADC_CHANNEL_CONFIG_t *ch_handle; 00171 XMC_VADC_RESULT_CONFIG_t *res_handle; 00172 #endif 00173 00174 #if( XMC_VADC_GROUP_AVAILABLE == 1U) 00175 XMC_VADC_GROUP_t *group_handle; 00176 #endif 00177 00178 #ifdef ADC_MEASUREMENT_ANALOG_IO_USED 00179 ANALOG_IO_t *analog_io_config; 00180 #endif 00181 00182 uint8_t group_index; 00184 uint8_t ch_num; 00186 } ADC_MEASUREMENT_CHANNEL_t; 00187 00191 typedef struct ADC_MEASUREMENT_CHANNEL_ARRAY 00192 { 00193 const ADC_MEASUREMENT_CHANNEL_t *const channel_array[ADC_MEASUREMENT_MAXCHANNELS]; 00195 #if( XMC_VADC_GROUP_AVAILABLE == 0U) 00196 XMC_VADC_RESULT_CONFIG_t *res_handle; 00197 #endif 00198 } ADC_MEASUREMENT_CHANNEL_ARRAY_t; 00199 00203 typedef struct ADC_MEASUREMENT 00204 { 00205 const ADC_MEASUREMENT_CHANNEL_ARRAY_t *const array; 00207 const XMC_VADC_BACKGROUND_CONFIG_t *const backgnd_config_handle; 00210 const XMC_VADC_GLOBAL_CLASS_t *const iclass_config_handle; 00212 GLOBAL_ADC_t *const global_handle; 00214 #if (UC_SERIES != XMC11) 00215 const ADC_MEASUREMENT_ISR_t *const req_src_intr_handle; 00216 #else 00217 const ADC_MEASUREMENT_ISR_t *const result_intr_handle; 00218 #endif 00219 00220 ADC_MEASUREMENT_MUX_CONFIG_t mux_config; 00222 ADC_MEASUREMENT_STATUS_t init_state; 00224 const XMC_VADC_SR_t srv_req_node; 00226 const bool start_conversion; 00227 } ADC_MEASUREMENT_t; 00228 00233 #ifdef __cplusplus 00234 extern "C" { 00235 #endif 00236 00237 /*********************************************************************************************************************** 00238 * API Prototypes 00239 **********************************************************************************************************************/ 00279 DAVE_APP_VERSION_t ADC_MEASUREMENT_GetAppVersion(void); 00280 00304 ADC_MEASUREMENT_STATUS_t ADC_MEASUREMENT_Init(ADC_MEASUREMENT_t *const handle_ptr); 00305 00341 void ADC_MEASUREMENT_StartConversion(ADC_MEASUREMENT_t *const handle_ptr); 00342 00343 #if(XMC_VADC_GROUP_AVAILABLE == 1U) 00344 00384 XMC_VADC_RESULT_SIZE_t ADC_MEASUREMENT_GetResult(ADC_MEASUREMENT_CHANNEL_t *const handle_ptr); 00385 00443 uint32_t ADC_MEASUREMENT_GetDetailedResult(ADC_MEASUREMENT_CHANNEL_t *const handle_ptr); 00444 00445 #else /* Applicable for XMC1100 devices*/ 00446 00492 XMC_VADC_RESULT_SIZE_t ADC_MEASUREMENT_GetResult(ADC_MEASUREMENT_t *const handle_ptr) ADC_MEASUREMENT_DEPRECATED; 00493 00566 uint32_t ADC_MEASUREMENT_GetDetailedResult(ADC_MEASUREMENT_t *const handle_ptr) ADC_MEASUREMENT_DEPRECATED; 00567 00614 __STATIC_INLINE XMC_VADC_RESULT_SIZE_t ADC_MEASUREMENT_GetGlobalResult(void) 00615 { 00616 XMC_VADC_RESULT_SIZE_t result; 00617 00618 result = XMC_VADC_GLOBAL_GetDetailedResult(ADC_MEASUREMENT_MODULE_PTR); 00619 00620 return (result); 00621 } 00622 00695 __STATIC_INLINE uint32_t ADC_MEASUREMENT_GetGlobalDetailedResult(void) 00696 { 00697 uint32_t result; 00698 result = XMC_VADC_GLOBAL_GetDetailedResult(ADC_MEASUREMENT_MODULE_PTR); 00699 00700 return (result); 00701 } 00702 #endif 00703 00708 #include "ADC_MEASUREMENT_Extern.h" 00709 #ifdef __cplusplus 00710 } 00711 #endif 00712 00713 #endif /* ADC_MEASUREMENT_H_ */