Modules | |
Lpi2c_slave_driver | |
Classes | |
struct | _lpi2c_master_config |
Structure with settings to initialize the LPI2C master module. More... | |
struct | _lpi2c_master_handle |
Driver handle for master non-blocking APIs. More... | |
struct | _lpi2c_master_transfer |
Non-blocking transfer descriptor structure. More... | |
struct | _lpi2c_match_config |
LPI2C master data match configuration structure. More... | |
Typedefs | |
typedef enum _lpi2c_data_match_config_mode | lpi2c_data_match_config_mode_t |
LPI2C master data match configuration modes. More... | |
typedef struct _lpi2c_match_config | lpi2c_data_match_config_t |
LPI2C master data match configuration structure. More... | |
typedef enum _lpi2c_direction | lpi2c_direction_t |
Direction of master and slave transfers. More... | |
typedef enum _lpi2c_host_request_polarity | lpi2c_host_request_polarity_t |
LPI2C master host request pin polarity configuration. More... | |
typedef enum _lpi2c_host_request_source | lpi2c_host_request_source_t |
LPI2C master host request selection. More... | |
typedef struct _lpi2c_master_config | lpi2c_master_config_t |
Structure with settings to initialize the LPI2C master module. More... | |
typedef struct _lpi2c_master_handle | lpi2c_master_handle_t |
typedef enum _lpi2c_master_pin_config | lpi2c_master_pin_config_t |
LPI2C pin configuration. More... | |
typedef void(* | lpi2c_master_transfer_callback_t) (LPI2C_Type *base, lpi2c_master_handle_t *handle, status_t completionStatus, void *userData) |
Master completion callback function pointer type. More... | |
typedef struct _lpi2c_master_transfer | lpi2c_master_transfer_t |
Initialization and deinitialization | |
void | LPI2C_MasterGetDefaultConfig (lpi2c_master_config_t *masterConfig) |
Provides a default configuration for the LPI2C master peripheral. More... | |
void | LPI2C_MasterInit (LPI2C_Type *base, const lpi2c_master_config_t *masterConfig, uint32_t sourceClock_Hz) |
Initializes the LPI2C master peripheral. More... | |
void | LPI2C_MasterDeinit (LPI2C_Type *base) |
Deinitializes the LPI2C master peripheral. More... | |
void | LPI2C_MasterConfigureDataMatch (LPI2C_Type *base, const lpi2c_data_match_config_t *config) |
Configures LPI2C master data match feature. More... | |
status_t | LPI2C_MasterCheckAndClearError (LPI2C_Type *base, uint32_t status) |
Convert provided flags to status code, and clear any errors if present. More... | |
status_t | LPI2C_CheckForBusyBus (LPI2C_Type *base) |
Make sure the bus isn't already busy. More... | |
static void | LPI2C_MasterReset (LPI2C_Type *base) |
Performs a software reset. More... | |
static void | LPI2C_MasterEnable (LPI2C_Type *base, bool enable) |
Enables or disables the LPI2C module as master. More... | |
Status | |
static uint32_t | LPI2C_MasterGetStatusFlags (LPI2C_Type *base) |
Gets the LPI2C master status flags. More... | |
static void | LPI2C_MasterClearStatusFlags (LPI2C_Type *base, uint32_t statusMask) |
Clears the LPI2C master status flag state. More... | |
Interrupts | |
static void | LPI2C_MasterEnableInterrupts (LPI2C_Type *base, uint32_t interruptMask) |
Enables the LPI2C master interrupt requests. More... | |
static void | LPI2C_MasterDisableInterrupts (LPI2C_Type *base, uint32_t interruptMask) |
Disables the LPI2C master interrupt requests. More... | |
static uint32_t | LPI2C_MasterGetEnabledInterrupts (LPI2C_Type *base) |
Returns the set of currently enabled LPI2C master interrupt requests. More... | |
DMA control | |
static void | LPI2C_MasterEnableDMA (LPI2C_Type *base, bool enableTx, bool enableRx) |
Enables or disables LPI2C master DMA requests. More... | |
static uint32_t | LPI2C_MasterGetTxFifoAddress (LPI2C_Type *base) |
Gets LPI2C master transmit data register address for DMA transfer. More... | |
static uint32_t | LPI2C_MasterGetRxFifoAddress (LPI2C_Type *base) |
Gets LPI2C master receive data register address for DMA transfer. More... | |
FIFO control | |
static void | LPI2C_MasterSetWatermarks (LPI2C_Type *base, size_t txWords, size_t rxWords) |
Sets the watermarks for LPI2C master FIFOs. More... | |
static void | LPI2C_MasterGetFifoCounts (LPI2C_Type *base, size_t *rxCount, size_t *txCount) |
Gets the current number of words in the LPI2C master FIFOs. More... | |
Bus operations | |
void | LPI2C_MasterSetBaudRate (LPI2C_Type *base, uint32_t sourceClock_Hz, uint32_t baudRate_Hz) |
Sets the I2C bus frequency for master transactions. More... | |
static bool | LPI2C_MasterGetBusIdleState (LPI2C_Type *base) |
Returns whether the bus is idle. More... | |
status_t | LPI2C_MasterStart (LPI2C_Type *base, uint8_t address, lpi2c_direction_t dir) |
Sends a START signal and slave address on the I2C bus. More... | |
static status_t | LPI2C_MasterRepeatedStart (LPI2C_Type *base, uint8_t address, lpi2c_direction_t dir) |
Sends a repeated START signal and slave address on the I2C bus. More... | |
status_t | LPI2C_MasterSend (LPI2C_Type *base, void *txBuff, size_t txSize) |
Performs a polling send transfer on the I2C bus. More... | |
status_t | LPI2C_MasterReceive (LPI2C_Type *base, void *rxBuff, size_t rxSize) |
Performs a polling receive transfer on the I2C bus. More... | |
status_t | LPI2C_MasterStop (LPI2C_Type *base) |
Sends a STOP signal on the I2C bus. More... | |
status_t | LPI2C_MasterTransferBlocking (LPI2C_Type *base, lpi2c_master_transfer_t *transfer) |
Performs a master polling transfer on the I2C bus. More... | |
Non-blocking | |
void | LPI2C_MasterTransferCreateHandle (LPI2C_Type *base, lpi2c_master_handle_t *handle, lpi2c_master_transfer_callback_t callback, void *userData) |
Creates a new handle for the LPI2C master non-blocking APIs. More... | |
status_t | LPI2C_MasterTransferNonBlocking (LPI2C_Type *base, lpi2c_master_handle_t *handle, lpi2c_master_transfer_t *transfer) |
Performs a non-blocking transaction on the I2C bus. More... | |
status_t | LPI2C_MasterTransferGetCount (LPI2C_Type *base, lpi2c_master_handle_t *handle, size_t *count) |
Returns number of bytes transferred so far. More... | |
void | LPI2C_MasterTransferAbort (LPI2C_Type *base, lpi2c_master_handle_t *handle) |
Terminates a non-blocking LPI2C master transmission early. More... | |
IRQ handler | |
void | LPI2C_MasterTransferHandleIRQ (LPI2C_Type *base, lpi2c_master_handle_t *handle) |
Reusable routine to handle master interrupts. More... | |
LPI2C master data match configuration modes.
typedef struct _lpi2c_match_config lpi2c_data_match_config_t |
LPI2C master data match configuration structure.
typedef enum _lpi2c_direction lpi2c_direction_t |
Direction of master and slave transfers.
LPI2C master host request pin polarity configuration.
typedef enum _lpi2c_host_request_source lpi2c_host_request_source_t |
LPI2C master host request selection.
typedef struct _lpi2c_master_config lpi2c_master_config_t |
Structure with settings to initialize the LPI2C master module.
This structure holds configuration settings for the LPI2C peripheral. To initialize this structure to reasonable defaults, call the LPI2C_MasterGetDefaultConfig() function and pass a pointer to your configuration structure instance.
The configuration structure can be made constant so it resides in flash.
typedef struct _lpi2c_master_handle lpi2c_master_handle_t |
Definition at line 184 of file fsl_lpi2c.h.
typedef enum _lpi2c_master_pin_config lpi2c_master_pin_config_t |
LPI2C pin configuration.
typedef void(* lpi2c_master_transfer_callback_t) (LPI2C_Type *base, lpi2c_master_handle_t *handle, status_t completionStatus, void *userData) |
Master completion callback function pointer type.
This callback is used only for the non-blocking master transfer API. Specify the callback you wish to use in the call to LPI2C_MasterTransferCreateHandle().
base | The LPI2C peripheral base address. |
completionStatus | Either kStatus_Success or an error code describing how the transfer completed. |
userData | Arbitrary pointer-sized value passed from the application. |
Definition at line 196 of file fsl_lpi2c.h.
typedef struct _lpi2c_master_transfer lpi2c_master_transfer_t |
Definition at line 183 of file fsl_lpi2c.h.
anonymous enum |
LPI2C master peripheral flags.
The following status register flags can be cleared:
All flags except kLPI2C_MasterBusyFlag and kLPI2C_MasterBusBusyFlag can be enabled as interrupts.
Definition at line 76 of file fsl_lpi2c.h.
LPI2C master data match configuration modes.
Definition at line 158 of file fsl_lpi2c.h.
enum _lpi2c_direction |
Direction of master and slave transfers.
Enumerator | |
---|---|
kLPI2C_Write | Master transmit. |
kLPI2C_Read | Master receive. |
Definition at line 92 of file fsl_lpi2c.h.
LPI2C master host request pin polarity configuration.
Enumerator | |
---|---|
kLPI2C_HostRequestPinActiveLow | Configure the LPI2C_HREQ pin active low |
kLPI2C_HostRequestPinActiveHigh | Configure the LPI2C_HREQ pin active high |
Definition at line 122 of file fsl_lpi2c.h.
LPI2C master host request selection.
Enumerator | |
---|---|
kLPI2C_HostRequestExternalPin | Select the LPI2C_HREQ pin as the host request input |
kLPI2C_HostRequestInputTrigger | Select the input trigger as the host request input |
Definition at line 115 of file fsl_lpi2c.h.
LPI2C pin configuration.
Definition at line 99 of file fsl_lpi2c.h.
Transfer option flags.
Definition at line 207 of file fsl_lpi2c.h.
status_t LPI2C_CheckForBusyBus | ( | LPI2C_Type * | base | ) |
Make sure the bus isn't already busy.
A busy bus is allowed if we are the one driving it.
base | The LPI2C peripheral base address. |
kStatus_Success | |
kStatus_LPI2C_Busy |
Definition at line 319 of file fsl_lpi2c.c.
status_t LPI2C_MasterCheckAndClearError | ( | LPI2C_Type * | base, |
uint32_t | status | ||
) |
Convert provided flags to status code, and clear any errors if present.
base | The LPI2C peripheral base address. |
status | Current status flags value that will be checked. |
kStatus_Success | |
kStatus_LPI2C_PinLowTimeout | |
kStatus_LPI2C_ArbitrationLost | |
kStatus_LPI2C_Nak | |
kStatus_LPI2C_FifoError |
Definition at line 217 of file fsl_lpi2c.c.
|
inlinestatic |
Clears the LPI2C master status flag state.
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_master_flags enumerators OR'd together. You may pass the result of a previous call to LPI2C_MasterGetStatusFlags(). |
Definition at line 550 of file fsl_lpi2c.h.
void LPI2C_MasterConfigureDataMatch | ( | LPI2C_Type * | base, |
const lpi2c_data_match_config_t * | config | ||
) |
Configures LPI2C master data match feature.
base | The LPI2C peripheral base address. |
config | Settings for the data match feature. |
brief Configures LPI2C master data match feature.
param base The LPI2C peripheral base address. param config Settings for the data match feature.
Definition at line 502 of file fsl_lpi2c.c.
void LPI2C_MasterDeinit | ( | LPI2C_Type * | base | ) |
Deinitializes the LPI2C master peripheral.
This function disables the LPI2C master peripheral and gates the clock. It also performs a software reset to restore the peripheral to reset conditions.
base | The LPI2C peripheral base address. |
brief Deinitializes the LPI2C master peripheral.
This function disables the LPI2C master peripheral and gates the clock. It also performs a software reset to restore the peripheral to reset conditions.
param base The LPI2C peripheral base address.
Definition at line 477 of file fsl_lpi2c.c.
|
inlinestatic |
Disables the LPI2C master interrupt requests.
All flags except kLPI2C_MasterBusyFlag and kLPI2C_MasterBusBusyFlag can be enabled as interrupts.
base | The LPI2C peripheral base address. |
interruptMask | Bit mask of interrupts to disable. See _lpi2c_master_flags for the set of constants that should be OR'd together to form the bit mask. |
Definition at line 585 of file fsl_lpi2c.h.
|
inlinestatic |
Enables or disables the LPI2C module as master.
base | The LPI2C peripheral base address. |
enable | Pass true to enable or false to disable the specified LPI2C as master. |
Definition at line 503 of file fsl_lpi2c.h.
|
inlinestatic |
Enables or disables LPI2C master DMA requests.
base | The LPI2C peripheral base address. |
enableTx | Enable flag for transmit DMA request. Pass true for enable, false for disable. |
enableRx | Enable flag for receive DMA request. Pass true for enable, false for disable. |
Definition at line 614 of file fsl_lpi2c.h.
|
inlinestatic |
Enables the LPI2C master interrupt requests.
All flags except kLPI2C_MasterBusyFlag and kLPI2C_MasterBusBusyFlag can be enabled as interrupts.
base | The LPI2C peripheral base address. |
interruptMask | Bit mask of interrupts to enable. See _lpi2c_master_flags for the set of constants that should be OR'd together to form the bit mask. |
Definition at line 570 of file fsl_lpi2c.h.
|
inlinestatic |
Returns whether the bus is idle.
Requires the master mode to be enabled.
base | The LPI2C peripheral base address. |
true | Bus is busy. |
false | Bus is idle. |
Definition at line 713 of file fsl_lpi2c.h.
void LPI2C_MasterGetDefaultConfig | ( | lpi2c_master_config_t * | masterConfig | ) |
Provides a default configuration for the LPI2C master peripheral.
This function provides the following default configuration for the LPI2C master peripheral:
After calling this function, you can override any settings in order to customize the configuration, prior to initializing the master driver with LPI2C_MasterInit().
[out] | masterConfig | User provided configuration structure for default values. Refer to lpi2c_master_config_t. |
brief Provides a default configuration for the LPI2C master peripheral.
This function provides the following default configuration for the LPI2C master peripheral: code masterConfig->enableMaster = true; masterConfig->debugEnable = false; masterConfig->ignoreAck = false; masterConfig->pinConfig = kLPI2C_2PinOpenDrain; masterConfig->baudRate_Hz = 100000U; masterConfig->busIdleTimeout_ns = 0U; masterConfig->pinLowTimeout_ns = 0U; masterConfig->sdaGlitchFilterWidth_ns = 0U; masterConfig->sclGlitchFilterWidth_ns = 0U; masterConfig->hostRequest.enable = false; masterConfig->hostRequest.source = kLPI2C_HostRequestExternalPin; masterConfig->hostRequest.polarity = kLPI2C_HostRequestPinActiveHigh; endcode
After calling this function, you can override any settings in order to customize the configuration, prior to initializing the master driver with LPI2C_MasterInit().
param[out] masterConfig User provided configuration structure for default values. Refer to lpi2c_master_config_t.
Definition at line 356 of file fsl_lpi2c.c.
|
inlinestatic |
Returns the set of currently enabled LPI2C master interrupt requests.
base | The LPI2C peripheral base address. |
Definition at line 597 of file fsl_lpi2c.h.
|
inlinestatic |
Gets the current number of words in the LPI2C master FIFOs.
base | The LPI2C peripheral base address. | |
[out] | txCount | Pointer through which the current number of words in the transmit FIFO is returned. Pass NULL if this value is not required. |
[out] | rxCount | Pointer through which the current number of words in the receive FIFO is returned. Pass NULL if this value is not required. |
Definition at line 671 of file fsl_lpi2c.h.
|
inlinestatic |
Gets LPI2C master receive data register address for DMA transfer.
base | The LPI2C peripheral base address. |
Definition at line 636 of file fsl_lpi2c.h.
|
inlinestatic |
Gets the LPI2C master status flags.
A bit mask with the state of all LPI2C master 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. |
Definition at line 525 of file fsl_lpi2c.h.
|
inlinestatic |
Gets LPI2C master transmit data register address for DMA transfer.
base | The LPI2C peripheral base address. |
Definition at line 625 of file fsl_lpi2c.h.
void LPI2C_MasterInit | ( | LPI2C_Type * | base, |
const lpi2c_master_config_t * | masterConfig, | ||
uint32_t | sourceClock_Hz | ||
) |
Initializes the LPI2C master peripheral.
This function enables the peripheral clock and initializes the LPI2C master peripheral as described by the user provided configuration. A software reset is performed prior to configuration.
base | The LPI2C peripheral base address. |
masterConfig | User provided peripheral configuration. Use LPI2C_MasterGetDefaultConfig() to get a set of defaults that you can override. |
sourceClock_Hz | Frequency in Hertz of the LPI2C functional clock. Used to calculate the baud rate divisors, filter widths, and timeout periods. |
brief Initializes the LPI2C master peripheral.
This function enables the peripheral clock and initializes the LPI2C master peripheral as described by the user provided configuration. A software reset is performed prior to configuration.
param base The LPI2C peripheral base address. param masterConfig User provided peripheral configuration. Use LPI2C_MasterGetDefaultConfig() to get a set of defaults that you can override. param sourceClock_Hz Frequency in Hertz of the LPI2C functional clock. Used to calculate the baud rate divisors, filter widths, and timeout periods.
Definition at line 389 of file fsl_lpi2c.c.
status_t LPI2C_MasterReceive | ( | LPI2C_Type * | base, |
void * | rxBuff, | ||
size_t | rxSize | ||
) |
Performs a polling receive transfer on the I2C bus.
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. |
kStatus_Success | Data was received successfully. |
kStatus_LPI2C_Busy | Another master is currently utilizing the bus. |
kStatus_LPI2C_Nak | The slave device sent a NAK in response to a byte. |
kStatus_LPI2C_FifoError | FIFO under run or overrun. |
kStatus_LPI2C_ArbitrationLost | Arbitration lost error. |
kStatus_LPI2C_PinLowTimeout | SCL or SDA were held low longer than the timeout. |
brief Performs a polling receive transfer on the I2C bus.
param base The LPI2C peripheral base address. param rxBuff The pointer to the data to be transferred. param rxSize The length in bytes of the data to be transferred. retval kStatus_Success Data was received successfully. retval kStatus_LPI2C_Busy Another master is currently utilizing the bus. retval kStatus_LPI2C_Nak The slave device sent a NAK in response to a byte. retval kStatus_LPI2C_FifoError FIFO under run or overrun. retval kStatus_LPI2C_ArbitrationLost Arbitration lost error. retval kStatus_LPI2C_PinLowTimeout SCL or SDA were held low longer than the timeout.
Definition at line 736 of file fsl_lpi2c.c.
|
inlinestatic |
Sends a repeated START signal and slave address on the I2C bus.
This function is used to send a Repeated START signal when a transfer is already in progress. Like LPI2C_MasterStart(), it also sends the specified 7-bit address.
base | The LPI2C peripheral base address. |
address | 7-bit slave device address, in bits [6:0]. |
dir | Master transfer direction, either kLPI2C_Read or kLPI2C_Write. This parameter is used to set the R/w bit (bit 0) in the transmitted slave address. |
kStatus_Success | Repeated START signal and address were successfully enqueued in the transmit FIFO. |
kStatus_LPI2C_Busy | Another master is currently utilizing the bus. |
Definition at line 751 of file fsl_lpi2c.h.
|
inlinestatic |
Performs a software reset.
Restores the LPI2C master peripheral to reset conditions.
base | The LPI2C peripheral base address. |
Definition at line 491 of file fsl_lpi2c.h.
status_t LPI2C_MasterSend | ( | LPI2C_Type * | base, |
void * | txBuff, | ||
size_t | txSize | ||
) |
Performs a polling send transfer on the I2C bus.
Sends up to txSize number of bytes to the previously addressed slave device. The slave may reply with a NAK to any byte in order to terminate the transfer early. If this happens, this function returns kStatus_LPI2C_Nak.
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. |
kStatus_Success | Data was sent successfully. |
kStatus_LPI2C_Busy | Another master is currently utilizing the bus. |
kStatus_LPI2C_Nak | The slave device sent a NAK in response to a byte. |
kStatus_LPI2C_FifoError | FIFO under run or over run. |
kStatus_LPI2C_ArbitrationLost | Arbitration lost error. |
kStatus_LPI2C_PinLowTimeout | SCL or SDA were held low longer than the timeout. |
brief Performs a polling send transfer on the I2C bus.
Sends up to a txSize number of bytes to the previously addressed slave device. The slave may reply with a NAK to any byte in order to terminate the transfer early. If this happens, this function returns kStatus_LPI2C_Nak.
param base The LPI2C peripheral base address. param txBuff The pointer to the data to be transferred. param txSize The length in bytes of the data to be transferred. retval kStatus_Success Data was sent successfully. retval kStatus_LPI2C_Busy Another master is currently utilizing the bus. retval kStatus_LPI2C_Nak The slave device sent a NAK in response to a byte. retval kStatus_LPI2C_FifoError FIFO under run or over run. retval kStatus_LPI2C_ArbitrationLost Arbitration lost error. retval kStatus_LPI2C_PinLowTimeout SCL or SDA were held low longer than the timeout.
Definition at line 816 of file fsl_lpi2c.c.
void LPI2C_MasterSetBaudRate | ( | LPI2C_Type * | base, |
uint32_t | sourceClock_Hz, | ||
uint32_t | baudRate_Hz | ||
) |
Sets the I2C bus frequency for master transactions.
The LPI2C master is automatically disabled and re-enabled as necessary to configure the baud rate. Do not call this function during a transfer, or the transfer is aborted.
base | The LPI2C peripheral base address. |
sourceClock_Hz | LPI2C functional clock frequency in Hertz. |
baudRate_Hz | Requested bus frequency in Hertz. |
brief Sets the I2C bus frequency for master transactions.
The LPI2C master is automatically disabled and re-enabled as necessary to configure the baud rate. Do not call this function during a transfer, or the transfer is aborted.
note Please note that the second parameter is the clock frequency of LPI2C module, the third parameter means user configured bus baudrate, this implementation is different from other I2C drivers which use baudrate configuration as second parameter and source clock frequency as third parameter.
param base The LPI2C peripheral base address. param sourceClock_Hz LPI2C functional clock frequency in Hertz. param baudRate_Hz Requested bus frequency in Hertz.
Definition at line 533 of file fsl_lpi2c.c.
|
inlinestatic |
Sets the watermarks for LPI2C master FIFOs.
base | The LPI2C peripheral base address. |
txWords | Transmit FIFO watermark value in words. The kLPI2C_MasterTxReadyFlag flag is set whenever the number of words in the transmit FIFO is equal or less than txWords. Writing a value equal or greater than the FIFO size is truncated. |
rxWords | Receive FIFO watermark value in words. The kLPI2C_MasterRxReadyFlag flag is set whenever the number of words in the receive FIFO is greater than rxWords. Writing a value equal or greater than the FIFO size is truncated. |
Definition at line 657 of file fsl_lpi2c.h.
status_t LPI2C_MasterStart | ( | LPI2C_Type * | base, |
uint8_t | address, | ||
lpi2c_direction_t | dir | ||
) |
Sends a START signal and slave address on the I2C bus.
This function is used to initiate a new master mode transfer. First, the bus state is checked to ensure that another master is not occupying the bus. Then a START signal is transmitted, followed by the 7-bit address specified in the address parameter. Note that this function does not actually wait until the START and address are successfully sent on the bus before returning.
base | The LPI2C peripheral base address. |
address | 7-bit slave device address, in bits [6:0]. |
dir | Master transfer direction, either kLPI2C_Read or kLPI2C_Write. This parameter is used to set the R/w bit (bit 0) in the transmitted slave address. |
kStatus_Success | START signal and address were successfully enqueued in the transmit FIFO. |
kStatus_LPI2C_Busy | Another master is currently utilizing the bus. |
brief Sends a START signal and slave address on the I2C bus.
This function is used to initiate a new master mode transfer. First, the bus state is checked to ensure that another master is not occupying the bus. Then a START signal is transmitted, followed by the 7-bit address specified in the a address parameter. Note that this function does not actually wait until the START and address are successfully sent on the bus before returning.
param base The LPI2C peripheral base address. param address 7-bit slave device address, in bits [6:0]. param dir Master transfer direction, either kLPI2C_Read or kLPI2C_Write. This parameter is used to set the R/w bit (bit 0) in the transmitted slave address. retval kStatus_Success START signal and address were successfully enqueued in the transmit FIFO. retval kStatus_LPI2C_Busy Another master is currently utilizing the bus.
Definition at line 634 of file fsl_lpi2c.c.
status_t LPI2C_MasterStop | ( | LPI2C_Type * | base | ) |
Sends a STOP signal on the I2C bus.
This function does not return until the STOP signal is seen on the bus, or an error occurs.
base | The LPI2C peripheral base address. |
kStatus_Success | The STOP signal was successfully sent on the bus and the transaction terminated. |
kStatus_LPI2C_Busy | Another master is currently utilizing the bus. |
kStatus_LPI2C_Nak | The slave device sent a NAK in response to a byte. |
kStatus_LPI2C_FifoError | FIFO under run or overrun. |
kStatus_LPI2C_ArbitrationLost | Arbitration lost error. |
kStatus_LPI2C_PinLowTimeout | SCL or SDA were held low longer than the timeout. |
brief Sends a STOP signal on the I2C bus.
This function does not return until the STOP signal is seen on the bus, or an error occurs.
param base The LPI2C peripheral base address. retval kStatus_Success The STOP signal was successfully sent on the bus and the transaction terminated. retval kStatus_LPI2C_Busy Another master is currently utilizing the bus. retval kStatus_LPI2C_Nak The slave device sent a NAK in response to a byte. retval kStatus_LPI2C_FifoError FIFO under run or overrun. retval kStatus_LPI2C_ArbitrationLost Arbitration lost error. retval kStatus_LPI2C_PinLowTimeout SCL or SDA were held low longer than the timeout.
Definition at line 675 of file fsl_lpi2c.c.
void LPI2C_MasterTransferAbort | ( | LPI2C_Type * | base, |
lpi2c_master_handle_t * | handle | ||
) |
Terminates a non-blocking LPI2C master transmission early.
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 non-blocking transaction currently in progress. |
brief Terminates a non-blocking LPI2C master transmission early.
note It is not safe to call this function from an IRQ handler that has a higher priority than the LPI2C peripheral's IRQ priority.
param base The LPI2C peripheral base address. param handle Pointer to the LPI2C master driver handle. retval kStatus_Success A transaction was successfully aborted. retval kStatus_LPI2C_Idle There is not a non-blocking transaction currently in progress.
Definition at line 1383 of file fsl_lpi2c.c.
status_t LPI2C_MasterTransferBlocking | ( | LPI2C_Type * | base, |
lpi2c_master_transfer_t * | transfer | ||
) |
Performs a master polling transfer on the I2C bus.
base | The LPI2C peripheral base address. |
transfer | Pointer to the transfer structure. |
kStatus_Success | Data was received successfully. |
kStatus_LPI2C_Busy | Another master is currently utilizing the bus. |
kStatus_LPI2C_Nak | The slave device sent a NAK in response to a byte. |
kStatus_LPI2C_FifoError | FIFO under run or overrun. |
kStatus_LPI2C_ArbitrationLost | Arbitration lost error. |
kStatus_LPI2C_PinLowTimeout | SCL or SDA were held low longer than the timeout. |
brief Performs a master polling transfer on the I2C bus.
note The API does not return until the transfer succeeds or fails due to error happens during transfer.
param base The LPI2C peripheral base address. param transfer Pointer to the transfer structure. retval kStatus_Success Data was received successfully. retval kStatus_LPI2C_Busy Another master is currently utilizing the bus. retval kStatus_LPI2C_Nak The slave device sent a NAK in response to a byte. retval kStatus_LPI2C_FifoError FIFO under run or overrun. retval kStatus_LPI2C_ArbitrationLost Arbitration lost error. retval kStatus_LPI2C_PinLowTimeout SCL or SDA were held low longer than the timeout.
Definition at line 854 of file fsl_lpi2c.c.
void LPI2C_MasterTransferCreateHandle | ( | LPI2C_Type * | base, |
lpi2c_master_handle_t * | handle, | ||
lpi2c_master_transfer_callback_t | callback, | ||
void * | userData | ||
) |
Creates a new handle for the LPI2C master non-blocking APIs.
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_MasterTransferAbort() API shall be called.
base | The LPI2C peripheral base address. | |
[out] | handle | Pointer to the LPI2C master driver handle. |
callback | User provided pointer to the asynchronous callback function. | |
userData | User provided pointer to the application callback data. |
brief Creates a new handle for the LPI2C master non-blocking APIs.
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_MasterTransferAbort() API shall be called.
note The function also enables the NVIC IRQ for the input LPI2C. Need to notice that on some SoCs the LPI2C IRQ is connected to INTMUX, in this case user needs to enable the associated INTMUX IRQ in application.
param base The LPI2C peripheral base address. param[out] handle Pointer to the LPI2C master driver handle. param callback User provided pointer to the asynchronous callback function. param userData User provided pointer to the application callback data.
Definition at line 965 of file fsl_lpi2c.c.
status_t LPI2C_MasterTransferGetCount | ( | LPI2C_Type * | base, |
lpi2c_master_handle_t * | handle, | ||
size_t * | count | ||
) |
Returns number of bytes transferred so far.
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 non-blocking transaction currently in progress. |
brief Returns number of bytes transferred so far. param base The LPI2C peripheral base address. param handle Pointer to the LPI2C master driver handle. param[out] count Number of bytes transferred so far by the non-blocking transaction. retval kStatus_Success retval kStatus_NoTransferInProgress There is not a non-blocking transaction currently in progress.
Definition at line 1319 of file fsl_lpi2c.c.
void LPI2C_MasterTransferHandleIRQ | ( | LPI2C_Type * | base, |
lpi2c_master_handle_t * | handle | ||
) |
Reusable routine to handle master interrupts.
base | The LPI2C peripheral base address. |
handle | Pointer to the LPI2C master driver handle. |
brief Reusable routine to handle master interrupts. note This function does not need to be called unless you are reimplementing the nonblocking API's interrupt handler routines to add special functionality. param base The LPI2C peripheral base address. param handle Pointer to the LPI2C master driver handle.
Definition at line 1408 of file fsl_lpi2c.c.
status_t LPI2C_MasterTransferNonBlocking | ( | LPI2C_Type * | base, |
lpi2c_master_handle_t * | handle, | ||
lpi2c_master_transfer_t * | transfer | ||
) |
Performs a non-blocking transaction on the I2C bus.
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 a non-blocking transaction is already in progress. |
brief Performs a non-blocking transaction on the I2C bus.
param base The LPI2C peripheral base address. param handle Pointer to the LPI2C master driver handle. param transfer The pointer to the transfer descriptor. retval kStatus_Success The transaction was started successfully. retval kStatus_LPI2C_Busy Either another master is currently utilizing the bus, or a non-blocking transaction is already in progress.
Definition at line 1264 of file fsl_lpi2c.c.