S32 SDK
pdb_driver.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 - 2015, Freescale Semiconductor, Inc.
3  * Copyright 2016-2017 NXP
4  * All rights reserved.
5  *
6  * THIS SOFTWARE IS PROVIDED BY NXP "AS IS" AND ANY EXPRESSED OR
7  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
8  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
9  * IN NO EVENT SHALL NXP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
10  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
11  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
12  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
13  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
14  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
15  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
16  * THE POSSIBILITY OF SUCH DAMAGE.
17  */
18 
19 #ifndef PDB_DRIVER_H
20 #define PDB_DRIVER_H
21 
22 #include <stdint.h>
23 #include <stdbool.h>
24 #include "clock_manager.h"
25 
33 /*******************************************************************************
34  * Definitions
35  ******************************************************************************/
45 typedef enum
46 {
56 
61 typedef enum
62 {
72 
80 typedef enum
81 {
99 
106 typedef enum
107 {
113 
120 typedef struct
121 {
128  bool dmaEnable;
129  bool intEnable;
131 
137 typedef struct
138 {
139  uint32_t adcPreTriggerIdx;
144 
145 #if defined(__cplusplus)
146 extern "C" {
147 #endif
148 
160 void PDB_DRV_Init(const uint32_t instance,
161  const pdb_timer_config_t * userConfigPtr);
162 
171 void PDB_DRV_Deinit(const uint32_t instance);
172 
182 void PDB_DRV_SoftTriggerCmd(const uint32_t instance);
183 
192 uint32_t PDB_DRV_GetTimerValue(const uint32_t instance);
193 
202 bool PDB_DRV_GetTimerIntFlag(const uint32_t instance);
203 
211 void PDB_DRV_ClearTimerIntFlag(const uint32_t instance);
212 
220 void PDB_DRV_LoadValuesCmd(const uint32_t instance);
221 
230 void PDB_DRV_SetTimerModulusValue(const uint32_t instance,
231  const uint32_t value);
232 
241 void PDB_DRV_SetValueForTimerInterrupt(const uint32_t instance,
242  const uint32_t value);
243 
253 void PDB_DRV_ConfigAdcPreTrigger(const uint32_t instance,
254  const uint32_t chn,
255  const pdb_adc_pretrigger_config_t * configPtr);
256 
267 uint32_t PDB_DRV_GetAdcPreTriggerFlags(const uint32_t instance,
268  const uint32_t chn,
269  const uint32_t preChnMask);
270 
280 void PDB_DRV_ClearAdcPreTriggerFlags(const uint32_t instance,
281  const uint32_t chn,
282  const uint32_t preChnMask);
283 
294 uint32_t PDB_DRV_GetAdcPreTriggerSeqErrFlags(const uint32_t instance,
295  const uint32_t chn,
296  const uint32_t preChnMask);
297 
307 void PDB_DRV_ClearAdcPreTriggerSeqErrFlags(const uint32_t instance,
308  const uint32_t chn,
309  const uint32_t preChnMask);
310 
321 void PDB_DRV_SetAdcPreTriggerDelayValue(const uint32_t instance,
322  const uint32_t chn,
323  const uint32_t preChn,
324  const uint32_t value);
325 
335 void PDB_DRV_SetCmpPulseOutEnable(const uint32_t instance,
336  const uint32_t pulseChnMask,
337  bool enable);
338 
348 void PDB_DRV_SetCmpPulseOutDelayForHigh(const uint32_t instance,
349  const uint32_t pulseChn,
350  const uint32_t value);
351 
361 void PDB_DRV_SetCmpPulseOutDelayForLow(const uint32_t instance,
362  const uint32_t pulseChn,
363  const uint32_t value);
364 
365 #if defined(__cplusplus)
366 }
367 #endif
368 
373 #endif /* PDB_DRIVER_H */
374 /*******************************************************************************
375  * EOF
376  ******************************************************************************/
void PDB_DRV_ClearTimerIntFlag(const uint32_t instance)
Clears the interrupt flag.
Definition: pdb_driver.c:173
void PDB_DRV_SetCmpPulseOutEnable(const uint32_t instance, const uint32_t pulseChnMask, bool enable)
Switches on/off the CMP pulse out in the PDB module.
Definition: pdb_driver.c:347
void PDB_DRV_SetAdcPreTriggerDelayValue(const uint32_t instance, const uint32_t chn, const uint32_t preChn, const uint32_t value)
Sets the ADC pre_trigger delay value in the PDB module.
Definition: pdb_driver.c:328
void PDB_DRV_SetTimerModulusValue(const uint32_t instance, const uint32_t value)
Sets the value of timer modulus.
Definition: pdb_driver.c:203
pdb_clk_prescaler_mult_factor_t
Defines the type of the multiplication source mode for PDB.
Definition: pdb_driver.h:106
pdb_trigger_src_t
Defines the type of trigger source mode for the PDB.
Definition: pdb_driver.h:80
pdb_load_value_mode_t
Defines the type of value load mode for the PDB module.
Definition: pdb_driver.h:45
void PDB_DRV_ConfigAdcPreTrigger(const uint32_t instance, const uint32_t chn, const pdb_adc_pretrigger_config_t *configPtr)
Configures the ADC pre_trigger in the PDB module.
Definition: pdb_driver.c:235
void PDB_DRV_SetValueForTimerInterrupt(const uint32_t instance, const uint32_t value)
Sets the value for the timer interrupt.
Definition: pdb_driver.c:219
uint32_t PDB_DRV_GetAdcPreTriggerSeqErrFlags(const uint32_t instance, const uint32_t chn, const uint32_t preChnMask)
Gets the ADC pre_trigger flag in the PDB module.
Definition: pdb_driver.c:292
uint32_t PDB_DRV_GetAdcPreTriggerFlags(const uint32_t instance, const uint32_t chn, const uint32_t preChnMask)
Gets the ADC pre_trigger flag in the PDB module.
Definition: pdb_driver.c:256
Defines the type of structure for basic timer in PDB.
Definition: pdb_driver.h:120
bool PDB_DRV_GetTimerIntFlag(const uint32_t instance)
Gets the PDB interrupt flag.
Definition: pdb_driver.c:158
uint32_t PDB_DRV_GetTimerValue(const uint32_t instance)
Gets the current counter value in the PDB module.
Definition: pdb_driver.c:142
void PDB_DRV_SetCmpPulseOutDelayForLow(const uint32_t instance, const uint32_t pulseChn, const uint32_t value)
Sets the CMP pulse out delay value for low in the PDB module.
Definition: pdb_driver.c:382
void PDB_DRV_ClearAdcPreTriggerSeqErrFlags(const uint32_t instance, const uint32_t chn, const uint32_t preChnMask)
Clears the ADC pre_trigger flag in the PDB module.
Definition: pdb_driver.c:310
void PDB_DRV_ClearAdcPreTriggerFlags(const uint32_t instance, const uint32_t chn, const uint32_t preChnMask)
Clears the ADC pre_trigger flag in the PDB module.
Definition: pdb_driver.c:274
pdb_clk_prescaler_mult_factor_t clkPreMultFactor
Definition: pdb_driver.h:125
pdb_load_value_mode_t loadValueMode
Definition: pdb_driver.h:122
void PDB_DRV_SoftTriggerCmd(const uint32_t instance)
Triggers the PDB with a software trigger.
Definition: pdb_driver.c:127
void PDB_DRV_LoadValuesCmd(const uint32_t instance)
Executes the command of loading values.
Definition: pdb_driver.c:188
void PDB_DRV_Deinit(const uint32_t instance)
De-initializes the PDB module.
Definition: pdb_driver.c:109
pdb_clk_prescaler_div_t clkPreDiv
Definition: pdb_driver.h:124
void PDB_DRV_SetCmpPulseOutDelayForHigh(const uint32_t instance, const uint32_t pulseChn, const uint32_t value)
Sets the CMP pulse out delay value for high in the PDB module.
Definition: pdb_driver.c:364
pdb_trigger_src_t triggerInput
Definition: pdb_driver.h:126
void PDB_DRV_Init(const uint32_t instance, const pdb_timer_config_t *userConfigPtr)
Initializes the PDB counter and triggers input.
Definition: pdb_driver.c:63
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
Defines the type of structure for configuring ADC's pre_trigger.
Definition: pdb_driver.h:137