S32 SDK
lpit_driver.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2016, 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 
40 #ifndef LPIT_DRIVER_H
41 #define LPIT_DRIVER_H
42 
43 #include "lpit_hal.h"
44 #include "interrupt_manager.h"
45 #include "clock_manager.h"
46 #include "status.h"
47 
53 /*******************************************************************************
54  * Definitions
55  ******************************************************************************/
57 #define MAX_PERIOD_COUNT (0xFFFFFFFFU)
58 
59 #define MAX_PERIOD_COUNT_IN_DUAL_16BIT_MODE (0x1FFFEU)
60 
61 #define MAX_PERIOD_COUNT_16_BIT (0xFFFFU)
62 
69 typedef enum
70 {
74 
82 typedef struct
83 {
89 
95 typedef struct
96 {
99  uint32_t period;
101  uint32_t triggerSelect;
114 
115 
116 /*******************************************************************************
117  * API
118  ******************************************************************************/
119 
120 #if defined(__cplusplus)
121 extern "C" {
122 #endif
123 
150 void LPIT_DRV_Init(uint32_t instance,
151  const lpit_user_config_t * userConfig);
152 
161 void LPIT_DRV_Deinit(uint32_t instance);
162 
201 status_t LPIT_DRV_InitChannel(uint32_t instance,
202  uint32_t channel,
203  const lpit_user_channel_config_t * userChannelConfig);
204 
205 /* @} */
206 
227 void LPIT_DRV_StartTimerChannels(uint32_t instance,
228  uint32_t mask);
229 
246 void LPIT_DRV_StopTimerChannels(uint32_t instance,
247  uint32_t mask);
248 
249 /* @} */
250 
273 status_t LPIT_DRV_SetTimerPeriodByUs(uint32_t instance,
274  uint32_t channel,
275  uint32_t periodUs);
276 
296  uint32_t channel,
297  uint16_t periodHigh,
298  uint16_t periodLow);
299 
311 uint64_t LPIT_DRV_GetTimerPeriodByUs(uint32_t instance,
312  uint32_t channel);
313 
329 uint64_t LPIT_DRV_GetCurrentTimerUs(uint32_t instance,
330  uint32_t channel);
331 
345 void LPIT_DRV_SetTimerPeriodByCount(uint32_t instance,
346  uint32_t channel,
347  uint32_t count);
348 
364 void LPIT_DRV_SetTimerPeriodInDual16ModeByCount(uint32_t instance,
365  uint32_t channel,
366  uint16_t periodHigh,
367  uint16_t periodLow);
368 
378 uint32_t LPIT_DRV_GetTimerPeriodByCount(uint32_t instance,
379  uint32_t channel);
380 
392 uint32_t LPIT_DRV_GetCurrentTimerCount(uint32_t instance,
393  uint32_t channel);
394 /* @} */
395 
417 uint32_t LPIT_DRV_GetInterruptFlagTimerChannels(uint32_t instance,
418  uint32_t mask);
419 
434 void LPIT_DRV_ClearInterruptFlagTimerChannels(uint32_t instance,
435  uint32_t mask);
436 
437 /* @} */
438 
439 #if defined(__cplusplus)
440 }
441 #endif
442 
445 #endif /* LPIT_DRIVER_H*/
446 /*******************************************************************************
447  * EOF
448  ******************************************************************************/
lpit_period_units_t
Unit options for LPIT period.
Definition: lpit_driver.h:69
lpit_timer_modes_t timerMode
Definition: lpit_driver.h:97
lpit_timer_modes_t
Mode options available for the LPIT timer Implements : lpit_timer_modes_t_Class.
Definition: lpit_hal.h:60
void LPIT_DRV_SetTimerPeriodByCount(uint32_t instance, uint32_t channel, uint32_t count)
Sets the timer channel period in count unit.
Definition: lpit_driver.c:500
void LPIT_DRV_StopTimerChannels(uint32_t instance, uint32_t mask)
Stops the timer channel counting.
Definition: lpit_driver.c:244
uint64_t LPIT_DRV_GetTimerPeriodByUs(uint32_t instance, uint32_t channel)
Gets the timer channel period in microseconds.
Definition: lpit_driver.c:394
lpit_trigger_source_t triggerSource
Definition: lpit_driver.h:100
uint64_t LPIT_DRV_GetCurrentTimerUs(uint32_t instance, uint32_t channel)
Gets the current timer channel counting value in microseconds.
Definition: lpit_driver.c:453
status_t LPIT_DRV_SetTimerPeriodInDual16ModeByUs(uint32_t instance, uint32_t channel, uint16_t periodHigh, uint16_t periodLow)
Sets the timer channel period in microseconds.
Definition: lpit_driver.c:341
void LPIT_DRV_Init(uint32_t instance, const lpit_user_config_t *userConfig)
Initializes the LPIT module.
Definition: lpit_driver.c:86
void LPIT_DRV_SetTimerPeriodInDual16ModeByCount(uint32_t instance, uint32_t channel, uint16_t periodHigh, uint16_t periodLow)
Sets the timer channel period in count unit.
Definition: lpit_driver.c:528
lpit_period_units_t periodUnits
Definition: lpit_driver.h:98
status_t LPIT_DRV_InitChannel(uint32_t instance, uint32_t channel, const lpit_user_channel_config_t *userChannelConfig)
Initializes the LPIT channel.
Definition: lpit_driver.c:148
void LPIT_DRV_ClearInterruptFlagTimerChannels(uint32_t instance, uint32_t mask)
Clears the interrupt flag of timer channels.
Definition: lpit_driver.c:642
status_t
Status return codes. Common error codes will be a unified enumeration (C enum) that will contain all ...
Definition: status.h:31
LPIT configuration structure.
Definition: lpit_driver.h:82
lpit_trigger_source_t
Trigger source options.
Definition: lpit_hal.h:75
Structure to configure the channel timer.
Definition: lpit_driver.h:95
uint32_t LPIT_DRV_GetTimerPeriodByCount(uint32_t instance, uint32_t channel)
Gets the current timer channel period in count unit.
Definition: lpit_driver.c:554
uint32_t LPIT_DRV_GetInterruptFlagTimerChannels(uint32_t instance, uint32_t mask)
Gets the current interrupt flag of timer channels.
Definition: lpit_driver.c:621
status_t LPIT_DRV_SetTimerPeriodByUs(uint32_t instance, uint32_t channel, uint32_t periodUs)
Sets the timer channel period in microseconds.
Definition: lpit_driver.c:270
void LPIT_DRV_Deinit(uint32_t instance)
De-Initializes the LPIT module.
Definition: lpit_driver.c:121
void LPIT_DRV_StartTimerChannels(uint32_t instance, uint32_t mask)
Starts the timer channel counting.
Definition: lpit_driver.c:220
uint32_t LPIT_DRV_GetCurrentTimerCount(uint32_t instance, uint32_t channel)
Gets the current timer channel counting value in count.
Definition: lpit_driver.c:588