MCUXpresso SDK API Reference Manual
Rev 2.12.1
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. |