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:
Thu Nov 08 11:45:42 2018 +0000
Revision:
171:3a7713b1edbc
mbed library. Release version 164

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 171:3a7713b1edbc 1 /*
AnnaBridge 171:3a7713b1edbc 2 * Copyright (c) 2015, Freescale Semiconductor, Inc.
AnnaBridge 171:3a7713b1edbc 3 * All rights reserved.
AnnaBridge 171:3a7713b1edbc 4 *
AnnaBridge 171:3a7713b1edbc 5 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 171:3a7713b1edbc 6 * are permitted provided that the following conditions are met:
AnnaBridge 171:3a7713b1edbc 7 *
AnnaBridge 171:3a7713b1edbc 8 * o Redistributions of source code must retain the above copyright notice, this list
AnnaBridge 171:3a7713b1edbc 9 * of conditions and the following disclaimer.
AnnaBridge 171:3a7713b1edbc 10 *
AnnaBridge 171:3a7713b1edbc 11 * o Redistributions in binary form must reproduce the above copyright notice, this
AnnaBridge 171:3a7713b1edbc 12 * list of conditions and the following disclaimer in the documentation and/or
AnnaBridge 171:3a7713b1edbc 13 * other materials provided with the distribution.
AnnaBridge 171:3a7713b1edbc 14 *
AnnaBridge 171:3a7713b1edbc 15 * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
AnnaBridge 171:3a7713b1edbc 16 * contributors may be used to endorse or promote products derived from this
AnnaBridge 171:3a7713b1edbc 17 * software without specific prior written permission.
AnnaBridge 171:3a7713b1edbc 18 *
AnnaBridge 171:3a7713b1edbc 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
AnnaBridge 171:3a7713b1edbc 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
AnnaBridge 171:3a7713b1edbc 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 171:3a7713b1edbc 22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
AnnaBridge 171:3a7713b1edbc 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
AnnaBridge 171:3a7713b1edbc 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
AnnaBridge 171:3a7713b1edbc 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
AnnaBridge 171:3a7713b1edbc 26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
AnnaBridge 171:3a7713b1edbc 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
AnnaBridge 171:3a7713b1edbc 28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 171:3a7713b1edbc 29 */
AnnaBridge 171:3a7713b1edbc 30 #ifndef _FSL_FLEXIO_I2S_H_
AnnaBridge 171:3a7713b1edbc 31 #define _FSL_FLEXIO_I2S_H_
AnnaBridge 171:3a7713b1edbc 32
AnnaBridge 171:3a7713b1edbc 33 #include "fsl_common.h"
AnnaBridge 171:3a7713b1edbc 34 #include "fsl_flexio.h"
AnnaBridge 171:3a7713b1edbc 35
AnnaBridge 171:3a7713b1edbc 36 /*!
AnnaBridge 171:3a7713b1edbc 37 * @addtogroup flexio_i2s
AnnaBridge 171:3a7713b1edbc 38 * @{
AnnaBridge 171:3a7713b1edbc 39 */
AnnaBridge 171:3a7713b1edbc 40
AnnaBridge 171:3a7713b1edbc 41 /*! @file */
AnnaBridge 171:3a7713b1edbc 42
AnnaBridge 171:3a7713b1edbc 43 /*******************************************************************************
AnnaBridge 171:3a7713b1edbc 44 * Definitions
AnnaBridge 171:3a7713b1edbc 45 ******************************************************************************/
AnnaBridge 171:3a7713b1edbc 46
AnnaBridge 171:3a7713b1edbc 47 /*! @name Driver version */
AnnaBridge 171:3a7713b1edbc 48 /*@{*/
AnnaBridge 171:3a7713b1edbc 49 /*! @brief FlexIO I2S driver version 2.1.0. */
AnnaBridge 171:3a7713b1edbc 50 #define FSL_FLEXIO_I2S_DRIVER_VERSION (MAKE_VERSION(2, 1, 0))
AnnaBridge 171:3a7713b1edbc 51 /*@}*/
AnnaBridge 171:3a7713b1edbc 52
AnnaBridge 171:3a7713b1edbc 53 /*! @brief FlexIO I2S transfer status */
AnnaBridge 171:3a7713b1edbc 54 enum _flexio_i2s_status
AnnaBridge 171:3a7713b1edbc 55 {
AnnaBridge 171:3a7713b1edbc 56 kStatus_FLEXIO_I2S_Idle = MAKE_STATUS(kStatusGroup_FLEXIO_I2S, 0), /*!< FlexIO I2S is in idle state */
AnnaBridge 171:3a7713b1edbc 57 kStatus_FLEXIO_I2S_TxBusy = MAKE_STATUS(kStatusGroup_FLEXIO_I2S, 1), /*!< FlexIO I2S Tx is busy */
AnnaBridge 171:3a7713b1edbc 58 kStatus_FLEXIO_I2S_RxBusy = MAKE_STATUS(kStatusGroup_FLEXIO_I2S, 2), /*!< FlexIO I2S Tx is busy */
AnnaBridge 171:3a7713b1edbc 59 kStatus_FLEXIO_I2S_Error = MAKE_STATUS(kStatusGroup_FLEXIO_I2S, 3), /*!< FlexIO I2S error occurred */
AnnaBridge 171:3a7713b1edbc 60 kStatus_FLEXIO_I2S_QueueFull = MAKE_STATUS(kStatusGroup_FLEXIO_I2S, 4), /*!< FlexIO I2S transfer queue is full. */
AnnaBridge 171:3a7713b1edbc 61 };
AnnaBridge 171:3a7713b1edbc 62
AnnaBridge 171:3a7713b1edbc 63 /*! @brief Define FlexIO I2S access structure typedef */
AnnaBridge 171:3a7713b1edbc 64 typedef struct _flexio_i2s_type
AnnaBridge 171:3a7713b1edbc 65 {
AnnaBridge 171:3a7713b1edbc 66 FLEXIO_Type *flexioBase; /*!< FlexIO base pointer */
AnnaBridge 171:3a7713b1edbc 67 uint8_t txPinIndex; /*!< Tx data pin index in FlexIO pins */
AnnaBridge 171:3a7713b1edbc 68 uint8_t rxPinIndex; /*!< Rx data pin index */
AnnaBridge 171:3a7713b1edbc 69 uint8_t bclkPinIndex; /*!< Bit clock pin index */
AnnaBridge 171:3a7713b1edbc 70 uint8_t fsPinIndex; /*!< Frame sync pin index */
AnnaBridge 171:3a7713b1edbc 71 uint8_t txShifterIndex; /*!< Tx data shifter index */
AnnaBridge 171:3a7713b1edbc 72 uint8_t rxShifterIndex; /*!< Rx data shifter index */
AnnaBridge 171:3a7713b1edbc 73 uint8_t bclkTimerIndex; /*!< Bit clock timer index */
AnnaBridge 171:3a7713b1edbc 74 uint8_t fsTimerIndex; /*!< Frame sync timer index */
AnnaBridge 171:3a7713b1edbc 75 } FLEXIO_I2S_Type;
AnnaBridge 171:3a7713b1edbc 76
AnnaBridge 171:3a7713b1edbc 77 /*! @brief Master or slave mode */
AnnaBridge 171:3a7713b1edbc 78 typedef enum _flexio_i2s_master_slave
AnnaBridge 171:3a7713b1edbc 79 {
AnnaBridge 171:3a7713b1edbc 80 kFLEXIO_I2S_Master = 0x0U, /*!< Master mode */
AnnaBridge 171:3a7713b1edbc 81 kFLEXIO_I2S_Slave = 0x1U /*!< Slave mode */
AnnaBridge 171:3a7713b1edbc 82 } flexio_i2s_master_slave_t;
AnnaBridge 171:3a7713b1edbc 83
AnnaBridge 171:3a7713b1edbc 84 /*! @brief Define FlexIO FlexIO I2S interrupt mask. */
AnnaBridge 171:3a7713b1edbc 85 enum _flexio_i2s_interrupt_enable
AnnaBridge 171:3a7713b1edbc 86 {
AnnaBridge 171:3a7713b1edbc 87 kFLEXIO_I2S_TxDataRegEmptyInterruptEnable = 0x1U, /*!< Transmit buffer empty interrupt enable. */
AnnaBridge 171:3a7713b1edbc 88 kFLEXIO_I2S_RxDataRegFullInterruptEnable = 0x2U, /*!< Receive buffer full interrupt enable. */
AnnaBridge 171:3a7713b1edbc 89 };
AnnaBridge 171:3a7713b1edbc 90
AnnaBridge 171:3a7713b1edbc 91 /*! @brief Define FlexIO FlexIO I2S status mask. */
AnnaBridge 171:3a7713b1edbc 92 enum _flexio_i2s_status_flags
AnnaBridge 171:3a7713b1edbc 93 {
AnnaBridge 171:3a7713b1edbc 94 kFLEXIO_I2S_TxDataRegEmptyFlag = 0x1U, /*!< Transmit buffer empty flag. */
AnnaBridge 171:3a7713b1edbc 95 kFLEXIO_I2S_RxDataRegFullFlag = 0x2U, /*!< Receive buffer full flag. */
AnnaBridge 171:3a7713b1edbc 96 };
AnnaBridge 171:3a7713b1edbc 97
AnnaBridge 171:3a7713b1edbc 98 /*! @brief FlexIO I2S configure structure */
AnnaBridge 171:3a7713b1edbc 99 typedef struct _flexio_i2s_config
AnnaBridge 171:3a7713b1edbc 100 {
AnnaBridge 171:3a7713b1edbc 101 bool enableI2S; /*!< Enable FlexIO I2S */
AnnaBridge 171:3a7713b1edbc 102 flexio_i2s_master_slave_t masterSlave; /*!< Master or slave */
AnnaBridge 171:3a7713b1edbc 103 } flexio_i2s_config_t;
AnnaBridge 171:3a7713b1edbc 104
AnnaBridge 171:3a7713b1edbc 105 /*! @brief FlexIO I2S audio format, FlexIO I2S only support the same format in Tx and Rx */
AnnaBridge 171:3a7713b1edbc 106 typedef struct _flexio_i2s_format
AnnaBridge 171:3a7713b1edbc 107 {
AnnaBridge 171:3a7713b1edbc 108 uint8_t bitWidth; /*!< Bit width of audio data, always 8/16/24/32 bits */
AnnaBridge 171:3a7713b1edbc 109 uint32_t sampleRate_Hz; /*!< Sample rate of the audio data */
AnnaBridge 171:3a7713b1edbc 110 } flexio_i2s_format_t;
AnnaBridge 171:3a7713b1edbc 111
AnnaBridge 171:3a7713b1edbc 112 /*!@brief FlexIO I2S transfer queue size, user can refine it according to use case. */
AnnaBridge 171:3a7713b1edbc 113 #define FLEXIO_I2S_XFER_QUEUE_SIZE (4)
AnnaBridge 171:3a7713b1edbc 114
AnnaBridge 171:3a7713b1edbc 115 /*! @brief Audio sample rate */
AnnaBridge 171:3a7713b1edbc 116 typedef enum _flexio_i2s_sample_rate
AnnaBridge 171:3a7713b1edbc 117 {
AnnaBridge 171:3a7713b1edbc 118 kFLEXIO_I2S_SampleRate8KHz = 8000U, /*!< Sample rate 8000Hz */
AnnaBridge 171:3a7713b1edbc 119 kFLEXIO_I2S_SampleRate11025Hz = 11025U, /*!< Sample rate 11025Hz */
AnnaBridge 171:3a7713b1edbc 120 kFLEXIO_I2S_SampleRate12KHz = 12000U, /*!< Sample rate 12000Hz */
AnnaBridge 171:3a7713b1edbc 121 kFLEXIO_I2S_SampleRate16KHz = 16000U, /*!< Sample rate 16000Hz */
AnnaBridge 171:3a7713b1edbc 122 kFLEXIO_I2S_SampleRate22050Hz = 22050U, /*!< Sample rate 22050Hz */
AnnaBridge 171:3a7713b1edbc 123 kFLEXIO_I2S_SampleRate24KHz = 24000U, /*!< Sample rate 24000Hz */
AnnaBridge 171:3a7713b1edbc 124 kFLEXIO_I2S_SampleRate32KHz = 32000U, /*!< Sample rate 32000Hz */
AnnaBridge 171:3a7713b1edbc 125 kFLEXIO_I2S_SampleRate44100Hz = 44100U, /*!< Sample rate 44100Hz */
AnnaBridge 171:3a7713b1edbc 126 kFLEXIO_I2S_SampleRate48KHz = 48000U, /*!< Sample rate 48000Hz */
AnnaBridge 171:3a7713b1edbc 127 kFLEXIO_I2S_SampleRate96KHz = 96000U /*!< Sample rate 96000Hz */
AnnaBridge 171:3a7713b1edbc 128 } flexio_i2s_sample_rate_t;
AnnaBridge 171:3a7713b1edbc 129
AnnaBridge 171:3a7713b1edbc 130 /*! @brief Audio word width */
AnnaBridge 171:3a7713b1edbc 131 typedef enum _flexio_i2s_word_width
AnnaBridge 171:3a7713b1edbc 132 {
AnnaBridge 171:3a7713b1edbc 133 kFLEXIO_I2S_WordWidth8bits = 8U, /*!< Audio data width 8 bits */
AnnaBridge 171:3a7713b1edbc 134 kFLEXIO_I2S_WordWidth16bits = 16U, /*!< Audio data width 16 bits */
AnnaBridge 171:3a7713b1edbc 135 kFLEXIO_I2S_WordWidth24bits = 24U, /*!< Audio data width 24 bits */
AnnaBridge 171:3a7713b1edbc 136 kFLEXIO_I2S_WordWidth32bits = 32U /*!< Audio data width 32 bits */
AnnaBridge 171:3a7713b1edbc 137 } flexio_i2s_word_width_t;
AnnaBridge 171:3a7713b1edbc 138
AnnaBridge 171:3a7713b1edbc 139 /*! @brief Define FlexIO I2S transfer structure. */
AnnaBridge 171:3a7713b1edbc 140 typedef struct _flexio_i2s_transfer
AnnaBridge 171:3a7713b1edbc 141 {
AnnaBridge 171:3a7713b1edbc 142 uint8_t *data; /*!< Data buffer start pointer */
AnnaBridge 171:3a7713b1edbc 143 size_t dataSize; /*!< Bytes to be transferred. */
AnnaBridge 171:3a7713b1edbc 144 } flexio_i2s_transfer_t;
AnnaBridge 171:3a7713b1edbc 145
AnnaBridge 171:3a7713b1edbc 146 typedef struct _flexio_i2s_handle flexio_i2s_handle_t;
AnnaBridge 171:3a7713b1edbc 147
AnnaBridge 171:3a7713b1edbc 148 /*! @brief FlexIO I2S xfer callback prototype */
AnnaBridge 171:3a7713b1edbc 149 typedef void (*flexio_i2s_callback_t)(FLEXIO_I2S_Type *base,
AnnaBridge 171:3a7713b1edbc 150 flexio_i2s_handle_t *handle,
AnnaBridge 171:3a7713b1edbc 151 status_t status,
AnnaBridge 171:3a7713b1edbc 152 void *userData);
AnnaBridge 171:3a7713b1edbc 153
AnnaBridge 171:3a7713b1edbc 154 /*! @brief Define FlexIO I2S handle structure. */
AnnaBridge 171:3a7713b1edbc 155 struct _flexio_i2s_handle
AnnaBridge 171:3a7713b1edbc 156 {
AnnaBridge 171:3a7713b1edbc 157 uint32_t state; /*!< Internal state */
AnnaBridge 171:3a7713b1edbc 158 flexio_i2s_callback_t callback; /*!< Callback function called at transfer event*/
AnnaBridge 171:3a7713b1edbc 159 void *userData; /*!< Callback parameter passed to callback function*/
AnnaBridge 171:3a7713b1edbc 160 uint8_t bitWidth; /*!< Bit width for transfer, 8/16/24/32bits */
AnnaBridge 171:3a7713b1edbc 161 flexio_i2s_transfer_t queue[FLEXIO_I2S_XFER_QUEUE_SIZE]; /*!< Transfer queue storing queued transfer */
AnnaBridge 171:3a7713b1edbc 162 size_t transferSize[FLEXIO_I2S_XFER_QUEUE_SIZE]; /*!< Data bytes need to transfer */
AnnaBridge 171:3a7713b1edbc 163 volatile uint8_t queueUser; /*!< Index for user to queue transfer */
AnnaBridge 171:3a7713b1edbc 164 volatile uint8_t queueDriver; /*!< Index for driver to get the transfer data and size */
AnnaBridge 171:3a7713b1edbc 165 };
AnnaBridge 171:3a7713b1edbc 166
AnnaBridge 171:3a7713b1edbc 167 /*******************************************************************************
AnnaBridge 171:3a7713b1edbc 168 * API
AnnaBridge 171:3a7713b1edbc 169 ******************************************************************************/
AnnaBridge 171:3a7713b1edbc 170
AnnaBridge 171:3a7713b1edbc 171 #if defined(__cplusplus)
AnnaBridge 171:3a7713b1edbc 172 extern "C" {
AnnaBridge 171:3a7713b1edbc 173 #endif /*_cplusplus*/
AnnaBridge 171:3a7713b1edbc 174
AnnaBridge 171:3a7713b1edbc 175 /*!
AnnaBridge 171:3a7713b1edbc 176 * @name Initialization and deinitialization
AnnaBridge 171:3a7713b1edbc 177 * @{
AnnaBridge 171:3a7713b1edbc 178 */
AnnaBridge 171:3a7713b1edbc 179
AnnaBridge 171:3a7713b1edbc 180 /*!
AnnaBridge 171:3a7713b1edbc 181 * @brief Initializes the FlexIO I2S.
AnnaBridge 171:3a7713b1edbc 182 *
AnnaBridge 171:3a7713b1edbc 183 * This API configures FlexIO pins and shifter to I2S and configure FlexIO I2S with configuration structure.
AnnaBridge 171:3a7713b1edbc 184 * The configuration structure can be filled by the user, or be set with default values by
AnnaBridge 171:3a7713b1edbc 185 * FLEXIO_I2S_GetDefaultConfig().
AnnaBridge 171:3a7713b1edbc 186 *
AnnaBridge 171:3a7713b1edbc 187 * @note This API should be called at the beginning of the application to use
AnnaBridge 171:3a7713b1edbc 188 * the FlexIO I2S driver, or any access to the FlexIO I2S module could cause hard fault
AnnaBridge 171:3a7713b1edbc 189 * because clock is not enabled.
AnnaBridge 171:3a7713b1edbc 190 *
AnnaBridge 171:3a7713b1edbc 191 * @param base FlexIO I2S base pointer
AnnaBridge 171:3a7713b1edbc 192 * @param config FlexIO I2S configure structure.
AnnaBridge 171:3a7713b1edbc 193 */
AnnaBridge 171:3a7713b1edbc 194 void FLEXIO_I2S_Init(FLEXIO_I2S_Type *base, const flexio_i2s_config_t *config);
AnnaBridge 171:3a7713b1edbc 195
AnnaBridge 171:3a7713b1edbc 196 /*!
AnnaBridge 171:3a7713b1edbc 197 * @brief Sets the FlexIO I2S configuration structure to default values.
AnnaBridge 171:3a7713b1edbc 198 *
AnnaBridge 171:3a7713b1edbc 199 * The purpose of this API is to get the configuration structure initialized for use in FLEXIO_I2S_Init().
AnnaBridge 171:3a7713b1edbc 200 * User may use the initialized structure unchanged in FLEXIO_I2S_Init(), or modify
AnnaBridge 171:3a7713b1edbc 201 * some fields of the structure before calling FLEXIO_I2S_Init().
AnnaBridge 171:3a7713b1edbc 202 *
AnnaBridge 171:3a7713b1edbc 203 * @param config pointer to master configuration structure
AnnaBridge 171:3a7713b1edbc 204 */
AnnaBridge 171:3a7713b1edbc 205 void FLEXIO_I2S_GetDefaultConfig(flexio_i2s_config_t *config);
AnnaBridge 171:3a7713b1edbc 206
AnnaBridge 171:3a7713b1edbc 207 /*!
AnnaBridge 171:3a7713b1edbc 208 * @brief De-initializes the FlexIO I2S.
AnnaBridge 171:3a7713b1edbc 209 *
AnnaBridge 171:3a7713b1edbc 210 * Calling this API gates the FlexIO i2s clock. After calling this API, call the FLEXO_I2S_Init to use the
AnnaBridge 171:3a7713b1edbc 211 * FlexIO I2S module.
AnnaBridge 171:3a7713b1edbc 212 *
AnnaBridge 171:3a7713b1edbc 213 * @param base FlexIO I2S base pointer
AnnaBridge 171:3a7713b1edbc 214 */
AnnaBridge 171:3a7713b1edbc 215 void FLEXIO_I2S_Deinit(FLEXIO_I2S_Type *base);
AnnaBridge 171:3a7713b1edbc 216
AnnaBridge 171:3a7713b1edbc 217 /*!
AnnaBridge 171:3a7713b1edbc 218 * @brief Enables/disables the FlexIO I2S module operation.
AnnaBridge 171:3a7713b1edbc 219 *
AnnaBridge 171:3a7713b1edbc 220 * @param base pointer to FLEXIO_I2S_Type
AnnaBridge 171:3a7713b1edbc 221 * @param enable True to enable, false to disable.
AnnaBridge 171:3a7713b1edbc 222 */
AnnaBridge 171:3a7713b1edbc 223 static inline void FLEXIO_I2S_Enable(FLEXIO_I2S_Type *base, bool enable)
AnnaBridge 171:3a7713b1edbc 224 {
AnnaBridge 171:3a7713b1edbc 225 if (enable)
AnnaBridge 171:3a7713b1edbc 226 {
AnnaBridge 171:3a7713b1edbc 227 base->flexioBase->CTRL |= FLEXIO_CTRL_FLEXEN_MASK;
AnnaBridge 171:3a7713b1edbc 228 }
AnnaBridge 171:3a7713b1edbc 229 else
AnnaBridge 171:3a7713b1edbc 230 {
AnnaBridge 171:3a7713b1edbc 231 base->flexioBase->CTRL &= ~FLEXIO_CTRL_FLEXEN_MASK;
AnnaBridge 171:3a7713b1edbc 232 }
AnnaBridge 171:3a7713b1edbc 233 }
AnnaBridge 171:3a7713b1edbc 234
AnnaBridge 171:3a7713b1edbc 235 /*! @} */
AnnaBridge 171:3a7713b1edbc 236
AnnaBridge 171:3a7713b1edbc 237 /*!
AnnaBridge 171:3a7713b1edbc 238 * @name Status
AnnaBridge 171:3a7713b1edbc 239 * @{
AnnaBridge 171:3a7713b1edbc 240 */
AnnaBridge 171:3a7713b1edbc 241
AnnaBridge 171:3a7713b1edbc 242 /*!
AnnaBridge 171:3a7713b1edbc 243 * @brief Gets the FlexIO I2S status flags.
AnnaBridge 171:3a7713b1edbc 244 *
AnnaBridge 171:3a7713b1edbc 245 * @param base pointer to FLEXIO_I2S_Type structure
AnnaBridge 171:3a7713b1edbc 246 * @return Status flag, which are ORed by the enumerators in the _flexio_i2s_status_flags.
AnnaBridge 171:3a7713b1edbc 247 */
AnnaBridge 171:3a7713b1edbc 248 uint32_t FLEXIO_I2S_GetStatusFlags(FLEXIO_I2S_Type *base);
AnnaBridge 171:3a7713b1edbc 249
AnnaBridge 171:3a7713b1edbc 250 /*! @} */
AnnaBridge 171:3a7713b1edbc 251
AnnaBridge 171:3a7713b1edbc 252 /*!
AnnaBridge 171:3a7713b1edbc 253 * @name Interrupts
AnnaBridge 171:3a7713b1edbc 254 * @{
AnnaBridge 171:3a7713b1edbc 255 */
AnnaBridge 171:3a7713b1edbc 256
AnnaBridge 171:3a7713b1edbc 257 /*!
AnnaBridge 171:3a7713b1edbc 258 * @brief Enables the FlexIO I2S interrupt.
AnnaBridge 171:3a7713b1edbc 259 *
AnnaBridge 171:3a7713b1edbc 260 * This function enables the FlexIO UART interrupt.
AnnaBridge 171:3a7713b1edbc 261 *
AnnaBridge 171:3a7713b1edbc 262 * @param base pointer to FLEXIO_I2S_Type structure
AnnaBridge 171:3a7713b1edbc 263 * @param mask interrupt source
AnnaBridge 171:3a7713b1edbc 264 */
AnnaBridge 171:3a7713b1edbc 265 void FLEXIO_I2S_EnableInterrupts(FLEXIO_I2S_Type *base, uint32_t mask);
AnnaBridge 171:3a7713b1edbc 266
AnnaBridge 171:3a7713b1edbc 267 /*!
AnnaBridge 171:3a7713b1edbc 268 * @brief Disables the FlexIO I2S interrupt.
AnnaBridge 171:3a7713b1edbc 269 *
AnnaBridge 171:3a7713b1edbc 270 * This function enables the FlexIO UART interrupt.
AnnaBridge 171:3a7713b1edbc 271 *
AnnaBridge 171:3a7713b1edbc 272 * @param base pointer to FLEXIO_I2S_Type structure
AnnaBridge 171:3a7713b1edbc 273 * @param mask interrupt source
AnnaBridge 171:3a7713b1edbc 274 */
AnnaBridge 171:3a7713b1edbc 275 void FLEXIO_I2S_DisableInterrupts(FLEXIO_I2S_Type *base, uint32_t mask);
AnnaBridge 171:3a7713b1edbc 276
AnnaBridge 171:3a7713b1edbc 277 /*! @} */
AnnaBridge 171:3a7713b1edbc 278
AnnaBridge 171:3a7713b1edbc 279 /*!
AnnaBridge 171:3a7713b1edbc 280 * @name DMA Control
AnnaBridge 171:3a7713b1edbc 281 * @{
AnnaBridge 171:3a7713b1edbc 282 */
AnnaBridge 171:3a7713b1edbc 283
AnnaBridge 171:3a7713b1edbc 284 /*!
AnnaBridge 171:3a7713b1edbc 285 * @brief Enables/disables the FlexIO I2S Tx DMA requests.
AnnaBridge 171:3a7713b1edbc 286 *
AnnaBridge 171:3a7713b1edbc 287 * @param base FlexIO I2S base pointer
AnnaBridge 171:3a7713b1edbc 288 * @param enable True means enable DMA, false means disable DMA.
AnnaBridge 171:3a7713b1edbc 289 */
AnnaBridge 171:3a7713b1edbc 290 static inline void FLEXIO_I2S_TxEnableDMA(FLEXIO_I2S_Type *base, bool enable)
AnnaBridge 171:3a7713b1edbc 291 {
AnnaBridge 171:3a7713b1edbc 292 FLEXIO_EnableShifterStatusDMA(base->flexioBase, 1 << base->txShifterIndex, enable);
AnnaBridge 171:3a7713b1edbc 293 }
AnnaBridge 171:3a7713b1edbc 294
AnnaBridge 171:3a7713b1edbc 295 /*!
AnnaBridge 171:3a7713b1edbc 296 * @brief Enables/disables the FlexIO I2S Rx DMA requests.
AnnaBridge 171:3a7713b1edbc 297 *
AnnaBridge 171:3a7713b1edbc 298 * @param base FlexIO I2S base pointer
AnnaBridge 171:3a7713b1edbc 299 * @param enable True means enable DMA, false means disable DMA.
AnnaBridge 171:3a7713b1edbc 300 */
AnnaBridge 171:3a7713b1edbc 301 static inline void FLEXIO_I2S_RxEnableDMA(FLEXIO_I2S_Type *base, bool enable)
AnnaBridge 171:3a7713b1edbc 302 {
AnnaBridge 171:3a7713b1edbc 303 FLEXIO_EnableShifterStatusDMA(base->flexioBase, 1 << base->rxShifterIndex, enable);
AnnaBridge 171:3a7713b1edbc 304 }
AnnaBridge 171:3a7713b1edbc 305
AnnaBridge 171:3a7713b1edbc 306 /*!
AnnaBridge 171:3a7713b1edbc 307 * @brief Gets the FlexIO I2S send data register address.
AnnaBridge 171:3a7713b1edbc 308 *
AnnaBridge 171:3a7713b1edbc 309 * This function returns the I2S data register address, mainly used by DMA/eDMA.
AnnaBridge 171:3a7713b1edbc 310 *
AnnaBridge 171:3a7713b1edbc 311 * @param base pointer to FLEXIO_I2S_Type structure
AnnaBridge 171:3a7713b1edbc 312 * @return FlexIO i2s send data register address.
AnnaBridge 171:3a7713b1edbc 313 */
AnnaBridge 171:3a7713b1edbc 314 static inline uint32_t FLEXIO_I2S_TxGetDataRegisterAddress(FLEXIO_I2S_Type *base)
AnnaBridge 171:3a7713b1edbc 315 {
AnnaBridge 171:3a7713b1edbc 316 return FLEXIO_GetShifterBufferAddress(base->flexioBase, kFLEXIO_ShifterBufferBitSwapped, base->txShifterIndex);
AnnaBridge 171:3a7713b1edbc 317 }
AnnaBridge 171:3a7713b1edbc 318
AnnaBridge 171:3a7713b1edbc 319 /*!
AnnaBridge 171:3a7713b1edbc 320 * @brief Gets the FlexIO I2S receive data register address.
AnnaBridge 171:3a7713b1edbc 321 *
AnnaBridge 171:3a7713b1edbc 322 * This function returns the I2S data register address, mainly used by DMA/eDMA.
AnnaBridge 171:3a7713b1edbc 323 *
AnnaBridge 171:3a7713b1edbc 324 * @param base pointer to FLEXIO_I2S_Type structure
AnnaBridge 171:3a7713b1edbc 325 * @return FlexIO i2s receive data register address.
AnnaBridge 171:3a7713b1edbc 326 */
AnnaBridge 171:3a7713b1edbc 327 static inline uint32_t FLEXIO_I2S_RxGetDataRegisterAddress(FLEXIO_I2S_Type *base)
AnnaBridge 171:3a7713b1edbc 328 {
AnnaBridge 171:3a7713b1edbc 329 return FLEXIO_GetShifterBufferAddress(base->flexioBase, kFLEXIO_ShifterBufferBitSwapped, base->rxShifterIndex);
AnnaBridge 171:3a7713b1edbc 330 }
AnnaBridge 171:3a7713b1edbc 331
AnnaBridge 171:3a7713b1edbc 332 /*! @} */
AnnaBridge 171:3a7713b1edbc 333
AnnaBridge 171:3a7713b1edbc 334 /*!
AnnaBridge 171:3a7713b1edbc 335 * @name Bus Operations
AnnaBridge 171:3a7713b1edbc 336 * @{
AnnaBridge 171:3a7713b1edbc 337 */
AnnaBridge 171:3a7713b1edbc 338
AnnaBridge 171:3a7713b1edbc 339 /*!
AnnaBridge 171:3a7713b1edbc 340 * @brief Configures the FlexIO I2S audio format in master mode.
AnnaBridge 171:3a7713b1edbc 341 *
AnnaBridge 171:3a7713b1edbc 342 * Audio format can be changed in run-time of FlexIO I2S. This function configures the sample rate and audio data
AnnaBridge 171:3a7713b1edbc 343 * format to be transferred.
AnnaBridge 171:3a7713b1edbc 344 *
AnnaBridge 171:3a7713b1edbc 345 * @param base pointer to FLEXIO_I2S_Type structure
AnnaBridge 171:3a7713b1edbc 346 * @param format Pointer to FlexIO I2S audio data format structure.
AnnaBridge 171:3a7713b1edbc 347 * @param srcClock_Hz I2S master clock source frequency in Hz.
AnnaBridge 171:3a7713b1edbc 348 */
AnnaBridge 171:3a7713b1edbc 349 void FLEXIO_I2S_MasterSetFormat(FLEXIO_I2S_Type *base, flexio_i2s_format_t *format, uint32_t srcClock_Hz);
AnnaBridge 171:3a7713b1edbc 350
AnnaBridge 171:3a7713b1edbc 351 /*!
AnnaBridge 171:3a7713b1edbc 352 * @brief Configures the FlexIO I2S audio format in slave mode.
AnnaBridge 171:3a7713b1edbc 353 *
AnnaBridge 171:3a7713b1edbc 354 * Audio format can be changed in run-time of FlexIO I2S. This function configures the sample rate and audio data
AnnaBridge 171:3a7713b1edbc 355 * format to be transferred.
AnnaBridge 171:3a7713b1edbc 356 *
AnnaBridge 171:3a7713b1edbc 357 * @param base pointer to FLEXIO_I2S_Type structure
AnnaBridge 171:3a7713b1edbc 358 * @param format Pointer to FlexIO I2S audio data format structure.
AnnaBridge 171:3a7713b1edbc 359 */
AnnaBridge 171:3a7713b1edbc 360 void FLEXIO_I2S_SlaveSetFormat(FLEXIO_I2S_Type *base, flexio_i2s_format_t *format);
AnnaBridge 171:3a7713b1edbc 361
AnnaBridge 171:3a7713b1edbc 362 /*!
AnnaBridge 171:3a7713b1edbc 363 * @brief Sends a piece of data using a blocking method.
AnnaBridge 171:3a7713b1edbc 364 *
AnnaBridge 171:3a7713b1edbc 365 * @note This function blocks via polling until data is ready to be sent.
AnnaBridge 171:3a7713b1edbc 366 *
AnnaBridge 171:3a7713b1edbc 367 * @param base FlexIO I2S base pointer.
AnnaBridge 171:3a7713b1edbc 368 * @param bitWidth How many bits in a audio word, usually 8/16/24/32 bits.
AnnaBridge 171:3a7713b1edbc 369 * @param txData Pointer to the data to be written.
AnnaBridge 171:3a7713b1edbc 370 * @param size Bytes to be written.
AnnaBridge 171:3a7713b1edbc 371 */
AnnaBridge 171:3a7713b1edbc 372 void FLEXIO_I2S_WriteBlocking(FLEXIO_I2S_Type *base, uint8_t bitWidth, uint8_t *txData, size_t size);
AnnaBridge 171:3a7713b1edbc 373
AnnaBridge 171:3a7713b1edbc 374 /*!
AnnaBridge 171:3a7713b1edbc 375 * @brief Writes a data into data register.
AnnaBridge 171:3a7713b1edbc 376 *
AnnaBridge 171:3a7713b1edbc 377 * @param base FlexIO I2S base pointer.
AnnaBridge 171:3a7713b1edbc 378 * @param bitWidth How many bits in a audio word, usually 8/16/24/32 bits.
AnnaBridge 171:3a7713b1edbc 379 * @param data Data to be written.
AnnaBridge 171:3a7713b1edbc 380 */
AnnaBridge 171:3a7713b1edbc 381 static inline void FLEXIO_I2S_WriteData(FLEXIO_I2S_Type *base, uint8_t bitWidth, uint32_t data)
AnnaBridge 171:3a7713b1edbc 382 {
AnnaBridge 171:3a7713b1edbc 383 base->flexioBase->SHIFTBUFBIS[base->txShifterIndex] = (data << (32U - bitWidth));
AnnaBridge 171:3a7713b1edbc 384 }
AnnaBridge 171:3a7713b1edbc 385
AnnaBridge 171:3a7713b1edbc 386 /*!
AnnaBridge 171:3a7713b1edbc 387 * @brief Receives a piece of data using a blocking method.
AnnaBridge 171:3a7713b1edbc 388 *
AnnaBridge 171:3a7713b1edbc 389 * @note This function blocks via polling until data is ready to be sent.
AnnaBridge 171:3a7713b1edbc 390 *
AnnaBridge 171:3a7713b1edbc 391 * @param base FlexIO I2S base pointer
AnnaBridge 171:3a7713b1edbc 392 * @param bitWidth How many bits in a audio word, usually 8/16/24/32 bits.
AnnaBridge 171:3a7713b1edbc 393 * @param rxData Pointer to the data to be read.
AnnaBridge 171:3a7713b1edbc 394 * @param size Bytes to be read.
AnnaBridge 171:3a7713b1edbc 395 */
AnnaBridge 171:3a7713b1edbc 396 void FLEXIO_I2S_ReadBlocking(FLEXIO_I2S_Type *base, uint8_t bitWidth, uint8_t *rxData, size_t size);
AnnaBridge 171:3a7713b1edbc 397
AnnaBridge 171:3a7713b1edbc 398 /*!
AnnaBridge 171:3a7713b1edbc 399 * @brief Reads a data from the data register.
AnnaBridge 171:3a7713b1edbc 400 *
AnnaBridge 171:3a7713b1edbc 401 * @param base FlexIO I2S base pointer
AnnaBridge 171:3a7713b1edbc 402 * @return Data read from data register.
AnnaBridge 171:3a7713b1edbc 403 */
AnnaBridge 171:3a7713b1edbc 404 static inline uint32_t FLEXIO_I2S_ReadData(FLEXIO_I2S_Type *base)
AnnaBridge 171:3a7713b1edbc 405 {
AnnaBridge 171:3a7713b1edbc 406 return base->flexioBase->SHIFTBUFBIS[base->rxShifterIndex];
AnnaBridge 171:3a7713b1edbc 407 }
AnnaBridge 171:3a7713b1edbc 408
AnnaBridge 171:3a7713b1edbc 409 /*! @} */
AnnaBridge 171:3a7713b1edbc 410
AnnaBridge 171:3a7713b1edbc 411 /*!
AnnaBridge 171:3a7713b1edbc 412 * @name Transactional
AnnaBridge 171:3a7713b1edbc 413 * @{
AnnaBridge 171:3a7713b1edbc 414 */
AnnaBridge 171:3a7713b1edbc 415
AnnaBridge 171:3a7713b1edbc 416 /*!
AnnaBridge 171:3a7713b1edbc 417 * @brief Initializes the FlexIO I2S handle.
AnnaBridge 171:3a7713b1edbc 418 *
AnnaBridge 171:3a7713b1edbc 419 * This function initializes the FlexIO I2S handle which can be used for other
AnnaBridge 171:3a7713b1edbc 420 * FlexIO I2S transactional APIs. Call this API once to get the
AnnaBridge 171:3a7713b1edbc 421 * initialized handle.
AnnaBridge 171:3a7713b1edbc 422 *
AnnaBridge 171:3a7713b1edbc 423 * @param base pointer to FLEXIO_I2S_Type structure
AnnaBridge 171:3a7713b1edbc 424 * @param handle pointer to flexio_i2s_handle_t structure to store the transfer state.
AnnaBridge 171:3a7713b1edbc 425 * @param callback FlexIO I2S callback function, which is called while finished a block.
AnnaBridge 171:3a7713b1edbc 426 * @param userData User parameter for the FlexIO I2S callback.
AnnaBridge 171:3a7713b1edbc 427 */
AnnaBridge 171:3a7713b1edbc 428 void FLEXIO_I2S_TransferTxCreateHandle(FLEXIO_I2S_Type *base,
AnnaBridge 171:3a7713b1edbc 429 flexio_i2s_handle_t *handle,
AnnaBridge 171:3a7713b1edbc 430 flexio_i2s_callback_t callback,
AnnaBridge 171:3a7713b1edbc 431 void *userData);
AnnaBridge 171:3a7713b1edbc 432
AnnaBridge 171:3a7713b1edbc 433 /*!
AnnaBridge 171:3a7713b1edbc 434 * @brief Configures the FlexIO I2S audio format.
AnnaBridge 171:3a7713b1edbc 435 *
AnnaBridge 171:3a7713b1edbc 436 * Audio format can be changed in run-time of FlexIO i2s. This function configures the sample rate and audio data
AnnaBridge 171:3a7713b1edbc 437 * format to be transferred.
AnnaBridge 171:3a7713b1edbc 438 *
AnnaBridge 171:3a7713b1edbc 439 * @param base pointer to FLEXIO_I2S_Type structure.
AnnaBridge 171:3a7713b1edbc 440 * @param handle FlexIO I2S handle pointer.
AnnaBridge 171:3a7713b1edbc 441 * @param format Pointer to audio data format structure.
AnnaBridge 171:3a7713b1edbc 442 * @param srcClock_Hz FlexIO I2S bit clock source frequency in Hz. This parameter should be 0 while in slave mode.
AnnaBridge 171:3a7713b1edbc 443 */
AnnaBridge 171:3a7713b1edbc 444 void FLEXIO_I2S_TransferSetFormat(FLEXIO_I2S_Type *base,
AnnaBridge 171:3a7713b1edbc 445 flexio_i2s_handle_t *handle,
AnnaBridge 171:3a7713b1edbc 446 flexio_i2s_format_t *format,
AnnaBridge 171:3a7713b1edbc 447 uint32_t srcClock_Hz);
AnnaBridge 171:3a7713b1edbc 448
AnnaBridge 171:3a7713b1edbc 449 /*!
AnnaBridge 171:3a7713b1edbc 450 * @brief Initializes the FlexIO I2S receive handle.
AnnaBridge 171:3a7713b1edbc 451 *
AnnaBridge 171:3a7713b1edbc 452 * This function initializes the FlexIO I2S handle which can be used for other
AnnaBridge 171:3a7713b1edbc 453 * FlexIO I2S transactional APIs. Usually, user only need to call this API once to get the
AnnaBridge 171:3a7713b1edbc 454 * initialized handle.
AnnaBridge 171:3a7713b1edbc 455 *
AnnaBridge 171:3a7713b1edbc 456 * @param base pointer to FLEXIO_I2S_Type structure.
AnnaBridge 171:3a7713b1edbc 457 * @param handle pointer to flexio_i2s_handle_t structure to store the transfer state.
AnnaBridge 171:3a7713b1edbc 458 * @param callback FlexIO I2S callback function, which is called while finished a block.
AnnaBridge 171:3a7713b1edbc 459 * @param userData User parameter for the FlexIO I2S callback.
AnnaBridge 171:3a7713b1edbc 460 */
AnnaBridge 171:3a7713b1edbc 461 void FLEXIO_I2S_TransferRxCreateHandle(FLEXIO_I2S_Type *base,
AnnaBridge 171:3a7713b1edbc 462 flexio_i2s_handle_t *handle,
AnnaBridge 171:3a7713b1edbc 463 flexio_i2s_callback_t callback,
AnnaBridge 171:3a7713b1edbc 464 void *userData);
AnnaBridge 171:3a7713b1edbc 465
AnnaBridge 171:3a7713b1edbc 466 /*!
AnnaBridge 171:3a7713b1edbc 467 * @brief Performs an interrupt non-blocking send transfer on FlexIO I2S.
AnnaBridge 171:3a7713b1edbc 468 *
AnnaBridge 171:3a7713b1edbc 469 * @note Calling the API returns immediately after transfer initiates.
AnnaBridge 171:3a7713b1edbc 470 * Call FLEXIO_I2S_GetRemainingBytes to poll the transfer status and check whether
AnnaBridge 171:3a7713b1edbc 471 * the transfer is finished. If the return status is 0, the transfer is finished.
AnnaBridge 171:3a7713b1edbc 472 *
AnnaBridge 171:3a7713b1edbc 473 * @param base pointer to FLEXIO_I2S_Type structure.
AnnaBridge 171:3a7713b1edbc 474 * @param handle pointer to flexio_i2s_handle_t structure which stores the transfer state
AnnaBridge 171:3a7713b1edbc 475 * @param xfer pointer to flexio_i2s_transfer_t structure
AnnaBridge 171:3a7713b1edbc 476 * @retval kStatus_Success Successfully start the data transmission.
AnnaBridge 171:3a7713b1edbc 477 * @retval kStatus_FLEXIO_I2S_TxBusy Previous transmission still not finished, data not all written to TX register yet.
AnnaBridge 171:3a7713b1edbc 478 * @retval kStatus_InvalidArgument The input parameter is invalid.
AnnaBridge 171:3a7713b1edbc 479 */
AnnaBridge 171:3a7713b1edbc 480 status_t FLEXIO_I2S_TransferSendNonBlocking(FLEXIO_I2S_Type *base,
AnnaBridge 171:3a7713b1edbc 481 flexio_i2s_handle_t *handle,
AnnaBridge 171:3a7713b1edbc 482 flexio_i2s_transfer_t *xfer);
AnnaBridge 171:3a7713b1edbc 483
AnnaBridge 171:3a7713b1edbc 484 /*!
AnnaBridge 171:3a7713b1edbc 485 * @brief Performs an interrupt non-blocking receive transfer on FlexIO I2S.
AnnaBridge 171:3a7713b1edbc 486 *
AnnaBridge 171:3a7713b1edbc 487 * @note The API returns immediately after transfer initiates.
AnnaBridge 171:3a7713b1edbc 488 * Call FLEXIO_I2S_GetRemainingBytes to poll the transfer status to check whether
AnnaBridge 171:3a7713b1edbc 489 * the transfer is finished. If the return status is 0, the transfer is finished.
AnnaBridge 171:3a7713b1edbc 490 *
AnnaBridge 171:3a7713b1edbc 491 * @param base pointer to FLEXIO_I2S_Type structure.
AnnaBridge 171:3a7713b1edbc 492 * @param handle pointer to flexio_i2s_handle_t structure which stores the transfer state
AnnaBridge 171:3a7713b1edbc 493 * @param xfer pointer to flexio_i2s_transfer_t structure
AnnaBridge 171:3a7713b1edbc 494 * @retval kStatus_Success Successfully start the data receive.
AnnaBridge 171:3a7713b1edbc 495 * @retval kStatus_FLEXIO_I2S_RxBusy Previous receive still not finished.
AnnaBridge 171:3a7713b1edbc 496 * @retval kStatus_InvalidArgument The input parameter is invalid.
AnnaBridge 171:3a7713b1edbc 497 */
AnnaBridge 171:3a7713b1edbc 498 status_t FLEXIO_I2S_TransferReceiveNonBlocking(FLEXIO_I2S_Type *base,
AnnaBridge 171:3a7713b1edbc 499 flexio_i2s_handle_t *handle,
AnnaBridge 171:3a7713b1edbc 500 flexio_i2s_transfer_t *xfer);
AnnaBridge 171:3a7713b1edbc 501
AnnaBridge 171:3a7713b1edbc 502 /*!
AnnaBridge 171:3a7713b1edbc 503 * @brief Aborts the current send.
AnnaBridge 171:3a7713b1edbc 504 *
AnnaBridge 171:3a7713b1edbc 505 * @note This API can be called at any time when interrupt non-blocking transfer initiates
AnnaBridge 171:3a7713b1edbc 506 * to abort the transfer in a early time.
AnnaBridge 171:3a7713b1edbc 507 *
AnnaBridge 171:3a7713b1edbc 508 * @param base pointer to FLEXIO_I2S_Type structure.
AnnaBridge 171:3a7713b1edbc 509 * @param handle pointer to flexio_i2s_handle_t structure which stores the transfer state
AnnaBridge 171:3a7713b1edbc 510 */
AnnaBridge 171:3a7713b1edbc 511 void FLEXIO_I2S_TransferAbortSend(FLEXIO_I2S_Type *base, flexio_i2s_handle_t *handle);
AnnaBridge 171:3a7713b1edbc 512
AnnaBridge 171:3a7713b1edbc 513 /*!
AnnaBridge 171:3a7713b1edbc 514 * @brief Aborts the current receive.
AnnaBridge 171:3a7713b1edbc 515 *
AnnaBridge 171:3a7713b1edbc 516 * @note This API can be called at any time when interrupt non-blocking transfer initiates
AnnaBridge 171:3a7713b1edbc 517 * to abort the transfer in a early time.
AnnaBridge 171:3a7713b1edbc 518 *
AnnaBridge 171:3a7713b1edbc 519 * @param base pointer to FLEXIO_I2S_Type structure.
AnnaBridge 171:3a7713b1edbc 520 * @param handle pointer to flexio_i2s_handle_t structure which stores the transfer state
AnnaBridge 171:3a7713b1edbc 521 */
AnnaBridge 171:3a7713b1edbc 522 void FLEXIO_I2S_TransferAbortReceive(FLEXIO_I2S_Type *base, flexio_i2s_handle_t *handle);
AnnaBridge 171:3a7713b1edbc 523
AnnaBridge 171:3a7713b1edbc 524 /*!
AnnaBridge 171:3a7713b1edbc 525 * @brief Gets the remaining bytes to be sent.
AnnaBridge 171:3a7713b1edbc 526 *
AnnaBridge 171:3a7713b1edbc 527 * @param base pointer to FLEXIO_I2S_Type structure.
AnnaBridge 171:3a7713b1edbc 528 * @param handle pointer to flexio_i2s_handle_t structure which stores the transfer state
AnnaBridge 171:3a7713b1edbc 529 * @param count Bytes sent.
AnnaBridge 171:3a7713b1edbc 530 * @retval kStatus_Success Succeed get the transfer count.
AnnaBridge 171:3a7713b1edbc 531 * @retval kStatus_NoTransferInProgress There is not a non-blocking transaction currently in progress.
AnnaBridge 171:3a7713b1edbc 532 */
AnnaBridge 171:3a7713b1edbc 533 status_t FLEXIO_I2S_TransferGetSendCount(FLEXIO_I2S_Type *base, flexio_i2s_handle_t *handle, size_t *count);
AnnaBridge 171:3a7713b1edbc 534
AnnaBridge 171:3a7713b1edbc 535 /*!
AnnaBridge 171:3a7713b1edbc 536 * @brief Gets the remaining bytes to be received.
AnnaBridge 171:3a7713b1edbc 537 *
AnnaBridge 171:3a7713b1edbc 538 * @param base pointer to FLEXIO_I2S_Type structure.
AnnaBridge 171:3a7713b1edbc 539 * @param handle pointer to flexio_i2s_handle_t structure which stores the transfer state
AnnaBridge 171:3a7713b1edbc 540 * @return count Bytes received.
AnnaBridge 171:3a7713b1edbc 541 * @retval kStatus_Success Succeed get the transfer count.
AnnaBridge 171:3a7713b1edbc 542 * @retval kStatus_NoTransferInProgress There is not a non-blocking transaction currently in progress.
AnnaBridge 171:3a7713b1edbc 543 */
AnnaBridge 171:3a7713b1edbc 544 status_t FLEXIO_I2S_TransferGetReceiveCount(FLEXIO_I2S_Type *base, flexio_i2s_handle_t *handle, size_t *count);
AnnaBridge 171:3a7713b1edbc 545
AnnaBridge 171:3a7713b1edbc 546 /*!
AnnaBridge 171:3a7713b1edbc 547 * @brief Tx interrupt handler.
AnnaBridge 171:3a7713b1edbc 548 *
AnnaBridge 171:3a7713b1edbc 549 * @param i2sBase pointer to FLEXIO_I2S_Type structure.
AnnaBridge 171:3a7713b1edbc 550 * @param i2sHandle pointer to flexio_i2s_handle_t structure
AnnaBridge 171:3a7713b1edbc 551 */
AnnaBridge 171:3a7713b1edbc 552 void FLEXIO_I2S_TransferTxHandleIRQ(void *i2sBase, void *i2sHandle);
AnnaBridge 171:3a7713b1edbc 553
AnnaBridge 171:3a7713b1edbc 554 /*!
AnnaBridge 171:3a7713b1edbc 555 * @brief Rx interrupt handler.
AnnaBridge 171:3a7713b1edbc 556 *
AnnaBridge 171:3a7713b1edbc 557 * @param i2sBase pointer to FLEXIO_I2S_Type structure.
AnnaBridge 171:3a7713b1edbc 558 * @param i2sHandle pointer to flexio_i2s_handle_t structure
AnnaBridge 171:3a7713b1edbc 559 */
AnnaBridge 171:3a7713b1edbc 560 void FLEXIO_I2S_TransferRxHandleIRQ(void *i2sBase, void *i2sHandle);
AnnaBridge 171:3a7713b1edbc 561
AnnaBridge 171:3a7713b1edbc 562 /*! @} */
AnnaBridge 171:3a7713b1edbc 563
AnnaBridge 171:3a7713b1edbc 564 #if defined(__cplusplus)
AnnaBridge 171:3a7713b1edbc 565 }
AnnaBridge 171:3a7713b1edbc 566 #endif /*_cplusplus*/
AnnaBridge 171:3a7713b1edbc 567
AnnaBridge 171:3a7713b1edbc 568 /*! @} */
AnnaBridge 171:3a7713b1edbc 569
AnnaBridge 171:3a7713b1edbc 570 #endif /* _FSL_FLEXIO_I2S_H_ */