![]() |
nrfx 4.5.0
|
Two Wire Interface Master with EasyDMA (TWIM) peripheral driver. More...
Topics | |
| TWIM peripheral driver configuration | |
Data Structures | |
| struct | nrfx_twim_xfer_desc_t |
| Structure for a TWIM transfer descriptor. More... | |
| struct | nrfx_twim_event_t |
| Structure for a TWIM event. More... | |
| struct | nrfx_twim_t |
| Structure for the TWIM driver instance. More... | |
| struct | nrfx_twim_config_t |
| Structure for the TWIM driver instance configuration. More... | |
Macros | |
| #define | NRFX_TWIM_INSTANCE(reg) |
| Macro for creating a TWIM driver instance. | |
| #define | NRFX_TWIM_DEFAULT_CONFIG(_pin_scl, _pin_sda) |
| TWIM driver default configuration. | |
| #define | NRFX_TWIM_FLAG_TX_POSTINC (1UL << 0) |
| Flag indicating that TX buffer address will be incremented after the transfer. | |
| #define | NRFX_TWIM_FLAG_RX_POSTINC (1UL << 1) |
| Flag indicating that RX buffer address will be incremented after the transfer. | |
| #define | NRFX_TWIM_FLAG_NO_XFER_EVT_HANDLER (1UL << 2) |
| Flag indicating that the interrupt after each transfer will be suppressed, and the event handler will not be called. | |
| #define | NRFX_TWIM_FLAG_HOLD_XFER (1UL << 3) |
| Flag indicating that the transfer will be set up, but not started. | |
| #define | NRFX_TWIM_FLAG_REPEATED_XFER (1UL << 4) |
| Flag indicating that the transfer will be executed multiple times. | |
| #define | NRFX_TWIM_FLAG_TX_NO_STOP (1UL << 5) |
| Flag indicating that the TX transfer will not end with a stop condition. | |
| #define | NRFX_TWIM_FLAG_NO_SPURIOUS_STOP_CHECK (1UL << 6) |
| Flag indicating that checks for spurious STOP condition will not be performed. | |
| #define | NRFX_TWIM_XFER_DESC(transfer, addr, p_buf1, buf_len1, p_buf2, buf_len2) |
| Macro for setting the transfer descriptor. | |
| #define | NRFX_TWIM_XFER_DESC_TX(addr, p_data, length) |
| Macro for setting the TX transfer descriptor. | |
| #define | NRFX_TWIM_XFER_DESC_RX(addr, p_data, length) |
| Macro for setting the RX transfer descriptor. | |
| #define | NRFX_TWIM_XFER_DESC_TXRX(addr, p_tx, tx_len, p_rx, rx_len) |
| Macro for setting the TX-RX transfer descriptor. | |
| #define | NRFX_TWIM_XFER_DESC_TXTX(addr, p_tx, tx_len, p_tx2, tx_len2) |
| Macro for setting the TX-TX transfer descriptor. | |
Typedefs | |
| typedef void(* | nrfx_twim_event_handler_t) (nrfx_twim_event_t const *p_event, void *p_context) |
| TWIM driver event handler type. | |
Enumerations | |
| enum | nrfx_twim_xfer_type_t { NRFX_TWIM_XFER_TX , NRFX_TWIM_XFER_RX , NRFX_TWIM_XFER_TXRX , NRFX_TWIM_XFER_TXTX } |
| TWIM driver transfer types. More... | |
| enum | nrfx_twim_event_type_t { NRFX_TWIM_EVT_DONE , NRFX_TWIM_EVT_ADDRESS_NACK , NRFX_TWIM_EVT_DATA_NACK , NRFX_TWIM_EVT_OVERRUN , NRFX_TWIM_EVT_BUS_ERROR } |
| TWIM driver event types. More... | |
Functions | |
| int | nrfx_twim_init (nrfx_twim_t *p_instance, nrfx_twim_config_t const *p_config, nrfx_twim_event_handler_t event_handler, void *p_context) |
| Function for initializing the TWIM driver instance. | |
| int | nrfx_twim_reconfigure (nrfx_twim_t *p_instance, nrfx_twim_config_t const *p_config) |
| Function for reconfiguring the TWIM instance. | |
| void | nrfx_twim_callback_get (nrfx_twim_t const *p_instance, nrfx_twim_event_handler_t *p_event_handler, void **pp_context) |
| Function for getting current TWIM event handler and associated context. | |
| int | nrfx_twim_callback_set (nrfx_twim_t *p_instance, nrfx_twim_event_handler_t event_handler, void *p_context) |
| Function for setting event handler of a TWIM instance. | |
| void | nrfx_twim_uninit (nrfx_twim_t *p_instance) |
| Function for uninitializing the TWIM instance. | |
| bool | nrfx_twim_init_check (nrfx_twim_t const *p_instance) |
| Function for checking if the TWIM driver instance is initialized. | |
| void | nrfx_twim_enable (nrfx_twim_t *p_instance) |
| Function for enabling the TWIM instance. | |
| void | nrfx_twim_disable (nrfx_twim_t *p_instance) |
| Function for disabling the TWIM instance. | |
| int | nrfx_twim_xfer (nrfx_twim_t *p_instance, nrfx_twim_xfer_desc_t const *p_xfer_desc, uint32_t flags) |
| Function for performing a TWIM transfer. | |
| bool | nrfx_twim_is_busy (nrfx_twim_t *p_instance) |
| Function for checking the TWIM driver state. | |
| uint32_t | nrfx_twim_start_task_address_get (nrfx_twim_t const *p_instance, nrfx_twim_xfer_type_t xfer_type) |
| Function for returning the address of a TWIM start task. | |
| uint32_t | nrfx_twim_stopped_event_address_get (nrfx_twim_t const *p_instance) |
| Function for returning the address of a STOPPED TWIM event. | |
| NRFX_STATIC_INLINE int | nrfx_twim_bus_recover (uint32_t scl_pin, uint32_t sda_pin) |
| Function for recovering the bus. | |
| void | nrfx_twim_irq_handler (nrfx_twim_t *p_instance) |
| Driver interrupt handler. | |
Two Wire Interface Master with EasyDMA (TWIM) peripheral driver.
| #define NRFX_TWIM_DEFAULT_CONFIG | ( | _pin_scl, | |
| _pin_sda ) |
TWIM driver default configuration.
This configuration sets up TWIM with the following options:
| [in] | _pin_scl | SCL pin. |
| [in] | _pin_sda | SDA pin. |
| #define NRFX_TWIM_INSTANCE | ( | reg | ) |
Macro for creating a TWIM driver instance.
| #define NRFX_TWIM_XFER_DESC | ( | transfer, | |
| addr, | |||
| p_buf1, | |||
| buf_len1, | |||
| p_buf2, | |||
| buf_len2 ) |
Macro for setting the transfer descriptor.
| #define NRFX_TWIM_XFER_DESC_RX | ( | addr, | |
| p_data, | |||
| length ) |
Macro for setting the RX transfer descriptor.
| #define NRFX_TWIM_XFER_DESC_TX | ( | addr, | |
| p_data, | |||
| length ) |
Macro for setting the TX transfer descriptor.
| #define NRFX_TWIM_XFER_DESC_TXRX | ( | addr, | |
| p_tx, | |||
| tx_len, | |||
| p_rx, | |||
| rx_len ) |
Macro for setting the TX-RX transfer descriptor.
| #define NRFX_TWIM_XFER_DESC_TXTX | ( | addr, | |
| p_tx, | |||
| tx_len, | |||
| p_tx2, | |||
| tx_len2 ) |
Macro for setting the TX-TX transfer descriptor.
TWIM driver event types.
| NRFX_STATIC_INLINE int nrfx_twim_bus_recover | ( | uint32_t | scl_pin, |
| uint32_t | sda_pin ) |
Function for recovering the bus.
This function checks if the bus is not stuck because of a slave holding the SDA line in the low state, and if needed it performs required number of pulses on the SCL line to make the slave release the SDA line. Finally, the function generates a STOP condition on the bus to put it into a known state.
| [in] | scl_pin | SCL pin number. |
| [in] | sda_pin | SDA pin number. |
| 0 | Bus recovery was successful. |
| -ECANCELED | Bus recovery failed. |
| void nrfx_twim_callback_get | ( | nrfx_twim_t const * | p_instance, |
| nrfx_twim_event_handler_t * | p_event_handler, | ||
| void ** | pp_context ) |
Function for getting current TWIM event handler and associated context.
| [in] | p_instance | Pointer to the driver instance structure. |
| [out] | p_event_handler | Pointer to be filled with the current event handler. |
| [out] | pp_context | Pointer to be filled with a pointer to the current event handler context. |
| int nrfx_twim_callback_set | ( | nrfx_twim_t * | p_instance, |
| nrfx_twim_event_handler_t | event_handler, | ||
| void * | p_context ) |
Function for setting event handler of a TWIM instance.
This function overwrites the internally stored values of event_handler and p_context parameters passed to the nrfx_twim_init function. To be able to restore previous event handler you can use the nrfx_twim_callback_get .
| [in] | p_instance | Pointer to the driver instance structure. |
| [in] | event_handler | Event handler provided by the user. Cannot be NULL. |
| [in] | p_context | Context passed to event handler. |
| 0 | Reconfiguration was successful. |
| -EBUSY | The driver is performing transaction. |
| -EINPROGRESS | The driver is configured in blocking mode. |
| void nrfx_twim_disable | ( | nrfx_twim_t * | p_instance | ) |
Function for disabling the TWIM instance.
| [in] | p_instance | Pointer to the driver instance structure. |
| void nrfx_twim_enable | ( | nrfx_twim_t * | p_instance | ) |
Function for enabling the TWIM instance.
| [in] | p_instance | Pointer to the driver instance structure. |
| int nrfx_twim_init | ( | nrfx_twim_t * | p_instance, |
| nrfx_twim_config_t const * | p_config, | ||
| nrfx_twim_event_handler_t | event_handler, | ||
| void * | p_context ) |
Function for initializing the TWIM driver instance.
| [in] | p_instance | Pointer to the driver instance structure. |
| [in] | p_config | Pointer to the structure with the initial configuration. |
| [in] | event_handler | Event handler provided by the user. If NULL, blocking mode is enabled. |
| [in] | p_context | Context passed to event handler. |
| 0 | Initialization was successful. |
| -EALREADY | The driver is already initialized. |
| -EINVAL | Requested frequency is not available on the specified pins. |
| -EBUSY | Some other peripheral with the same instance ID is already in use. This is possible only if Peripheral Resource Sharing (PRS) module is enabled. |
| bool nrfx_twim_init_check | ( | nrfx_twim_t const * | p_instance | ) |
Function for checking if the TWIM driver instance is initialized.
| [in] | p_instance | Pointer to the driver instance structure. |
| true | Instance is already initialized. |
| false | Instance is not initialized. |
| void nrfx_twim_irq_handler | ( | nrfx_twim_t * | p_instance | ) |
Driver interrupt handler.
| [in] | p_instance | Pointer to the driver instance structure. |
| bool nrfx_twim_is_busy | ( | nrfx_twim_t * | p_instance | ) |
Function for checking the TWIM driver state.
| [in] | p_instance | TWIM instance. |
| true | The TWIM driver is currently busy performing a transfer. |
| false | The TWIM driver is ready for a new transfer. |
| int nrfx_twim_reconfigure | ( | nrfx_twim_t * | p_instance, |
| nrfx_twim_config_t const * | p_config ) |
Function for reconfiguring the TWIM instance.
| [in] | p_instance | Pointer to the driver instance structure. |
| [in] | p_config | Pointer to the structure with the configuration. |
| 0 | Reconfiguration was successful. |
| -EBUSY | The driver is during transaction. |
| -EINPROGRESS | The driver is uninitialized. |
| -EINVAL | Requested frequency is not available on the specified pins. |
| uint32_t nrfx_twim_start_task_address_get | ( | nrfx_twim_t const * | p_instance, |
| nrfx_twim_xfer_type_t | xfer_type ) |
Function for returning the address of a TWIM start task.
This function is to be used if nrfx_twim_xfer was called with the flag NRFX_TWIM_FLAG_HOLD_XFER. In that case, the transfer is not started by the driver, but it must be started externally by PPI.
| [in] | p_instance | Pointer to the driver instance structure. |
| [in] | xfer_type | Transfer type used in the last call of the nrfx_twim_xfer function. |
| uint32_t nrfx_twim_stopped_event_address_get | ( | nrfx_twim_t const * | p_instance | ) |
Function for returning the address of a STOPPED TWIM event.
A STOPPED event can be used to detect the end of a transfer if the NRFX_TWIM_FLAG_NO_XFER_EVT_HANDLER option is used.
| [in] | p_instance | Pointer to the driver instance structure. |
| void nrfx_twim_uninit | ( | nrfx_twim_t * | p_instance | ) |
Function for uninitializing the TWIM instance.
| [in] | p_instance | Pointer to the driver instance structure. |
| int nrfx_twim_xfer | ( | nrfx_twim_t * | p_instance, |
| nrfx_twim_xfer_desc_t const * | p_xfer_desc, | ||
| uint32_t | flags ) |
Function for performing a TWIM transfer.
The following transfer types can be configured (nrfx_twim_xfer_desc_t::type):
Additional options are provided using the flags parameter:
If nrfx_twim_xfer_desc_t::type is set to NRFX_TWIM_XFER_TX and the NRFX_TWIM_FLAG_TX_NO_STOP and NRFX_TWIM_FLAG_REPEATED_XFER flags are set, two tasks must be used to trigger a transfer: TASKS_RESUME followed by TASKS_STARTTX. If no stop condition is generated, TWIM is in SUSPENDED state. Therefore, it must be resumed before the transfer can be started.
| [in] | p_instance | Pointer to the driver instance structure. |
| [in] | p_xfer_desc | Pointer to the transfer descriptor. |
| [in] | flags | Transfer options (0 for default settings). |
| 0 | The procedure is successful. |
| -EBUSY | The driver is not ready for a new transfer. |
| -ENOTSUP | The provided parameters are not supported. |
| -ECANCELED | An unexpected transition occurred on the bus. |
| -EACCES | The provided buffers are not placed in the Data RAM region. |
| -EOVERFLOW | The unread data is replaced by new data. |
| -EFAULT | NACK is received after sending the address. |
| -EAGAIN | NACK is received after sending a data byte. |