![]() |
MCUXpresso SDK API Reference Manual
Rev. 0
NXP Semiconductors
|
Data Structures | |
struct | i2c_slave_address_t |
Data structure for slave address configuration. More... | |
struct | i2c_slave_config_t |
Structure with settings to initialize the I2C slave module. More... | |
struct | i2c_slave_transfer_t |
I2C slave transfer structure. More... | |
struct | i2c_slave_handle_t |
I2C slave handle structure. More... | |
Typedefs | |
typedef void(* | i2c_slave_transfer_callback_t )(I2C0_Type *base, volatile i2c_slave_transfer_t *transfer, void *userData) |
Slave event callback function pointer type. More... | |
Slave initialization and deinitialization | |
void | I2C_SlaveGetDefaultConfig (i2c_slave_config_t *slaveConfig) |
Provides a default configuration for the I2C slave peripheral. More... | |
status_t | I2C_SlaveInit (I2C0_Type *base, const i2c_slave_config_t *slaveConfig) |
Initializes the I2C slave peripheral. More... | |
void | I2C_SlaveSetAddress (I2C0_Type *base, i2c_slave_address_register_t addressRegister, i2c_slave_address_t *addressConfig) |
Configures Slave Address n register. More... | |
void | I2C_SlaveDeinit (I2C0_Type *base) |
Deinitializes the I2C slave peripheral. More... | |
static void | I2C_SlaveEnable (I2C0_Type *base, bool enable) |
Enables or disables the I2C module as slave. More... | |
Slave status | |
static uint32_t | I2C_SlaveGetStatusFlags (I2C0_Type *base) |
Gets the I2C slave status flags. More... | |
static void | I2C_SlaveClearStatusFlags (I2C0_Type *base, uint32_t statusMask) |
Clears the I2C status flag state. More... | |
Slave bus operations | |
status_t | I2C_SlaveWriteBlocking (I2C0_Type *base, const uint8_t *txBuff, size_t txSize) |
Performs a polling send transfer on the I2C bus. More... | |
status_t | I2C_SlaveReadBlocking (I2C0_Type *base, uint8_t *rxBuff, size_t rxSize) |
Performs a polling receive transfer on the I2C bus. More... | |
Slave non-blocking | |
void | I2C_SlaveTransferCreateHandle (I2C0_Type *base, i2c_slave_handle_t *handle, i2c_slave_transfer_callback_t callback, void *userData) |
Creates a new handle for the I2C slave non-blocking APIs. More... | |
status_t | I2C_SlaveTransferNonBlocking (I2C0_Type *base, i2c_slave_handle_t *handle, uint32_t eventMask) |
Starts accepting slave transfers. More... | |
void | I2C_SlaveTransferAbort (I2C0_Type *base, i2c_slave_handle_t *handle) |
Aborts the slave non-blocking transfers. More... | |
status_t | I2C_SlaveTransferGetCount (I2C0_Type *base, i2c_slave_handle_t *handle, size_t *count) |
Gets the slave transfer remaining bytes during a interrupt non-blocking transfer. More... | |
Slave IRQ handler | |
void | I2C_SlaveTransferHandleIRQ (I2C0_Type *base, void *i2cHandle) |
Reusable routine to handle slave interrupts. More... | |
struct i2c_slave_address_t |
Data Fields | |
uint8_t | address |
7-bit Slave address . More... | |
uint8_t | addressMask |
Slave address mask. More... | |
bool | enableGeneralCall |
Enable general call. More... | |
uint8_t i2c_slave_address_t::address |
uint8_t i2c_slave_address_t::addressMask |
bool i2c_slave_address_t::enableGeneralCall |
struct i2c_slave_config_t |
This structure holds configuration settings for the I2C slave peripheral. To initialize this structure to reasonable defaults, call the I2C_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 | |
i2c_slave_address_t | address0 |
Slave address0 configuration. More... | |
i2c_slave_address_t | address1 |
Slave address1 configuration. More... | |
i2c_slave_address_t | address2 |
Slave address2 configuration. More... | |
i2c_slave_address_t | address3 |
Slave address3 configuration. More... | |
bool | enableSlave |
Enable slave mode. More... | |
i2c_slave_address_t i2c_slave_config_t::address0 |
i2c_slave_address_t i2c_slave_config_t::address1 |
i2c_slave_address_t i2c_slave_config_t::address2 |
i2c_slave_address_t i2c_slave_config_t::address3 |
bool i2c_slave_config_t::enableSlave |
struct i2c_slave_transfer_t |
Data Fields | |
i2c_slave_transfer_event_t | event |
Reason the callback is being invoked. More... | |
uint8_t | receivedAddress |
Matching address send by master. More... | |
uint32_t | eventMask |
Mask of enabled events. More... | |
uint8_t * | rxData |
Transfer buffer for receive data. | |
const uint8_t * | txData |
Transfer buffer for transmit data. | |
size_t | txSize |
Transfer size. | |
size_t | rxSize |
Transfer size. | |
size_t | transferredCount |
Number of bytes transferred during this transfer. More... | |
status_t | completionStatus |
Success or error code describing how the transfer completed. More... | |
i2c_slave_transfer_event_t i2c_slave_transfer_t::event |
uint8_t i2c_slave_transfer_t::receivedAddress |
7-bits plus R/nW bit0
uint32_t i2c_slave_transfer_t::eventMask |
size_t i2c_slave_transfer_t::transferredCount |
status_t i2c_slave_transfer_t::completionStatus |
Only applies for kI2C_SlaveCompletionEvent.
struct _i2c_slave_handle |
I2C slave handle typedef.
Data Fields | |
volatile i2c_slave_transfer_t | transfer |
I2C slave transfer. More... | |
volatile bool | isBusy |
Whether transfer is busy. More... | |
i2c_slave_transfer_callback_t | callback |
Callback function called at transfer event. More... | |
void * | userData |
Callback parameter passed to callback. More... | |
volatile i2c_slave_transfer_t i2c_slave_handle_t::transfer |
volatile bool i2c_slave_handle_t::isBusy |
i2c_slave_transfer_callback_t i2c_slave_handle_t::callback |
void* i2c_slave_handle_t::userData |
typedef void(* i2c_slave_transfer_callback_t)(I2C0_Type *base, volatile i2c_slave_transfer_t *transfer, void *userData) |
This callback is used only for the slave non-blocking transfer API. To install a callback, use the I2C_SlaveSetCallback() function after you have created a handle.
base | Base address for the I2C 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 _i2c_slave_state |
These event enumerations are used for two related purposes. First, a bit mask created by OR'ing together events is passed to I2C_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 I2C_SlaveGetDefaultConfig | ( | i2c_slave_config_t * | slaveConfig | ) |
This function provides the following default configuration for the I2C slave peripheral:
After calling this function, override any settings to customize the configuration, prior to initializing the master driver with I2C_SlaveInit(). Be sure to override at least the address0.address member of the configuration structure with the desired slave address.
[out] | slaveConfig | User provided configuration structure that is set to default values. Refer to i2c_slave_config_t. |
status_t I2C_SlaveInit | ( | I2C0_Type * | base, |
const i2c_slave_config_t * | slaveConfig | ||
) |
This function enables the peripheral clock and initializes the I2C slave peripheral as described by the user provided configuration.
base | The I2C peripheral base address. |
slaveConfig | User provided peripheral configuration. Use I2C_SlaveGetDefaultConfig() to get a set of defaults that you can override. |
srcClock_Hz | Frequency in Hertz of the I2C functional clock. Used to calculate CLKDIV value to provide enough data setup time for master when slave stretches the clock. |
void I2C_SlaveSetAddress | ( | I2C0_Type * | base, |
i2c_slave_address_register_t | addressRegister, | ||
i2c_slave_address_t * | addressConfig | ||
) |
This function writes new value to Slave Address register.
base | The I2C peripheral base address. |
addressRegister | The module supports multiple address registers. The parameter determines which one shall be changed. |
addressConfig | The slave address configuration. |
void I2C_SlaveDeinit | ( | I2C0_Type * | base | ) |
This function disables the I2C slave peripheral and gates the clock. It also performs a software reset to restore the peripheral to reset conditions.
base | The I2C peripheral base address. |
|
inlinestatic |
base | The I2C peripheral base address. |
enable | True to enable or flase to disable. |
|
inlinestatic |
A bit mask with the state of all I2C control flags is returned. For each flag, the corresponding bit in the return value is set if the flag is asserted.
base | The I2C peripheral base address. |
|
inlinestatic |
The following status register flags can be cleared:
Attempts to clear other flags has no effect.
base | The I2C peripheral base address. |
statusMask | A bitmask of status flags that are to be cleared. The mask is composed of #_i2c_slave_flags enumerators OR'd together. You may pass the result of a previous call to I2C_SlaveGetStatusFlags(). |
status_t I2C_SlaveWriteBlocking | ( | I2C0_Type * | base, |
const uint8_t * | txBuff, | ||
size_t | txSize | ||
) |
The function executes blocking address phase and blocking data phase.
base | The I2C peripheral base address. |
txBuff | The pointer to the data to be transferred. |
txSize | The length in bytes of the data to be transferred. |
status_t I2C_SlaveReadBlocking | ( | I2C0_Type * | base, |
uint8_t * | rxBuff, | ||
size_t | rxSize | ||
) |
The function executes blocking address phase and blocking data phase.
base | The I2C peripheral base address. |
rxBuff | The pointer to the data to be transferred. |
rxSize | The length in bytes of the data to be transferred. |
void I2C_SlaveTransferCreateHandle | ( | I2C0_Type * | base, |
i2c_slave_handle_t * | handle, | ||
i2c_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 I2C_SlaveTransferAbort() API shall be called.
base | The I2C peripheral base address. | |
[out] | handle | Pointer to the I2C slave driver handle. |
callback | User provided pointer to the asynchronous callback function. | |
userData | User provided pointer to the application callback data. |
status_t I2C_SlaveTransferNonBlocking | ( | I2C0_Type * | base, |
i2c_slave_handle_t * | handle, | ||
uint32_t | eventMask | ||
) |
Call this API after calling I2C_SlaveInit() and I2C_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 I2C_SlaveTransferCreateHandle(). The callback is always invoked from the interrupt context.
If no slave Tx transfer is busy, a master read from slave request invokes kI2C_SlaveTransmitEvent callback. If no slave Rx transfer is busy, a master write to slave request invokes kI2C_SlaveReceiveEvent callback.
The set of events received by the callback is customizable. To do so, set the eventMask parameter to the OR'd combination of i2c_slave_transfer_event_t enumerators for the events you wish to receive. The kI2C_SlaveTransmitEvent and kI2C_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 kI2C_SlaveAllEvents constant is provided as a convenient way to enable all events.
base | The I2C peripheral base address. |
handle | Pointer to i2c_slave_handle_t structure which stores the transfer state. |
eventMask | Bit mask formed by OR'ing together i2c_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 kI2C_SlaveAllEvents to enable all events. |
kStatus_Success | Slave transfers were successfully started. |
kStatus_I2C_Busy | Slave transfers have already been started on this handle. |
void I2C_SlaveTransferAbort | ( | I2C0_Type * | base, |
i2c_slave_handle_t * | handle | ||
) |
base | The I2C peripheral base address. |
handle | Pointer to i2c_slave_handle_t structure which stores the transfer state. |
status_t I2C_SlaveTransferGetCount | ( | I2C0_Type * | base, |
i2c_slave_handle_t * | handle, | ||
size_t * | count | ||
) |
base | I2C base pointer. |
handle | pointer to i2c_slave_handle_t structure. |
count | Number of bytes transferred so far by the non-blocking transaction. |
kStatus_InvalidArgument | count is Invalid. |
kStatus_Success | Successfully return the count. |
void I2C_SlaveTransferHandleIRQ | ( | I2C0_Type * | base, |
void * | i2cHandle | ||
) |
base | The I2C peripheral base address. |
handle | Pointer to i2c_slave_handle_t structure which stores the transfer state. |