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 
44 #ifndef LPIT_DRIVER_H
45 #define LPIT_DRIVER_H
46 
47 #include <stdint.h>
48 #include <stdbool.h>
49 #include <stddef.h>
50 #include "status.h"
51 
57 /*******************************************************************************
58  * Definitions
59  ******************************************************************************/
61 #define MAX_PERIOD_COUNT (0xFFFFFFFFU)
62 
63 #define MAX_PERIOD_COUNT_IN_DUAL_16BIT_MODE (0x1FFFEU)
64 
65 #define MAX_PERIOD_COUNT_16_BIT (0xFFFFU)
66 
71 typedef enum
72 {
78 
86 typedef enum
87 {
91 
98 typedef enum
99 {
103 
111 typedef struct
112 {
118 
124 typedef struct
125 {
128  uint32_t period;
130  uint32_t triggerSelect;
143 
144 /*******************************************************************************
145  * API
146  ******************************************************************************/
147 
148 #if defined(__cplusplus)
149 extern "C" {
150 #endif
151 
178 void LPIT_DRV_Init(uint32_t instance,
179  const lpit_user_config_t * userConfig);
180 
189 void LPIT_DRV_Deinit(uint32_t instance);
190 
229 status_t LPIT_DRV_InitChannel(uint32_t instance,
230  uint32_t channel,
231  const lpit_user_channel_config_t * userChannelConfig);
232 
233 /* @} */
234 
255 void LPIT_DRV_StartTimerChannels(uint32_t instance,
256  uint32_t mask);
257 
274 void LPIT_DRV_StopTimerChannels(uint32_t instance,
275  uint32_t mask);
276 
277 /* @} */
278 
301 status_t LPIT_DRV_SetTimerPeriodByUs(uint32_t instance,
302  uint32_t channel,
303  uint32_t periodUs);
304 
324  uint32_t channel,
325  uint16_t periodHigh,
326  uint16_t periodLow);
327 
339 uint64_t LPIT_DRV_GetTimerPeriodByUs(uint32_t instance,
340  uint32_t channel);
341 
357 uint64_t LPIT_DRV_GetCurrentTimerUs(uint32_t instance,
358  uint32_t channel);
359 
373 void LPIT_DRV_SetTimerPeriodByCount(uint32_t instance,
374  uint32_t channel,
375  uint32_t count);
376 
392 void LPIT_DRV_SetTimerPeriodInDual16ModeByCount(uint32_t instance,
393  uint32_t channel,
394  uint16_t periodHigh,
395  uint16_t periodLow);
396 
406 uint32_t LPIT_DRV_GetTimerPeriodByCount(uint32_t instance,
407  uint32_t channel);
408 
420 uint32_t LPIT_DRV_GetCurrentTimerCount(uint32_t instance,
421  uint32_t channel);
422 /* @} */
423 
442 void LPIT_DRV_EnableTimerChannelInterrupt(uint32_t instance,
443  uint32_t mask);
444 
458 void LPIT_DRV_DisableTimerChannelInterrupt(uint32_t instance,
459  uint32_t mask);
460 
477 uint32_t LPIT_DRV_GetInterruptFlagTimerChannels(uint32_t instance,
478  uint32_t mask);
479 
494 void LPIT_DRV_ClearInterruptFlagTimerChannels(uint32_t instance,
495  uint32_t mask);
496 
497 /* @} */
498 
499 #if defined(__cplusplus)
500 }
501 #endif
502 
505 #endif /* LPIT_DRIVER_H*/
506 /*******************************************************************************
507  * EOF
508  ******************************************************************************/
lpit_period_units_t
Unit options for LPIT period.
Definition: lpit_driver.h:98
lpit_timer_modes_t timerMode
Definition: lpit_driver.h:126
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:504
lpit_trigger_source_t
Trigger source options.
Definition: lpit_driver.h:86
void LPIT_DRV_StopTimerChannels(uint32_t instance, uint32_t mask)
Stops the timer channel counting.
Definition: lpit_driver.c:248
uint64_t LPIT_DRV_GetTimerPeriodByUs(uint32_t instance, uint32_t channel)
Gets the timer channel period in microseconds.
Definition: lpit_driver.c:398
lpit_trigger_source_t triggerSource
Definition: lpit_driver.h:129
uint64_t LPIT_DRV_GetCurrentTimerUs(uint32_t instance, uint32_t channel)
Gets the current timer channel counting value in microseconds.
Definition: lpit_driver.c:457
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:345
void LPIT_DRV_Init(uint32_t instance, const lpit_user_config_t *userConfig)
Initializes the LPIT module.
Definition: lpit_driver.c:90
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:532
lpit_period_units_t periodUnits
Definition: lpit_driver.h:127
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:152
void LPIT_DRV_ClearInterruptFlagTimerChannels(uint32_t instance, uint32_t mask)
Clears the interrupt flag of timer channels.
Definition: lpit_driver.c:688
status_t
Status return codes. Common error codes will be a unified enumeration (C enum) that will contain all ...
Definition: status.h:44
LPIT configuration structure.
Definition: lpit_driver.h:111
Structure to configure the channel timer.
Definition: lpit_driver.h:124
lpit_timer_modes_t
Mode options available for the LPIT timer Implements : lpit_timer_modes_t_Class.
Definition: lpit_driver.h:71
uint32_t LPIT_DRV_GetTimerPeriodByCount(uint32_t instance, uint32_t channel)
Gets the current timer channel period in count unit.
Definition: lpit_driver.c:558
void LPIT_DRV_EnableTimerChannelInterrupt(uint32_t instance, uint32_t mask)
Enables the interrupt generation of timer channel.
Definition: lpit_driver.c:624
uint32_t LPIT_DRV_GetInterruptFlagTimerChannels(uint32_t instance, uint32_t mask)
Gets the current interrupt flag of timer channels.
Definition: lpit_driver.c:667
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:274
void LPIT_DRV_Deinit(uint32_t instance)
De-Initializes the LPIT module.
Definition: lpit_driver.c:125
void LPIT_DRV_DisableTimerChannelInterrupt(uint32_t instance, uint32_t mask)
Disables the interrupt generation of timer channel.
Definition: lpit_driver.c:645
void LPIT_DRV_StartTimerChannels(uint32_t instance, uint32_t mask)
Starts the timer channel counting.
Definition: lpit_driver.c:224
uint32_t LPIT_DRV_GetCurrentTimerCount(uint32_t instance, uint32_t channel)
Gets the current timer channel counting value in count.
Definition: lpit_driver.c:592