The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Fri May 26 12:30:20 2017 +0100
Revision:
143:86740a56073b
Release 143 of the mbed library.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 143:86740a56073b 1 /*
AnnaBridge 143:86740a56073b 2 * Copyright (c) 2015, Freescale Semiconductor, Inc.
AnnaBridge 143:86740a56073b 3 * Copyright 2016-2017 NXP
AnnaBridge 143:86740a56073b 4 *
AnnaBridge 143:86740a56073b 5 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 143:86740a56073b 6 * are permitted provided that the following conditions are met:
AnnaBridge 143:86740a56073b 7 *
AnnaBridge 143:86740a56073b 8 * o Redistributions of source code must retain the above copyright notice, this list
AnnaBridge 143:86740a56073b 9 * of conditions and the following disclaimer.
AnnaBridge 143:86740a56073b 10 *
AnnaBridge 143:86740a56073b 11 * o Redistributions in binary form must reproduce the above copyright notice, this
AnnaBridge 143:86740a56073b 12 * list of conditions and the following disclaimer in the documentation and/or
AnnaBridge 143:86740a56073b 13 * other materials provided with the distribution.
AnnaBridge 143:86740a56073b 14 *
AnnaBridge 143:86740a56073b 15 * o Neither the name of the copyright holder nor the names of its
AnnaBridge 143:86740a56073b 16 * contributors may be used to endorse or promote products derived from this
AnnaBridge 143:86740a56073b 17 * software without specific prior written permission.
AnnaBridge 143:86740a56073b 18 *
AnnaBridge 143:86740a56073b 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
AnnaBridge 143:86740a56073b 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
AnnaBridge 143:86740a56073b 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 143:86740a56073b 22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
AnnaBridge 143:86740a56073b 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
AnnaBridge 143:86740a56073b 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
AnnaBridge 143:86740a56073b 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
AnnaBridge 143:86740a56073b 26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
AnnaBridge 143:86740a56073b 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
AnnaBridge 143:86740a56073b 28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 143:86740a56073b 29 */
AnnaBridge 143:86740a56073b 30 #ifndef _FSL_UART_EDMA_H_
AnnaBridge 143:86740a56073b 31 #define _FSL_UART_EDMA_H_
AnnaBridge 143:86740a56073b 32
AnnaBridge 143:86740a56073b 33 #include "fsl_uart.h"
AnnaBridge 143:86740a56073b 34 #include "fsl_dmamux.h"
AnnaBridge 143:86740a56073b 35 #include "fsl_edma.h"
AnnaBridge 143:86740a56073b 36
AnnaBridge 143:86740a56073b 37 /*!
AnnaBridge 143:86740a56073b 38 * @addtogroup uart_edma_driver
AnnaBridge 143:86740a56073b 39 * @{
AnnaBridge 143:86740a56073b 40 */
AnnaBridge 143:86740a56073b 41
AnnaBridge 143:86740a56073b 42 /*******************************************************************************
AnnaBridge 143:86740a56073b 43 * Definitions
AnnaBridge 143:86740a56073b 44 ******************************************************************************/
AnnaBridge 143:86740a56073b 45
AnnaBridge 143:86740a56073b 46 /* Forward declaration of the handle typedef. */
AnnaBridge 143:86740a56073b 47 typedef struct _uart_edma_handle uart_edma_handle_t;
AnnaBridge 143:86740a56073b 48
AnnaBridge 143:86740a56073b 49 /*! @brief UART transfer callback function. */
AnnaBridge 143:86740a56073b 50 typedef void (*uart_edma_transfer_callback_t)(UART_Type *base,
AnnaBridge 143:86740a56073b 51 uart_edma_handle_t *handle,
AnnaBridge 143:86740a56073b 52 status_t status,
AnnaBridge 143:86740a56073b 53 void *userData);
AnnaBridge 143:86740a56073b 54
AnnaBridge 143:86740a56073b 55 /*!
AnnaBridge 143:86740a56073b 56 * @brief UART eDMA handle
AnnaBridge 143:86740a56073b 57 */
AnnaBridge 143:86740a56073b 58 struct _uart_edma_handle
AnnaBridge 143:86740a56073b 59 {
AnnaBridge 143:86740a56073b 60 uart_edma_transfer_callback_t callback; /*!< Callback function. */
AnnaBridge 143:86740a56073b 61 void *userData; /*!< UART callback function parameter.*/
AnnaBridge 143:86740a56073b 62 size_t rxDataSizeAll; /*!< Size of the data to receive. */
AnnaBridge 143:86740a56073b 63 size_t txDataSizeAll; /*!< Size of the data to send out. */
AnnaBridge 143:86740a56073b 64
AnnaBridge 143:86740a56073b 65 edma_handle_t *txEdmaHandle; /*!< The eDMA TX channel used. */
AnnaBridge 143:86740a56073b 66 edma_handle_t *rxEdmaHandle; /*!< The eDMA RX channel used. */
AnnaBridge 143:86740a56073b 67
AnnaBridge 143:86740a56073b 68 uint8_t nbytes; /*!< eDMA minor byte transfer count initially configured. */
AnnaBridge 143:86740a56073b 69
AnnaBridge 143:86740a56073b 70 volatile uint8_t txState; /*!< TX transfer state. */
AnnaBridge 143:86740a56073b 71 volatile uint8_t rxState; /*!< RX transfer state */
AnnaBridge 143:86740a56073b 72 };
AnnaBridge 143:86740a56073b 73
AnnaBridge 143:86740a56073b 74 /*******************************************************************************
AnnaBridge 143:86740a56073b 75 * API
AnnaBridge 143:86740a56073b 76 ******************************************************************************/
AnnaBridge 143:86740a56073b 77
AnnaBridge 143:86740a56073b 78 #if defined(__cplusplus)
AnnaBridge 143:86740a56073b 79 extern "C" {
AnnaBridge 143:86740a56073b 80 #endif
AnnaBridge 143:86740a56073b 81
AnnaBridge 143:86740a56073b 82 /*!
AnnaBridge 143:86740a56073b 83 * @name eDMA transactional
AnnaBridge 143:86740a56073b 84 * @{
AnnaBridge 143:86740a56073b 85 */
AnnaBridge 143:86740a56073b 86
AnnaBridge 143:86740a56073b 87 /*!
AnnaBridge 143:86740a56073b 88 * @brief Initializes the UART handle which is used in transactional functions.
AnnaBridge 143:86740a56073b 89 * @param base UART peripheral base address.
AnnaBridge 143:86740a56073b 90 * @param handle Pointer to the uart_edma_handle_t structure.
AnnaBridge 143:86740a56073b 91 * @param callback UART callback, NULL means no callback.
AnnaBridge 143:86740a56073b 92 * @param userData User callback function data.
AnnaBridge 143:86740a56073b 93 * @param rxEdmaHandle User-requested DMA handle for RX DMA transfer.
AnnaBridge 143:86740a56073b 94 * @param txEdmaHandle User-requested DMA handle for TX DMA transfer.
AnnaBridge 143:86740a56073b 95 */
AnnaBridge 143:86740a56073b 96 void UART_TransferCreateHandleEDMA(UART_Type *base,
AnnaBridge 143:86740a56073b 97 uart_edma_handle_t *handle,
AnnaBridge 143:86740a56073b 98 uart_edma_transfer_callback_t callback,
AnnaBridge 143:86740a56073b 99 void *userData,
AnnaBridge 143:86740a56073b 100 edma_handle_t *txEdmaHandle,
AnnaBridge 143:86740a56073b 101 edma_handle_t *rxEdmaHandle);
AnnaBridge 143:86740a56073b 102
AnnaBridge 143:86740a56073b 103 /*!
AnnaBridge 143:86740a56073b 104 * @brief Sends data using eDMA.
AnnaBridge 143:86740a56073b 105 *
AnnaBridge 143:86740a56073b 106 * This function sends data using eDMA. This is a non-blocking function, which returns
AnnaBridge 143:86740a56073b 107 * right away. When all data is sent, the send callback function is called.
AnnaBridge 143:86740a56073b 108 *
AnnaBridge 143:86740a56073b 109 * @param base UART peripheral base address.
AnnaBridge 143:86740a56073b 110 * @param handle UART handle pointer.
AnnaBridge 143:86740a56073b 111 * @param xfer UART eDMA transfer structure. See #uart_transfer_t.
AnnaBridge 143:86740a56073b 112 * @retval kStatus_Success if succeeded; otherwise failed.
AnnaBridge 143:86740a56073b 113 * @retval kStatus_UART_TxBusy Previous transfer ongoing.
AnnaBridge 143:86740a56073b 114 * @retval kStatus_InvalidArgument Invalid argument.
AnnaBridge 143:86740a56073b 115 */
AnnaBridge 143:86740a56073b 116 status_t UART_SendEDMA(UART_Type *base, uart_edma_handle_t *handle, uart_transfer_t *xfer);
AnnaBridge 143:86740a56073b 117
AnnaBridge 143:86740a56073b 118 /*!
AnnaBridge 143:86740a56073b 119 * @brief Receives data using eDMA.
AnnaBridge 143:86740a56073b 120 *
AnnaBridge 143:86740a56073b 121 * This function receives data using eDMA. This is a non-blocking function, which returns
AnnaBridge 143:86740a56073b 122 * right away. When all data is received, the receive callback function is called.
AnnaBridge 143:86740a56073b 123 *
AnnaBridge 143:86740a56073b 124 * @param base UART peripheral base address.
AnnaBridge 143:86740a56073b 125 * @param handle Pointer to the uart_edma_handle_t structure.
AnnaBridge 143:86740a56073b 126 * @param xfer UART eDMA transfer structure. See #uart_transfer_t.
AnnaBridge 143:86740a56073b 127 * @retval kStatus_Success if succeeded; otherwise failed.
AnnaBridge 143:86740a56073b 128 * @retval kStatus_UART_RxBusy Previous transfer ongoing.
AnnaBridge 143:86740a56073b 129 * @retval kStatus_InvalidArgument Invalid argument.
AnnaBridge 143:86740a56073b 130 */
AnnaBridge 143:86740a56073b 131 status_t UART_ReceiveEDMA(UART_Type *base, uart_edma_handle_t *handle, uart_transfer_t *xfer);
AnnaBridge 143:86740a56073b 132
AnnaBridge 143:86740a56073b 133 /*!
AnnaBridge 143:86740a56073b 134 * @brief Aborts the sent data using eDMA.
AnnaBridge 143:86740a56073b 135 *
AnnaBridge 143:86740a56073b 136 * This function aborts sent data using eDMA.
AnnaBridge 143:86740a56073b 137 *
AnnaBridge 143:86740a56073b 138 * @param base UART peripheral base address.
AnnaBridge 143:86740a56073b 139 * @param handle Pointer to the uart_edma_handle_t structure.
AnnaBridge 143:86740a56073b 140 */
AnnaBridge 143:86740a56073b 141 void UART_TransferAbortSendEDMA(UART_Type *base, uart_edma_handle_t *handle);
AnnaBridge 143:86740a56073b 142
AnnaBridge 143:86740a56073b 143 /*!
AnnaBridge 143:86740a56073b 144 * @brief Aborts the receive data using eDMA.
AnnaBridge 143:86740a56073b 145 *
AnnaBridge 143:86740a56073b 146 * This function aborts receive data using eDMA.
AnnaBridge 143:86740a56073b 147 *
AnnaBridge 143:86740a56073b 148 * @param base UART peripheral base address.
AnnaBridge 143:86740a56073b 149 * @param handle Pointer to the uart_edma_handle_t structure.
AnnaBridge 143:86740a56073b 150 */
AnnaBridge 143:86740a56073b 151 void UART_TransferAbortReceiveEDMA(UART_Type *base, uart_edma_handle_t *handle);
AnnaBridge 143:86740a56073b 152
AnnaBridge 143:86740a56073b 153 /*!
AnnaBridge 143:86740a56073b 154 * @brief Gets the number of bytes that have been written to UART TX register.
AnnaBridge 143:86740a56073b 155 *
AnnaBridge 143:86740a56073b 156 * This function gets the number of bytes that have been written to UART TX
AnnaBridge 143:86740a56073b 157 * register by DMA.
AnnaBridge 143:86740a56073b 158 *
AnnaBridge 143:86740a56073b 159 * @param base UART peripheral base address.
AnnaBridge 143:86740a56073b 160 * @param handle UART handle pointer.
AnnaBridge 143:86740a56073b 161 * @param count Send bytes count.
AnnaBridge 143:86740a56073b 162 * @retval kStatus_NoTransferInProgress No send in progress.
AnnaBridge 143:86740a56073b 163 * @retval kStatus_InvalidArgument Parameter is invalid.
AnnaBridge 143:86740a56073b 164 * @retval kStatus_Success Get successfully through the parameter \p count;
AnnaBridge 143:86740a56073b 165 */
AnnaBridge 143:86740a56073b 166 status_t UART_TransferGetSendCountEDMA(UART_Type *base, uart_edma_handle_t *handle, uint32_t *count);
AnnaBridge 143:86740a56073b 167
AnnaBridge 143:86740a56073b 168 /*!
AnnaBridge 143:86740a56073b 169 * @brief Gets the number of received bytes.
AnnaBridge 143:86740a56073b 170 *
AnnaBridge 143:86740a56073b 171 * This function gets the number of received bytes.
AnnaBridge 143:86740a56073b 172 *
AnnaBridge 143:86740a56073b 173 * @param base UART peripheral base address.
AnnaBridge 143:86740a56073b 174 * @param handle UART handle pointer.
AnnaBridge 143:86740a56073b 175 * @param count Receive bytes count.
AnnaBridge 143:86740a56073b 176 * @retval kStatus_NoTransferInProgress No receive in progress.
AnnaBridge 143:86740a56073b 177 * @retval kStatus_InvalidArgument Parameter is invalid.
AnnaBridge 143:86740a56073b 178 * @retval kStatus_Success Get successfully through the parameter \p count;
AnnaBridge 143:86740a56073b 179 */
AnnaBridge 143:86740a56073b 180 status_t UART_TransferGetReceiveCountEDMA(UART_Type *base, uart_edma_handle_t *handle, uint32_t *count);
AnnaBridge 143:86740a56073b 181
AnnaBridge 143:86740a56073b 182 /*@}*/
AnnaBridge 143:86740a56073b 183
AnnaBridge 143:86740a56073b 184 #if defined(__cplusplus)
AnnaBridge 143:86740a56073b 185 }
AnnaBridge 143:86740a56073b 186 #endif
AnnaBridge 143:86740a56073b 187
AnnaBridge 143:86740a56073b 188 /*! @}*/
AnnaBridge 143:86740a56073b 189
AnnaBridge 143:86740a56073b 190 #endif /* _FSL_UART_EDMA_H_ */