MCUXpresso SDK API Reference Manual
Rev. 0
NXP Semiconductors
|
Data Structures | |
struct | lpi2c_slave_config_t |
Structure with settings to initialize the LPI2C slave module. More... | |
struct | lpi2c_slave_transfer_t |
LPI2C slave transfer structure. More... | |
struct | lpi2c_slave_handle_t |
LPI2C slave handle structure. More... | |
Typedefs | |
typedef void(* | lpi2c_slave_transfer_callback_t )(LPI2C_Type *base, lpi2c_slave_transfer_t *transfer, void *userData) |
Slave event callback function pointer type. More... | |
Slave initialization and deinitialization | |
void | LPI2C_SlaveGetDefaultConfig (lpi2c_slave_config_t *slaveConfig) |
Provides a default configuration for the LPI2C slave peripheral. More... | |
void | LPI2C_SlaveInit (LPI2C_Type *base, const lpi2c_slave_config_t *slaveConfig, uint32_t sourceClock_Hz) |
Initializes the LPI2C slave peripheral. More... | |
void | LPI2C_SlaveDeinit (LPI2C_Type *base) |
Deinitializes the LPI2C slave peripheral. More... | |
static void | LPI2C_SlaveReset (LPI2C_Type *base) |
Performs a software reset of the LPI2C slave peripheral. More... | |
static void | LPI2C_SlaveEnable (LPI2C_Type *base, bool enable) |
Enables or disables the LPI2C module as slave. More... | |
Slave status | |
static uint32_t | LPI2C_SlaveGetStatusFlags (LPI2C_Type *base) |
Gets the LPI2C slave status flags. More... | |
static void | LPI2C_SlaveClearStatusFlags (LPI2C_Type *base, uint32_t statusMask) |
Clears the LPI2C status flag state. More... | |
Slave interrupts | |
static void | LPI2C_SlaveEnableInterrupts (LPI2C_Type *base, uint32_t interruptMask) |
Enables the LPI2C slave interrupt requests. More... | |
static void | LPI2C_SlaveDisableInterrupts (LPI2C_Type *base, uint32_t interruptMask) |
Disables the LPI2C slave interrupt requests. More... | |
static uint32_t | LPI2C_SlaveGetEnabledInterrupts (LPI2C_Type *base) |
Returns the set of currently enabled LPI2C slave interrupt requests. More... | |
Slave DMA control | |
static void | LPI2C_SlaveEnableDMA (LPI2C_Type *base, bool enableAddressValid, bool enableRx, bool enableTx) |
Enables or disables the LPI2C slave peripheral DMA requests. More... | |
Slave bus operations | |
static bool | LPI2C_SlaveGetBusIdleState (LPI2C_Type *base) |
Returns whether the bus is idle. More... | |
static void | LPI2C_SlaveTransmitAck (LPI2C_Type *base, bool ackOrNack) |
Transmits either an ACK or NAK on the I2C bus in response to a byte from the master. More... | |
static uint32_t | LPI2C_SlaveGetReceivedAddress (LPI2C_Type *base) |
Returns the slave address sent by the I2C master. More... | |
status_t | LPI2C_SlaveSend (LPI2C_Type *base, void *txBuff, size_t txSize, size_t *actualTxSize) |
Performs a polling send transfer on the I2C bus. More... | |
status_t | LPI2C_SlaveReceive (LPI2C_Type *base, void *rxBuff, size_t rxSize, size_t *actualRxSize) |
Performs a polling receive transfer on the I2C bus. More... | |
Slave non-blocking | |
void | LPI2C_SlaveTransferCreateHandle (LPI2C_Type *base, lpi2c_slave_handle_t *handle, lpi2c_slave_transfer_callback_t callback, void *userData) |
Creates a new handle for the LPI2C slave non-blocking APIs. More... | |
status_t | LPI2C_SlaveTransferNonBlocking (LPI2C_Type *base, lpi2c_slave_handle_t *handle, uint32_t eventMask) |
Starts accepting slave transfers. More... | |
status_t | LPI2C_SlaveTransferGetCount (LPI2C_Type *base, lpi2c_slave_handle_t *handle, size_t *count) |
Gets the slave transfer status during a non-blocking transfer. More... | |
void | LPI2C_SlaveTransferAbort (LPI2C_Type *base, lpi2c_slave_handle_t *handle) |
Aborts the slave non-blocking transfers. More... | |
Slave IRQ handler | |
void | LPI2C_SlaveTransferHandleIRQ (LPI2C_Type *base, lpi2c_slave_handle_t *handle) |
Reusable routine to handle slave interrupts. More... | |
struct lpi2c_slave_config_t |
This structure holds configuration settings for the LPI2C slave peripheral. To initialize this structure to reasonable defaults, call the LPI2C_SlaveGetDefaultConfig() function and pass a pointer to your configuration structure instance.
The configuration structure can be made constant so it resides in flash.
Data Fields | |
bool | enableSlave |
Enable slave mode. More... | |
uint8_t | address0 |
Slave's 7-bit address. More... | |
uint8_t | address1 |
Alternate slave 7-bit address. More... | |
lpi2c_slave_address_match_t | addressMatchMode |
Address matching options. More... | |
bool | filterDozeEnable |
Enable digital glitch filter in doze mode. More... | |
bool | filterEnable |
Enable digital glitch filter. More... | |
bool | enableGeneralCall |
Enable general call address matching. More... | |
bool | ignoreAck |
Continue transfers after a NACK is detected. More... | |
bool | enableReceivedAddressRead |
Enable reading the address received address as the first byte of data. More... | |
uint32_t | sdaGlitchFilterWidth_ns |
Width in nanoseconds of the digital filter on the SDA signal. More... | |
uint32_t | sclGlitchFilterWidth_ns |
Width in nanoseconds of the digital filter on the SCL signal. More... | |
uint32_t | dataValidDelay_ns |
Width in nanoseconds of the data valid delay. More... | |
uint32_t | clockHoldTime_ns |
Width in nanoseconds of the clock hold time. More... | |
bool | enableAck |
Enables SCL clock stretching during slave-transmit address byte(s) and slave-receiver address and data byte(s) to allow software to write the Transmit ACK Register before the ACK or NACK is transmitted. More... | |
bool | enableTx |
Enables SCL clock stretching when the transmit data flag is set during a slave-transmit transfer. More... | |
bool | enableRx |
Enables SCL clock stretching when receive data flag is set during a slave-receive transfer. More... | |
bool | enableAddress |
Enables SCL clock stretching when the address valid flag is asserted. More... | |
bool lpi2c_slave_config_t::enableSlave |
uint8_t lpi2c_slave_config_t::address0 |
uint8_t lpi2c_slave_config_t::address1 |
lpi2c_slave_address_match_t lpi2c_slave_config_t::addressMatchMode |
bool lpi2c_slave_config_t::filterDozeEnable |
bool lpi2c_slave_config_t::filterEnable |
bool lpi2c_slave_config_t::enableGeneralCall |
bool lpi2c_slave_config_t::enableAck |
Clock stretching occurs when transmitting the 9th bit. When enableAckSCLStall is enabled, there is no need to set either enableRxDataSCLStall or enableAddressSCLStall.
bool lpi2c_slave_config_t::enableTx |
bool lpi2c_slave_config_t::enableRx |
bool lpi2c_slave_config_t::enableAddress |
bool lpi2c_slave_config_t::ignoreAck |
bool lpi2c_slave_config_t::enableReceivedAddressRead |
uint32_t lpi2c_slave_config_t::sdaGlitchFilterWidth_ns |
uint32_t lpi2c_slave_config_t::sclGlitchFilterWidth_ns |
uint32_t lpi2c_slave_config_t::dataValidDelay_ns |
uint32_t lpi2c_slave_config_t::clockHoldTime_ns |
struct lpi2c_slave_transfer_t |
Data Fields | |
lpi2c_slave_transfer_event_t | event |
Reason the callback is being invoked. More... | |
uint8_t | receivedAddress |
Matching address send by master. More... | |
uint8_t * | data |
Transfer buffer. | |
size_t | dataSize |
Transfer size. | |
status_t | completionStatus |
Success or error code describing how the transfer completed. More... | |
size_t | transferredCount |
Number of bytes actually transferred since start or last repeated start. More... | |
lpi2c_slave_transfer_event_t lpi2c_slave_transfer_t::event |
uint8_t lpi2c_slave_transfer_t::receivedAddress |
status_t lpi2c_slave_transfer_t::completionStatus |
Only applies for kLPI2C_SlaveCompletionEvent.
size_t lpi2c_slave_transfer_t::transferredCount |
struct _lpi2c_slave_handle |
Data Fields | |
lpi2c_slave_transfer_t | transfer |
LPI2C slave transfer copy. More... | |
bool | isBusy |
Whether transfer is busy. More... | |
bool | wasTransmit |
Whether the last transfer was a transmit. More... | |
uint32_t | eventMask |
Mask of enabled events. More... | |
uint32_t | transferredCount |
Count of bytes transferred. More... | |
lpi2c_slave_transfer_callback_t | callback |
Callback function called at transfer event. More... | |
void * | userData |
Callback parameter passed to callback. More... | |
lpi2c_slave_transfer_t lpi2c_slave_handle_t::transfer |
bool lpi2c_slave_handle_t::isBusy |
bool lpi2c_slave_handle_t::wasTransmit |
uint32_t lpi2c_slave_handle_t::eventMask |
uint32_t lpi2c_slave_handle_t::transferredCount |
lpi2c_slave_transfer_callback_t lpi2c_slave_handle_t::callback |
void* lpi2c_slave_handle_t::userData |
typedef void(* lpi2c_slave_transfer_callback_t)(LPI2C_Type *base, lpi2c_slave_transfer_t *transfer, void *userData) |
This callback is used only for the slave non-blocking transfer API. To install a callback, use the LPI2C_SlaveSetCallback() function after you have created a handle.
base | Base address for the LPI2C instance on which the event occurred. |
transfer | Pointer to transfer descriptor containing values passed to and/or from the callback. |
userData | Arbitrary pointer-sized value passed from the application. |
enum _lpi2c_slave_flags |
The following status register flags can be cleared:
All flags except kLPI2C_SlaveBusyFlag and kLPI2C_SlaveBusBusyFlag can be enabled as interrupts.
These event enumerations are used for two related purposes. First, a bit mask created by OR'ing together events is passed to LPI2C_SlaveTransferNonBlocking() in order to specify which events to enable. Then, when the slave callback is invoked, it is passed the current event through its transfer parameter.
void LPI2C_SlaveGetDefaultConfig | ( | lpi2c_slave_config_t * | slaveConfig | ) |
This function provides the following default configuration for the LPI2C slave peripheral:
After calling this function, override any settings to customize the configuration, prior to initializing the master driver with LPI2C_SlaveInit(). Be sure to override at least the address0 member of the configuration structure with the desired slave address.
[out] | slaveConfig | User provided configuration structure that is set to default values. Refer to lpi2c_slave_config_t. |
void LPI2C_SlaveInit | ( | LPI2C_Type * | base, |
const lpi2c_slave_config_t * | slaveConfig, | ||
uint32_t | sourceClock_Hz | ||
) |
This function enables the peripheral clock and initializes the LPI2C slave peripheral as described by the user provided configuration.
base | The LPI2C peripheral base address. |
slaveConfig | User provided peripheral configuration. Use LPI2C_SlaveGetDefaultConfig() to get a set of defaults that you can override. |
sourceClock_Hz | Frequency in Hertz of the LPI2C functional clock. Used to calculate the filter widths, data valid delay, and clock hold time. |
void LPI2C_SlaveDeinit | ( | LPI2C_Type * | base | ) |
This function disables the LPI2C slave peripheral and gates the clock. It also performs a software reset to restore the peripheral to reset conditions.
base | The LPI2C peripheral base address. |
|
inlinestatic |
base | The LPI2C peripheral base address. |
|
inlinestatic |
base | The LPI2C peripheral base address. |
enable | Pass true to enable or false to disable the specified LPI2C as slave. |
|
inlinestatic |
A bit mask with the state of all LPI2C slave status flags is returned. For each flag, the corresponding bit in the return value is set if the flag is asserted.
base | The LPI2C peripheral base address. |
|
inlinestatic |
The following status register flags can be cleared:
Attempts to clear other flags has no effect.
base | The LPI2C peripheral base address. |
statusMask | A bitmask of status flags that are to be cleared. The mask is composed of _lpi2c_slave_flags enumerators OR'd together. You may pass the result of a previous call to LPI2C_SlaveGetStatusFlags(). |
|
inlinestatic |
All flags except kLPI2C_SlaveBusyFlag and kLPI2C_SlaveBusBusyFlag can be enabled as interrupts.
base | The LPI2C peripheral base address. |
interruptMask | Bit mask of interrupts to enable. See _lpi2c_slave_flags for the set of constants that should be OR'd together to form the bit mask. |
|
inlinestatic |
All flags except kLPI2C_SlaveBusyFlag and kLPI2C_SlaveBusBusyFlag can be enabled as interrupts.
base | The LPI2C peripheral base address. |
interruptMask | Bit mask of interrupts to disable. See _lpi2c_slave_flags for the set of constants that should be OR'd together to form the bit mask. |
|
inlinestatic |
base | The LPI2C peripheral base address. |
|
inlinestatic |
base | The LPI2C peripheral base address. |
enableAddressValid | Enable flag for the address valid DMA request. Pass true for enable, false for disable. The address valid DMA request is shared with the receive data DMA request. |
enableRx | Enable flag for the receive data DMA request. Pass true for enable, false for disable. |
enableTx | Enable flag for the transmit data DMA request. Pass true for enable, false for disable. |
|
inlinestatic |
Requires the slave mode to be enabled.
base | The LPI2C peripheral base address. |
true | Bus is busy. |
false | Bus is idle. |
|
inlinestatic |
Use this function to send an ACK or NAK when the kLPI2C_SlaveTransmitAckFlag is asserted. This only happens if you enable the sclStall.enableAck field of the lpi2c_slave_config_t configuration structure used to initialize the slave peripheral.
base | The LPI2C peripheral base address. |
ackOrNack | Pass true for an ACK or false for a NAK. |
|
inlinestatic |
This function should only be called if the kLPI2C_SlaveAddressValidFlag is asserted.
base | The LPI2C peripheral base address. |
status_t LPI2C_SlaveSend | ( | LPI2C_Type * | base, |
void * | txBuff, | ||
size_t | txSize, | ||
size_t * | actualTxSize | ||
) |
base | The LPI2C peripheral base address. | |
txBuff | The pointer to the data to be transferred. | |
txSize | The length in bytes of the data to be transferred. | |
[out] | actualTxSize |
status_t LPI2C_SlaveReceive | ( | LPI2C_Type * | base, |
void * | rxBuff, | ||
size_t | rxSize, | ||
size_t * | actualRxSize | ||
) |
base | The LPI2C peripheral base address. | |
rxBuff | The pointer to the data to be transferred. | |
rxSize | The length in bytes of the data to be transferred. | |
[out] | actualRxSize |
void LPI2C_SlaveTransferCreateHandle | ( | LPI2C_Type * | base, |
lpi2c_slave_handle_t * | handle, | ||
lpi2c_slave_transfer_callback_t | callback, | ||
void * | userData | ||
) |
The creation of a handle is for use with the non-blocking APIs. Once a handle is created, there is not a corresponding destroy handle. If the user wants to terminate a transfer, the LPI2C_SlaveTransferAbort() API shall be called.
base | The LPI2C peripheral base address. | |
[out] | handle | Pointer to the LPI2C slave driver handle. |
callback | User provided pointer to the asynchronous callback function. | |
userData | User provided pointer to the application callback data. |
status_t LPI2C_SlaveTransferNonBlocking | ( | LPI2C_Type * | base, |
lpi2c_slave_handle_t * | handle, | ||
uint32_t | eventMask | ||
) |
Call this API after calling I2C_SlaveInit() and LPI2C_SlaveTransferCreateHandle() to start processing transactions driven by an I2C master. The slave monitors the I2C bus and pass events to the callback that was passed into the call to LPI2C_SlaveTransferCreateHandle(). The callback is always invoked from the interrupt context.
The set of events received by the callback is customizable. To do so, set the eventMask parameter to the OR'd combination of lpi2c_slave_transfer_event_t enumerators for the events you wish to receive. The kLPI2C_SlaveTransmitEvent and kLPI2C_SlaveReceiveEvent events are always enabled and do not need to be included in the mask. Alternatively, you can pass 0 to get a default set of only the transmit and receive events that are always enabled. In addition, the kLPI2C_SlaveAllEvents constant is provided as a convenient way to enable all events.
base | The LPI2C peripheral base address. |
handle | Pointer to #lpi2c_slave_handle_t structure which stores the transfer state. |
eventMask | Bit mask formed by OR'ing together lpi2c_slave_transfer_event_t enumerators to specify which events to send to the callback. Other accepted values are 0 to get a default set of only the transmit and receive events, and kLPI2C_SlaveAllEvents to enable all events. |
#kStatus_Success | Slave transfers were successfully started. |
kStatus_LPI2C_Busy | Slave transfers have already been started on this handle. |
status_t LPI2C_SlaveTransferGetCount | ( | LPI2C_Type * | base, |
lpi2c_slave_handle_t * | handle, | ||
size_t * | count | ||
) |
base | The LPI2C peripheral base address. | |
handle | Pointer to i2c_slave_handle_t structure. | |
[out] | count | Pointer to a value to hold the number of bytes transferred. May be NULL if the count is not required. |
#kStatus_Success | |
#kStatus_NoTransferInProgress |
void LPI2C_SlaveTransferAbort | ( | LPI2C_Type * | base, |
lpi2c_slave_handle_t * | handle | ||
) |
base | The LPI2C peripheral base address. |
handle | Pointer to #lpi2c_slave_handle_t structure which stores the transfer state. |
#kStatus_Success | |
kStatus_LPI2C_Idle |
void LPI2C_SlaveTransferHandleIRQ | ( | LPI2C_Type * | base, |
lpi2c_slave_handle_t * | handle | ||
) |
base | The LPI2C peripheral base address. |
handle | Pointer to #lpi2c_slave_handle_t structure which stores the transfer state. |