Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mbed-dev by
targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_K82F/drivers/fsl_flexio_uart_edma.h@154:37f96f9d4de2, 2017-01-04 (annotated)
- Committer:
- <>
- Date:
- Wed Jan 04 16:58:05 2017 +0000
- Revision:
- 154:37f96f9d4de2
This updates the lib to the mbed lib v133
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| <> | 154:37f96f9d4de2 | 1 | /* |
| <> | 154:37f96f9d4de2 | 2 | * Copyright (c) 2015, Freescale Semiconductor, Inc. |
| <> | 154:37f96f9d4de2 | 3 | * All rights reserved. |
| <> | 154:37f96f9d4de2 | 4 | * |
| <> | 154:37f96f9d4de2 | 5 | * Redistribution and use in source and binary forms, with or without modification, |
| <> | 154:37f96f9d4de2 | 6 | * are permitted provided that the following conditions are met: |
| <> | 154:37f96f9d4de2 | 7 | * |
| <> | 154:37f96f9d4de2 | 8 | * o Redistributions of source code must retain the above copyright notice, this list |
| <> | 154:37f96f9d4de2 | 9 | * of conditions and the following disclaimer. |
| <> | 154:37f96f9d4de2 | 10 | * |
| <> | 154:37f96f9d4de2 | 11 | * o Redistributions in binary form must reproduce the above copyright notice, this |
| <> | 154:37f96f9d4de2 | 12 | * list of conditions and the following disclaimer in the documentation and/or |
| <> | 154:37f96f9d4de2 | 13 | * other materials provided with the distribution. |
| <> | 154:37f96f9d4de2 | 14 | * |
| <> | 154:37f96f9d4de2 | 15 | * o Neither the name of Freescale Semiconductor, Inc. nor the names of its |
| <> | 154:37f96f9d4de2 | 16 | * contributors may be used to endorse or promote products derived from this |
| <> | 154:37f96f9d4de2 | 17 | * software without specific prior written permission. |
| <> | 154:37f96f9d4de2 | 18 | * |
| <> | 154:37f96f9d4de2 | 19 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
| <> | 154:37f96f9d4de2 | 20 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| <> | 154:37f96f9d4de2 | 21 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| <> | 154:37f96f9d4de2 | 22 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR |
| <> | 154:37f96f9d4de2 | 23 | * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| <> | 154:37f96f9d4de2 | 24 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| <> | 154:37f96f9d4de2 | 25 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
| <> | 154:37f96f9d4de2 | 26 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| <> | 154:37f96f9d4de2 | 27 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
| <> | 154:37f96f9d4de2 | 28 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| <> | 154:37f96f9d4de2 | 29 | */ |
| <> | 154:37f96f9d4de2 | 30 | #ifndef _FSL_FLEXIO_UART_EDMA_H_ |
| <> | 154:37f96f9d4de2 | 31 | #define _FSL_FLEXIO_UART_EDMA_H_ |
| <> | 154:37f96f9d4de2 | 32 | |
| <> | 154:37f96f9d4de2 | 33 | #include "fsl_flexio_uart.h" |
| <> | 154:37f96f9d4de2 | 34 | #include "fsl_dmamux.h" |
| <> | 154:37f96f9d4de2 | 35 | #include "fsl_edma.h" |
| <> | 154:37f96f9d4de2 | 36 | |
| <> | 154:37f96f9d4de2 | 37 | /*! |
| <> | 154:37f96f9d4de2 | 38 | * @addtogroup flexio_edma_uart |
| <> | 154:37f96f9d4de2 | 39 | * @{ |
| <> | 154:37f96f9d4de2 | 40 | */ |
| <> | 154:37f96f9d4de2 | 41 | |
| <> | 154:37f96f9d4de2 | 42 | /******************************************************************************* |
| <> | 154:37f96f9d4de2 | 43 | * Definitions |
| <> | 154:37f96f9d4de2 | 44 | ******************************************************************************/ |
| <> | 154:37f96f9d4de2 | 45 | |
| <> | 154:37f96f9d4de2 | 46 | /* Forward declaration of the handle typedef. */ |
| <> | 154:37f96f9d4de2 | 47 | typedef struct _flexio_uart_edma_handle flexio_uart_edma_handle_t; |
| <> | 154:37f96f9d4de2 | 48 | |
| <> | 154:37f96f9d4de2 | 49 | /*! @brief UART transfer callback function. */ |
| <> | 154:37f96f9d4de2 | 50 | typedef void (*flexio_uart_edma_transfer_callback_t)(FLEXIO_UART_Type *base, |
| <> | 154:37f96f9d4de2 | 51 | flexio_uart_edma_handle_t *handle, |
| <> | 154:37f96f9d4de2 | 52 | status_t status, |
| <> | 154:37f96f9d4de2 | 53 | void *userData); |
| <> | 154:37f96f9d4de2 | 54 | |
| <> | 154:37f96f9d4de2 | 55 | /*! |
| <> | 154:37f96f9d4de2 | 56 | * @brief UART eDMA handle |
| <> | 154:37f96f9d4de2 | 57 | */ |
| <> | 154:37f96f9d4de2 | 58 | struct _flexio_uart_edma_handle |
| <> | 154:37f96f9d4de2 | 59 | { |
| <> | 154:37f96f9d4de2 | 60 | flexio_uart_edma_transfer_callback_t callback; /*!< Callback function. */ |
| <> | 154:37f96f9d4de2 | 61 | void *userData; /*!< UART callback function parameter.*/ |
| <> | 154:37f96f9d4de2 | 62 | |
| <> | 154:37f96f9d4de2 | 63 | size_t txDataSizeAll; /*!< Total bytes to be sent. */ |
| <> | 154:37f96f9d4de2 | 64 | size_t rxDataSizeAll; /*!< Total bytes to be received. */ |
| <> | 154:37f96f9d4de2 | 65 | |
| <> | 154:37f96f9d4de2 | 66 | edma_handle_t *txEdmaHandle; /*!< The eDMA TX channel used. */ |
| <> | 154:37f96f9d4de2 | 67 | edma_handle_t *rxEdmaHandle; /*!< The eDMA RX channel used. */ |
| <> | 154:37f96f9d4de2 | 68 | |
| <> | 154:37f96f9d4de2 | 69 | uint8_t nbytes; /*!< eDMA minor byte transfer count initially configured. */ |
| <> | 154:37f96f9d4de2 | 70 | |
| <> | 154:37f96f9d4de2 | 71 | volatile uint8_t txState; /*!< TX transfer state. */ |
| <> | 154:37f96f9d4de2 | 72 | volatile uint8_t rxState; /*!< RX transfer state */ |
| <> | 154:37f96f9d4de2 | 73 | }; |
| <> | 154:37f96f9d4de2 | 74 | |
| <> | 154:37f96f9d4de2 | 75 | /******************************************************************************* |
| <> | 154:37f96f9d4de2 | 76 | * API |
| <> | 154:37f96f9d4de2 | 77 | ******************************************************************************/ |
| <> | 154:37f96f9d4de2 | 78 | |
| <> | 154:37f96f9d4de2 | 79 | #if defined(__cplusplus) |
| <> | 154:37f96f9d4de2 | 80 | extern "C" { |
| <> | 154:37f96f9d4de2 | 81 | #endif |
| <> | 154:37f96f9d4de2 | 82 | |
| <> | 154:37f96f9d4de2 | 83 | /*! |
| <> | 154:37f96f9d4de2 | 84 | * @name eDMA transactional |
| <> | 154:37f96f9d4de2 | 85 | * @{ |
| <> | 154:37f96f9d4de2 | 86 | */ |
| <> | 154:37f96f9d4de2 | 87 | |
| <> | 154:37f96f9d4de2 | 88 | /*! |
| <> | 154:37f96f9d4de2 | 89 | * @brief Initializes the UART handle which is used in transactional functions. |
| <> | 154:37f96f9d4de2 | 90 | * |
| <> | 154:37f96f9d4de2 | 91 | * @param base Pointer to FLEXIO_UART_Type. |
| <> | 154:37f96f9d4de2 | 92 | * @param handle Pointer to flexio_uart_edma_handle_t structure. |
| <> | 154:37f96f9d4de2 | 93 | * @param callback The callback function. |
| <> | 154:37f96f9d4de2 | 94 | * @param userData The parameter of the callback function. |
| <> | 154:37f96f9d4de2 | 95 | * @param rxEdmaHandle User requested DMA handle for RX DMA transfer. |
| <> | 154:37f96f9d4de2 | 96 | * @param txEdmaHandle User requested DMA handle for TX DMA transfer. |
| <> | 154:37f96f9d4de2 | 97 | * @retval kStatus_Success Successfully create the handle. |
| <> | 154:37f96f9d4de2 | 98 | * @retval kStatus_OutOfRange The FlexIO SPI eDMA type/handle table out of range. |
| <> | 154:37f96f9d4de2 | 99 | */ |
| <> | 154:37f96f9d4de2 | 100 | status_t FLEXIO_UART_TransferCreateHandleEDMA(FLEXIO_UART_Type *base, |
| <> | 154:37f96f9d4de2 | 101 | flexio_uart_edma_handle_t *handle, |
| <> | 154:37f96f9d4de2 | 102 | flexio_uart_edma_transfer_callback_t callback, |
| <> | 154:37f96f9d4de2 | 103 | void *userData, |
| <> | 154:37f96f9d4de2 | 104 | edma_handle_t *txEdmaHandle, |
| <> | 154:37f96f9d4de2 | 105 | edma_handle_t *rxEdmaHandle); |
| <> | 154:37f96f9d4de2 | 106 | |
| <> | 154:37f96f9d4de2 | 107 | /*! |
| <> | 154:37f96f9d4de2 | 108 | * @brief Sends data using eDMA. |
| <> | 154:37f96f9d4de2 | 109 | * |
| <> | 154:37f96f9d4de2 | 110 | * This function sends data using eDMA. This is a non-blocking function, which returns |
| <> | 154:37f96f9d4de2 | 111 | * right away. When all data is sent out, the send callback function is called. |
| <> | 154:37f96f9d4de2 | 112 | * |
| <> | 154:37f96f9d4de2 | 113 | * @param base Pointer to FLEXIO_UART_Type |
| <> | 154:37f96f9d4de2 | 114 | * @param handle UART handle pointer. |
| <> | 154:37f96f9d4de2 | 115 | * @param xfer UART eDMA transfer structure, see #flexio_uart_transfer_t. |
| <> | 154:37f96f9d4de2 | 116 | * @retval kStatus_Success if succeed, others failed. |
| <> | 154:37f96f9d4de2 | 117 | * @retval kStatus_FLEXIO_UART_TxBusy Previous transfer on going. |
| <> | 154:37f96f9d4de2 | 118 | */ |
| <> | 154:37f96f9d4de2 | 119 | status_t FLEXIO_UART_TransferSendEDMA(FLEXIO_UART_Type *base, |
| <> | 154:37f96f9d4de2 | 120 | flexio_uart_edma_handle_t *handle, |
| <> | 154:37f96f9d4de2 | 121 | flexio_uart_transfer_t *xfer); |
| <> | 154:37f96f9d4de2 | 122 | |
| <> | 154:37f96f9d4de2 | 123 | /*! |
| <> | 154:37f96f9d4de2 | 124 | * @brief Receives data using eDMA. |
| <> | 154:37f96f9d4de2 | 125 | * |
| <> | 154:37f96f9d4de2 | 126 | * This function receives data using eDMA. This is a non-blocking function, which returns |
| <> | 154:37f96f9d4de2 | 127 | * right away. When all data is received, the receive callback function is called. |
| <> | 154:37f96f9d4de2 | 128 | * |
| <> | 154:37f96f9d4de2 | 129 | * @param base Pointer to FLEXIO_UART_Type |
| <> | 154:37f96f9d4de2 | 130 | * @param handle Pointer to flexio_uart_edma_handle_t structure |
| <> | 154:37f96f9d4de2 | 131 | * @param xfer UART eDMA transfer structure, see #flexio_uart_transfer_t. |
| <> | 154:37f96f9d4de2 | 132 | * @retval kStatus_Success if succeed, others failed. |
| <> | 154:37f96f9d4de2 | 133 | * @retval kStatus_UART_RxBusy Previous transfer on going. |
| <> | 154:37f96f9d4de2 | 134 | */ |
| <> | 154:37f96f9d4de2 | 135 | status_t FLEXIO_UART_TransferReceiveEDMA(FLEXIO_UART_Type *base, |
| <> | 154:37f96f9d4de2 | 136 | flexio_uart_edma_handle_t *handle, |
| <> | 154:37f96f9d4de2 | 137 | flexio_uart_transfer_t *xfer); |
| <> | 154:37f96f9d4de2 | 138 | |
| <> | 154:37f96f9d4de2 | 139 | /*! |
| <> | 154:37f96f9d4de2 | 140 | * @brief Aborts the sent data which using eDMA. |
| <> | 154:37f96f9d4de2 | 141 | * |
| <> | 154:37f96f9d4de2 | 142 | * This function aborts sent data which using eDMA. |
| <> | 154:37f96f9d4de2 | 143 | * |
| <> | 154:37f96f9d4de2 | 144 | * @param base Pointer to FLEXIO_UART_Type |
| <> | 154:37f96f9d4de2 | 145 | * @param handle Pointer to flexio_uart_edma_handle_t structure |
| <> | 154:37f96f9d4de2 | 146 | */ |
| <> | 154:37f96f9d4de2 | 147 | void FLEXIO_UART_TransferAbortSendEDMA(FLEXIO_UART_Type *base, flexio_uart_edma_handle_t *handle); |
| <> | 154:37f96f9d4de2 | 148 | |
| <> | 154:37f96f9d4de2 | 149 | /*! |
| <> | 154:37f96f9d4de2 | 150 | * @brief Aborts the receive data which using eDMA. |
| <> | 154:37f96f9d4de2 | 151 | * |
| <> | 154:37f96f9d4de2 | 152 | * This function aborts the receive data which using eDMA. |
| <> | 154:37f96f9d4de2 | 153 | * |
| <> | 154:37f96f9d4de2 | 154 | * @param base Pointer to FLEXIO_UART_Type |
| <> | 154:37f96f9d4de2 | 155 | * @param handle Pointer to flexio_uart_edma_handle_t structure |
| <> | 154:37f96f9d4de2 | 156 | */ |
| <> | 154:37f96f9d4de2 | 157 | void FLEXIO_UART_TransferAbortReceiveEDMA(FLEXIO_UART_Type *base, flexio_uart_edma_handle_t *handle); |
| <> | 154:37f96f9d4de2 | 158 | |
| <> | 154:37f96f9d4de2 | 159 | /*! |
| <> | 154:37f96f9d4de2 | 160 | * @brief Gets the number of bytes sent out. |
| <> | 154:37f96f9d4de2 | 161 | * |
| <> | 154:37f96f9d4de2 | 162 | * This function gets the number of bytes sent out. |
| <> | 154:37f96f9d4de2 | 163 | * |
| <> | 154:37f96f9d4de2 | 164 | * @param base Pointer to FLEXIO_UART_Type |
| <> | 154:37f96f9d4de2 | 165 | * @param handle Pointer to flexio_uart_edma_handle_t structure |
| <> | 154:37f96f9d4de2 | 166 | * @param count Number of bytes sent so far by the non-blocking transaction. |
| <> | 154:37f96f9d4de2 | 167 | * @retval kStatus_NoTransferInProgress transfer has finished or no transfer in progress. |
| <> | 154:37f96f9d4de2 | 168 | * @retval kStatus_Success Successfully return the count. |
| <> | 154:37f96f9d4de2 | 169 | */ |
| <> | 154:37f96f9d4de2 | 170 | status_t FLEXIO_UART_TransferGetSendCountEDMA(FLEXIO_UART_Type *base, flexio_uart_edma_handle_t *handle, size_t *count); |
| <> | 154:37f96f9d4de2 | 171 | |
| <> | 154:37f96f9d4de2 | 172 | /*! |
| <> | 154:37f96f9d4de2 | 173 | * @brief Gets the number of bytes received. |
| <> | 154:37f96f9d4de2 | 174 | * |
| <> | 154:37f96f9d4de2 | 175 | * This function gets the number of bytes received. |
| <> | 154:37f96f9d4de2 | 176 | * |
| <> | 154:37f96f9d4de2 | 177 | * @param base Pointer to FLEXIO_UART_Type |
| <> | 154:37f96f9d4de2 | 178 | * @param handle Pointer to flexio_uart_edma_handle_t structure |
| <> | 154:37f96f9d4de2 | 179 | * @param count Number of bytes received so far by the non-blocking transaction. |
| <> | 154:37f96f9d4de2 | 180 | * @retval kStatus_NoTransferInProgress transfer has finished or no transfer in progress. |
| <> | 154:37f96f9d4de2 | 181 | * @retval kStatus_Success Successfully return the count. |
| <> | 154:37f96f9d4de2 | 182 | */ |
| <> | 154:37f96f9d4de2 | 183 | status_t FLEXIO_UART_TransferGetReceiveCountEDMA(FLEXIO_UART_Type *base, |
| <> | 154:37f96f9d4de2 | 184 | flexio_uart_edma_handle_t *handle, |
| <> | 154:37f96f9d4de2 | 185 | size_t *count); |
| <> | 154:37f96f9d4de2 | 186 | |
| <> | 154:37f96f9d4de2 | 187 | /*@}*/ |
| <> | 154:37f96f9d4de2 | 188 | |
| <> | 154:37f96f9d4de2 | 189 | #if defined(__cplusplus) |
| <> | 154:37f96f9d4de2 | 190 | } |
| <> | 154:37f96f9d4de2 | 191 | #endif |
| <> | 154:37f96f9d4de2 | 192 | |
| <> | 154:37f96f9d4de2 | 193 | /*! @}*/ |
| <> | 154:37f96f9d4de2 | 194 | |
| <> | 154:37f96f9d4de2 | 195 | #endif /* _FSL_UART_EDMA_H_ */ |
