adc_pal.h
Go to the documentation of this file.
1 /*
2  * Copyright 2017 NXP
3  * All rights reserved.
4  *
5  * THIS SOFTWARE IS PROVIDED BY NXP "AS IS" AND ANY EXPRESSED OR
6  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
7  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
8  * IN NO EVENT SHALL NXP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
9  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
10  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
11  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
12  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
13  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
14  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
15  * THE POSSIBILITY OF SUCH DAMAGE.
16  */
17 
18 #ifndef ADC_PAL_H
19 #define ADC_PAL_H
20 
21 #include "adc_pal_cfg.h"
22 #include "adc_pal_mapping.h"
23 #include "status.h"
24 #include "callbacks.h"
25 
46 /*******************************************************************************
47  * Definitions
48  ******************************************************************************/
49 
50 #if defined(ADC_PAL_S32K1xx)
51 
57 typedef adc_inputchannel_t adc_input_chan_t;
58 
64 typedef trgmux_trigger_source_t adc_trigger_source_t;
65 
66 #elif defined(ADC_PAL_MPC574xC_G_R) || defined(ADC_PAL_MPC574xP)
67 
73 typedef uint16_t adc_input_chan_t;
74 
75 #if defined(ADC_PAL_MPC574xC_G_R)
76 
82 typedef uint8_t adc_trigger_source_t;
83 
84 #elif defined(ADC_PAL_MPC574xP)
85 
93 typedef uint32_t adc_trigger_source_t;
94 
95 #endif /* defined(ADC_PAL_MPC574xC_G_R) */
96 
97 
103 #define ADC_CHAN_ADC_IDX_MASK (0xF000u)
104 #define ADC_CHAN_CHAN_IDX_MASK (0xFFFu)
105 #define ADC_CHAN_ADC_IDX_OFFSET (12u)
107 #define ADC_CHAN_MAP(ADC_IDX, CHAN_IDX) ((adc_input_chan_t) (((CHAN_IDX) & ADC_CHAN_CHAN_IDX_MASK) + ((((uint16_t)ADC_IDX) << ADC_CHAN_ADC_IDX_OFFSET) & ADC_CHAN_ADC_IDX_MASK)))
108 
109 #endif /* defined(ADC_PAL_MPC574xC_G_R) || defined(ADC_PAL_MPC574xP) */
110 
111 
117 typedef enum
118 {
123 
129 typedef struct
130 {
131  const adc_input_chan_t * inputChannelArray;
133  uint16_t * resultBuffer;
134  uint8_t numChannels;
138  adc_trigger_source_t triggerSource;
141  uint16_t * delayArray;
148 
149 
155 typedef struct
156 {
158  uint16_t numGroups;
160  uint8_t sampleTicks;
161  void * extension;
162 } adc_config_t;
163 
164 
165 #if defined(ADC_PAL_S32K1xx)
166 
171 typedef struct
172 {
173  adc_clk_divide_t clockDivide;
174  adc_resolution_t resolution;
175  adc_input_clock_t inputClock;
176  adc_voltage_reference_t voltageRef;
177  bool supplyMonitoringEnable;
178  pdb_clk_prescaler_div_t pdbPrescaler;
180 } extension_adc_s32k1xx_t;
181 #endif /* defined(ADC_PAL_S32K1xx) */
182 
183 
184 #if defined(ADC_PAL_MPC574xC_G_R)
185 
190 typedef struct
191 {
192  adc_clk_sel_t clkSelect;
193  adc_ref_sel_t refSelect;
194  bool autoClockOff;
195 } extension_adc_mpc574xc_g_r_t;
196 #endif /* defined(ADC_PAL_MPC574xC_G_R) || defined(ADC_PAL_MPC574xP) */
197 
198 
199 #if defined(ADC_PAL_MPC574xP)
200 
205 typedef struct
206 {
207  adc_clk_sel_t clkSelect;
208  adc_ref_sel_t refSelect;
209  bool autoClockOff;
210  ctu_prescaler_t ctuPrescaler;
211 } extension_adc_mpc574xp_t;
212 
213 #endif /* defined(ADC_PAL_MPC574xP) */
214 
215 /*******************************************************************************
216  * API
217  ******************************************************************************/
218 
219 #if defined(__cplusplus)
220 extern "C" {
221 #endif
222 
236 status_t ADC_Init(const adc_instance_t * const instance, const adc_config_t * const config);
237 
249 status_t ADC_Deinit(const adc_instance_t * const instance);
250 
251 
266 status_t ADC_EnableHardwareTrigger(const adc_instance_t * const instance, const uint32_t groupIdx);
267 
268 
289 status_t ADC_DisableHardwareTrigger(const adc_instance_t * const instance, const uint32_t groupIdx, const uint32_t timeout);
290 
291 
304 status_t ADC_StartGroupConversion(const adc_instance_t * const instance, const uint32_t groupIdx);
305 
306 
323 status_t ADC_StopGroupConversion(const adc_instance_t * const instance, const uint32_t groupIdx, const uint32_t timeout);
324 
325 
337 status_t ADC_EnableNotification(const adc_instance_t * const instance, const uint32_t groupIdx);
338 
339 
351 status_t ADC_DisableNotification(const adc_instance_t * const instance, const uint32_t groupIdx);
352 
353 
354 #if defined(__cplusplus)
355 }
356 #endif
357 
359 #endif /* ADC_PAL_H */
360 
361 
362 /*******************************************************************************
363  * EOF
364  ******************************************************************************/
adc_resolution_t
Conversion resolution selection.
Definition: adc_driver.h:73
void * extension
Definition: adc_pal.h:161
adc_voltage_reference_t
Voltage reference selection.
Definition: adc_driver.h:146
status_t ADC_StopGroupConversion(const adc_instance_t *const instance, const uint32_t groupIdx, const uint32_t timeout)
Stops the selected SW triggered ADC conversion group execution.
Definition: adc_pal.c:686
const adc_group_config_t * groupConfigArray
Definition: adc_pal.h:157
status_t ADC_DisableNotification(const adc_instance_t *const instance, const uint32_t groupIdx)
Disables the notification callback for a configured group.
Definition: adc_pal.c:835
adc_clk_divide_t
Clock Divider selection.
Definition: adc_driver.h:60
adc_callback_t callback
Definition: adc_pal.h:145
Defines the configuration structure for ADC PAL.
Definition: adc_pal.h:155
const adc_input_chan_t * inputChannelArray
Definition: adc_pal.h:131
adc_trigger_source_t triggerSource
Definition: adc_pal.h:138
bool continuousConvEn
Definition: adc_pal.h:143
adc_input_clock_t
Input clock source selection.
Definition: adc_driver.h:85
Defines the configuration structure for an ADC PAL conversion group.
Definition: adc_pal.h:129
adc_delay_type_t delayType
Definition: adc_pal.h:140
status_t ADC_StartGroupConversion(const adc_instance_t *const instance, const uint32_t groupIdx)
Starts the execution of a selected SW triggered ADC conversion group.
Definition: adc_pal.c:607
bool hwTriggerSupport
Definition: adc_pal.h:137
status_t ADC_EnableHardwareTrigger(const adc_instance_t *const instance, const uint32_t groupIdx)
Enables the selected HW trigger for a conversion group, if the conversion group has support for HW tr...
Definition: adc_pal.c:408
status_t ADC_Deinit(const adc_instance_t *const instance)
Deinitializes the ADC PAL instance.
Definition: adc_pal.c:310
enum trgmux_trigger_source_e trgmux_trigger_source_t
Enumeration for trigger source module of TRGMUX.
Definition: trgmux_driver.h:71
status_t
Status return codes. Common error codes will be a unified enumeration (C enum) that will contain all ...
Definition: status.h:44
uint16_t * resultBuffer
Definition: adc_pal.h:133
uint8_t sampleTicks
Definition: adc_pal.h:160
void * callbackUserData
Definition: adc_pal.h:146
uint16_t numGroups
Definition: adc_pal.h:158
uint16_t * delayArray
Definition: adc_pal.h:141
adc_inputchannel_t
Enumeration of input channels assignable to a control channel. Note 0: entries in this enum are aff...
Definition: adc_driver.h:180
status_t ADC_Init(const adc_instance_t *const instance, const adc_config_t *const config)
Initializes the ADC PAL instance.
Definition: adc_pal.c:228
status_t ADC_EnableNotification(const adc_instance_t *const instance, const uint32_t groupIdx)
Enables the notification callback for a configured group.
Definition: adc_pal.c:786
uint8_t numSetsResultBuffer
Definition: adc_pal.h:135
pdb_clk_prescaler_div_t
Defines the type of prescaler divider for the PDB counter clock. Implements : pdb_clk_prescaler_div_t...
Definition: pdb_driver.h:61
uint8_t numChannels
Definition: adc_pal.h:134
status_t ADC_DisableHardwareTrigger(const adc_instance_t *const instance, const uint32_t groupIdx, const uint32_t timeout)
Disables the selected HW trigger for a conversion group, if the conversion group is HW triggered...
Definition: adc_pal.c:500
Structure storing PAL instance information.
void(*const adc_callback_t)(const adc_callback_info_t *const callbackInfo, void *userData)
Definition: callbacks.h:118
adc_delay_type_t
Defines an enumeration which contains the types of delay configurations for ADC conversions within a ...
Definition: adc_pal.h:117