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 <stdint.h>
44 #include <stdbool.h>
45 #include "status.h"
46 
52 /*******************************************************************************
53  * Definitions
54  ******************************************************************************/
56 #define MAX_PERIOD_COUNT (0xFFFFFFFFU)
57 
58 #define MAX_PERIOD_COUNT_IN_DUAL_16BIT_MODE (0x1FFFEU)
59 
60 #define MAX_PERIOD_COUNT_16_BIT (0xFFFFU)
61 
66 typedef struct
67 {
68  uint32_t majorVersionNumber;
69  uint32_t minorVersionNumber;
70  uint32_t featureNumber;
74 
79 typedef enum
80 {
86 
94 typedef enum
95 {
99 
106 typedef enum
107 {
111 
119 typedef struct
120 {
126 
132 typedef struct
133 {
136  uint32_t period;
138  uint32_t triggerSelect;
151 
152 /*******************************************************************************
153  * API
154  ******************************************************************************/
155 
156 #if defined(__cplusplus)
157 extern "C" {
158 #endif
159 
186 void LPIT_DRV_Init(uint32_t instance,
187  const lpit_user_config_t * userConfig);
188 
197 void LPIT_DRV_Deinit(uint32_t instance);
198 
237 status_t LPIT_DRV_InitChannel(uint32_t instance,
238  uint32_t channel,
239  const lpit_user_channel_config_t * userChannelConfig);
240 
241 /* @} */
242 
263 void LPIT_DRV_StartTimerChannels(uint32_t instance,
264  uint32_t mask);
265 
282 void LPIT_DRV_StopTimerChannels(uint32_t instance,
283  uint32_t mask);
284 
285 /* @} */
286 
309 status_t LPIT_DRV_SetTimerPeriodByUs(uint32_t instance,
310  uint32_t channel,
311  uint32_t periodUs);
312 
332  uint32_t channel,
333  uint16_t periodHigh,
334  uint16_t periodLow);
335 
347 uint64_t LPIT_DRV_GetTimerPeriodByUs(uint32_t instance,
348  uint32_t channel);
349 
365 uint64_t LPIT_DRV_GetCurrentTimerUs(uint32_t instance,
366  uint32_t channel);
367 
381 void LPIT_DRV_SetTimerPeriodByCount(uint32_t instance,
382  uint32_t channel,
383  uint32_t count);
384 
400 void LPIT_DRV_SetTimerPeriodInDual16ModeByCount(uint32_t instance,
401  uint32_t channel,
402  uint16_t periodHigh,
403  uint16_t periodLow);
404 
414 uint32_t LPIT_DRV_GetTimerPeriodByCount(uint32_t instance,
415  uint32_t channel);
416 
428 uint32_t LPIT_DRV_GetCurrentTimerCount(uint32_t instance,
429  uint32_t channel);
430 /* @} */
431 
453 uint32_t LPIT_DRV_GetInterruptFlagTimerChannels(uint32_t instance,
454  uint32_t mask);
455 
470 void LPIT_DRV_ClearInterruptFlagTimerChannels(uint32_t instance,
471  uint32_t mask);
472 
473 /* @} */
474 
475 #if defined(__cplusplus)
476 }
477 #endif
478 
481 #endif /* LPIT_DRIVER_H*/
482 /*******************************************************************************
483  * EOF
484  ******************************************************************************/
lpit_period_units_t
Unit options for LPIT period.
Definition: lpit_driver.h:106
lpit_timer_modes_t timerMode
Definition: lpit_driver.h:134
Hardware information of LPIT module Implements : lpit_module_information_t_Class. ...
Definition: lpit_driver.h:66
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:94
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:137
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
uint32_t numberOfExternalTriggerInputs
Definition: lpit_driver.h:71
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:135
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:646
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:119
Structure to configure the channel timer.
Definition: lpit_driver.h:132
lpit_timer_modes_t
Mode options available for the LPIT timer Implements : lpit_timer_modes_t_Class.
Definition: lpit_driver.h:79
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
uint32_t LPIT_DRV_GetInterruptFlagTimerChannels(uint32_t instance, uint32_t mask)
Gets the current interrupt flag of timer channels.
Definition: lpit_driver.c:625
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_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