|  | MCUXpresso SDK API Reference Manual
    Rev 2.13.0
    NXP Semiconductors | 
| Data Structures | |
| struct | lpi2c_master_edma_handle_t | 
| Driver handle for master DMA APIs.  More... | |
| Typedefs | |
| typedef void(* | lpi2c_master_edma_transfer_callback_t )(LPI2C_Type *base, lpi2c_master_edma_handle_t *handle, status_t completionStatus, void *userData) | 
| Master DMA completion callback function pointer type.  More... | |
| Master DMA | |
| void | LPI2C_MasterCreateEDMAHandle (LPI2C_Type *base, lpi2c_master_edma_handle_t *handle, edma_handle_t *rxDmaHandle, edma_handle_t *txDmaHandle, lpi2c_master_edma_transfer_callback_t callback, void *userData) | 
| Create a new handle for the LPI2C master DMA APIs.  More... | |
| status_t | LPI2C_MasterTransferEDMA (LPI2C_Type *base, lpi2c_master_edma_handle_t *handle, lpi2c_master_transfer_t *transfer) | 
| Performs a non-blocking DMA-based transaction on the I2C bus.  More... | |
| status_t | LPI2C_MasterTransferGetCountEDMA (LPI2C_Type *base, lpi2c_master_edma_handle_t *handle, size_t *count) | 
| Returns number of bytes transferred so far.  More... | |
| status_t | LPI2C_MasterTransferAbortEDMA (LPI2C_Type *base, lpi2c_master_edma_handle_t *handle) | 
| Terminates a non-blocking LPI2C master transmission early.  More... | |
| struct _lpi2c_master_edma_handle | 
| Data Fields | |
| LPI2C_Type * | base | 
| LPI2C base pointer.  More... | |
| bool | isBusy | 
| Transfer state machine current state.  More... | |
| uint8_t | nbytes | 
| eDMA minor byte transfer count initially configured.  More... | |
| uint16_t | commandBuffer [10] | 
| LPI2C command sequence.  More... | |
| lpi2c_master_transfer_t | transfer | 
| Copy of the current transfer info.  More... | |
| lpi2c_master_edma_transfer_callback_t | completionCallback | 
| Callback function pointer.  More... | |
| void * | userData | 
| Application data passed to callback.  More... | |
| edma_handle_t * | rx | 
| Handle for receive DMA channel.  More... | |
| edma_handle_t * | tx | 
| Handle for transmit DMA channel.  More... | |
| edma_tcd_t | tcds [3] | 
| Software TCD.  More... | |
| LPI2C_Type* lpi2c_master_edma_handle_t::base | 
| bool lpi2c_master_edma_handle_t::isBusy | 
| uint8_t lpi2c_master_edma_handle_t::nbytes | 
| uint16_t lpi2c_master_edma_handle_t::commandBuffer[10] | 
When all 10 command words are used: Start&addr&write[1 word] + subaddr[4 words] + restart&addr&read[1 word] + receive&Size[4 words]
| lpi2c_master_transfer_t lpi2c_master_edma_handle_t::transfer | 
| lpi2c_master_edma_transfer_callback_t lpi2c_master_edma_handle_t::completionCallback | 
| void* lpi2c_master_edma_handle_t::userData | 
| edma_handle_t* lpi2c_master_edma_handle_t::rx | 
| edma_handle_t* lpi2c_master_edma_handle_t::tx | 
| edma_tcd_t lpi2c_master_edma_handle_t::tcds[3] | 
Three are allocated to provide enough room to align to 32-bytes.
| typedef void(* lpi2c_master_edma_transfer_callback_t)(LPI2C_Type *base, lpi2c_master_edma_handle_t *handle, status_t completionStatus, void *userData) | 
This callback is used only for the non-blocking master transfer API. Specify the callback you wish to use in the call to LPI2C_MasterCreateEDMAHandle().
| base | The LPI2C peripheral base address. | 
| handle | Handle associated with the completed transfer. | 
| completionStatus | Either kStatus_Success or an error code describing how the transfer completed. | 
| userData | Arbitrary pointer-sized value passed from the application. | 
| void LPI2C_MasterCreateEDMAHandle | ( | LPI2C_Type * | base, | 
| lpi2c_master_edma_handle_t * | handle, | ||
| edma_handle_t * | rxDmaHandle, | ||
| edma_handle_t * | txDmaHandle, | ||
| lpi2c_master_edma_transfer_callback_t | callback, | ||
| void * | userData | ||
| ) | 
The creation of a handle is for use with the DMA APIs. Once a handle is created, there is not a corresponding destroy handle. If the user wants to terminate a transfer, the LPI2C_MasterTransferAbortEDMA() API shall be called.
For devices where the LPI2C send and receive DMA requests are OR'd together, the txDmaHandle parameter is ignored and may be set to NULL.
| base | The LPI2C peripheral base address. | |
| [out] | handle | Pointer to the LPI2C master driver handle. | 
| rxDmaHandle | Handle for the eDMA receive channel. Created by the user prior to calling this function. | |
| txDmaHandle | Handle for the eDMA transmit channel. Created by the user prior to calling this function. | |
| callback | User provided pointer to the asynchronous callback function. | |
| userData | User provided pointer to the application callback data. | 
| status_t LPI2C_MasterTransferEDMA | ( | LPI2C_Type * | base, | 
| lpi2c_master_edma_handle_t * | handle, | ||
| lpi2c_master_transfer_t * | transfer | ||
| ) | 
The callback specified when the handle was created is invoked when the transaction has completed.
| base | The LPI2C peripheral base address. | 
| handle | Pointer to the LPI2C master driver handle. | 
| transfer | The pointer to the transfer descriptor. | 
| kStatus_Success | The transaction was started successfully. | 
| kStatus_LPI2C_Busy | Either another master is currently utilizing the bus, or another DMA transaction is already in progress. | 
| status_t LPI2C_MasterTransferGetCountEDMA | ( | LPI2C_Type * | base, | 
| lpi2c_master_edma_handle_t * | handle, | ||
| size_t * | count | ||
| ) | 
| base | The LPI2C peripheral base address. | |
| handle | Pointer to the LPI2C master driver handle. | |
| [out] | count | Number of bytes transferred so far by the non-blocking transaction. | 
| kStatus_Success | |
| kStatus_NoTransferInProgress | There is not a DMA transaction currently in progress. | 
| status_t LPI2C_MasterTransferAbortEDMA | ( | LPI2C_Type * | base, | 
| lpi2c_master_edma_handle_t * | handle | ||
| ) | 
| base | The LPI2C peripheral base address. | 
| handle | Pointer to the LPI2C master driver handle. | 
| kStatus_Success | A transaction was successfully aborted. | 
| kStatus_LPI2C_Idle | There is not a DMA transaction currently in progress. |