S32 SDK
lpuart_driver.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc.
3  * Copyright 2016 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 LPUART_DRIVER_H__
20 #define LPUART_DRIVER_H__
21 
22 #include <stddef.h>
23 #include "lpuart_hal.h"
24 #include "clock_manager.h"
25 #include "interrupt_manager.h"
26 #include "osif.h"
27 #if FEATURE_LPUART_HAS_DMA_ENABLE
28 #include "edma_driver.h"
29 #endif
30 
37 /*******************************************************************************
38  * Definitions
39  ******************************************************************************/
40 
45 typedef void (* lpuart_rx_callback_t)(uint32_t instance, void * lpuartState);
46 
51 typedef void (* lpuart_tx_callback_t)(uint32_t instance, void * lpuartState);
52 
53 /*******************************************************************************
54  * Variables
55  ******************************************************************************/
56 
59 
62 
65 
70 typedef enum
71 {
75 
84 typedef struct
85 {
86  const uint8_t * txBuff;
87  uint8_t * rxBuff;
88  volatile uint32_t txSize;
89  volatile uint32_t rxSize;
90  volatile bool isTxBusy;
91  volatile bool isRxBusy;
92  volatile bool isTxBlocking;
93  volatile bool isRxBlocking;
108 #if FEATURE_LPUART_HAS_DMA_ENABLE
109  uint8_t rxDMAChannel;
110  uint8_t txDMAChannel;
111 #endif
112  semaphore_t rxComplete;
113  semaphore_t txComplete;
117 
122 typedef struct
123 {
124  uint32_t baudRate;
132  uint8_t rxDMAChannel;
134  uint8_t txDMAChannel;
137 
138 /*******************************************************************************
139  * API
140  ******************************************************************************/
141 
142 #if defined(__cplusplus)
143 extern "C" {
144 #endif
145 
163 status_t LPUART_DRV_Init(uint32_t instance, lpuart_state_t * lpuartStatePtr,
164  const lpuart_user_config_t * lpuartUserConfig);
165 
173 status_t LPUART_DRV_Deinit(uint32_t instance);
174 
188  lpuart_rx_callback_t function,
189  void * callbackParam);
190 
204  lpuart_tx_callback_t function,
205  void * callbackParam);
206 
221 status_t LPUART_DRV_SendDataBlocking(uint32_t instance,
222  const uint8_t * txBuff,
223  uint32_t txSize,
224  uint32_t timeout);
225 
240 status_t LPUART_DRV_SendData(uint32_t instance,
241  const uint8_t * txBuff,
242  uint32_t txSize);
243 
258 status_t LPUART_DRV_GetTransmitStatus(uint32_t instance, uint32_t * bytesRemaining);
259 
266 status_t LPUART_DRV_AbortSendingData(uint32_t instance);
267 
282 status_t LPUART_DRV_ReceiveDataBlocking(uint32_t instance,
283  uint8_t * rxBuff,
284  uint32_t rxSize,
285  uint32_t timeout);
286 
301 status_t LPUART_DRV_ReceiveData(uint32_t instance,
302  uint8_t * rxBuff,
303  uint32_t rxSize);
304 
319 status_t LPUART_DRV_GetReceiveStatus(uint32_t instance, uint32_t * bytesRemaining);
320 
328 status_t LPUART_DRV_AbortReceivingData(uint32_t instance);
329 
332 #if defined(__cplusplus)
333 }
334 #endif
335 
338 #endif /* LPUART_DRIVER_H__ */
339 /******************************************************************************/
340 /* EOF */
341 /******************************************************************************/
status_t LPUART_DRV_AbortSendingData(uint32_t instance)
Terminates a non-blocking transmission early.
status_t LPUART_DRV_SendDataBlocking(uint32_t instance, const uint8_t *txBuff, uint32_t txSize, uint32_t timeout)
Sends data out through the LPUART module using a blocking method.
status_t LPUART_DRV_Deinit(uint32_t instance)
Shuts down the LPUART by disabling interrupts and transmitter/receiver.
const clock_names_t g_lpuartClkNames[LPUART_INSTANCE_COUNT]
Table to save LPUART indexes in PCC register map for clock configuration.
Definition: lpuart_common.c:93
status_t LPUART_DRV_SendData(uint32_t instance, const uint8_t *txBuff, uint32_t txSize)
Sends data out through the LPUART module using a non-blocking method. This enables an a-sync method f...
volatile bool isRxBlocking
Definition: lpuart_driver.h:93
void * txCallbackParam
status_t LPUART_DRV_AbortReceivingData(uint32_t instance)
Terminates a non-blocking receive early.
void(* lpuart_rx_callback_t)(uint32_t instance, void *lpuartState)
LPUART receive callback function type.
Definition: lpuart_driver.h:45
lpuart_tx_callback_t LPUART_DRV_InstallTxCallback(uint32_t instance, lpuart_tx_callback_t function, void *callbackParam)
Installs callback function for the LPUART transmit.
uint8_t txDMAChannel
void(* lpuart_tx_callback_t)(uint32_t instance, void *lpuartState)
LPUART transmit callback function type.
Definition: lpuart_driver.h:51
lpuart_tx_callback_t txCallback
IRQn_Type
Defines the Interrupt Numbers definitions.
Definition: S32K144.h:269
volatile bool isRxBusy
Definition: lpuart_driver.h:91
semaphore_t rxComplete
void * rxCallbackParam
lpuart_bit_count_per_char_t bitCountPerChar
lpuart_transfer_type_t transferType
lpuart_parity_mode_t parityMode
lpuart_rx_callback_t LPUART_DRV_InstallRxCallback(uint32_t instance, lpuart_rx_callback_t function, void *callbackParam)
Installs callback function for the LPUART receive.
status_t LPUART_DRV_ReceiveData(uint32_t instance, uint8_t *rxBuff, uint32_t rxSize)
Gets data from the LPUART module by using a non-blocking method. This enables an a-sync method for re...
lpuart_transfer_type_t
Type of LPUART transfer (based on interrupts or DMA).
Definition: lpuart_driver.h:70
semaphore_t txComplete
status_t
Status return codes. Common error codes will be a unified enumeration (C enum) that will contain all ...
Definition: status.h:31
uint8_t * rxBuff
Definition: lpuart_driver.h:87
uint8_t rxDMAChannel
lpuart_parity_mode_t
LPUART parity mode.
Definition: lpuart_hal.h:78
lpuart_bit_count_per_char_t
LPUART number of bits in a character.
Definition: lpuart_hal.h:89
const uint8_t * txBuff
Definition: lpuart_driver.h:86
status_t LPUART_DRV_Init(uint32_t instance, lpuart_state_t *lpuartStatePtr, const lpuart_user_config_t *lpuartUserConfig)
Initializes an LPUART operation instance.
lpuart_rx_callback_t rxCallback
Definition: lpuart_driver.h:95
LPUART_Type *const g_lpuartBase[LPUART_INSTANCE_COUNT]
Table of base addresses for LPUART instances.
Definition: lpuart_common.c:87
const IRQn_Type g_lpuartRxTxIrqId[LPUART_INSTANCE_COUNT]
Table to save LPUART IRQ enumeration numbers defined in the CMSIS header file.
Definition: lpuart_common.c:90
volatile status_t transmitStatus
clock_names_t
Clock names.
status_t LPUART_DRV_ReceiveDataBlocking(uint32_t instance, uint8_t *rxBuff, uint32_t rxSize, uint32_t timeout)
Gets data from the LPUART module by using a blocking method. Blocking means that the function does no...
volatile uint32_t txSize
Definition: lpuart_driver.h:88
volatile bool isTxBlocking
Definition: lpuart_driver.h:92
LPUART configuration structure.
#define LPUART_INSTANCE_COUNT
Definition: S32K144.h:6683
volatile uint32_t rxSize
Definition: lpuart_driver.h:89
status_t LPUART_DRV_GetTransmitStatus(uint32_t instance, uint32_t *bytesRemaining)
Returns whether the previous transmit is complete.
lpuart_transfer_type_t transferType
lpuart_bit_count_per_char_t bitCountPerChar
Definition: lpuart_driver.h:94
volatile status_t receiveStatus
Runtime state of the LPUART driver.
Definition: lpuart_driver.h:84
status_t LPUART_DRV_GetReceiveStatus(uint32_t instance, uint32_t *bytesRemaining)
Returns whether the previous receive is complete.
lpuart_stop_bit_count_t
LPUART number of stop bits.
Definition: lpuart_hal.h:68
volatile bool isTxBusy
Definition: lpuart_driver.h:90
lpuart_stop_bit_count_t stopBitCount