Two Wire Interface master (TWI) peripheral driver.
More...
|
#define | NRFX_TWI_INSTANCE(id) |
| Macro for creating a TWI master driver instance. More...
|
|
#define | NRFX_TWI_DEFAULT_CONFIG(_pin_scl, _pin_sda) |
| TWI master driver instance default configuration. More...
|
|
#define | NRFX_TWI_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_TWI_FLAG_TX_NO_STOP (1UL << 5) |
| Flag indicating that the TX transfer will not end with a stop condition.
|
|
#define | NRFX_TWI_FLAG_SUSPEND (1UL << 6) |
| Flag indicating that the transfer will be suspended.
|
|
#define | NRFX_TWI_XFER_DESC_TX(addr, p_data, length) |
| Macro for setting the TX transfer descriptor. More...
|
|
#define | NRFX_TWI_XFER_DESC_RX(addr, p_data, length) |
| Macro for setting the RX transfer descriptor. More...
|
|
#define | NRFX_TWI_XFER_DESC_TXRX(addr, p_tx, tx_len, p_rx, rx_len) |
| Macro for setting the TX-RX transfer descriptor. More...
|
|
#define | NRFX_TWI_XFER_DESC_TXTX(addr, p_tx, tx_len, p_tx2, tx_len2) |
| Macro for setting the TX-TX transfer descriptor. More...
|
|
Two Wire Interface master (TWI) peripheral driver.
◆ NRFX_TWI_DEFAULT_CONFIG
#define NRFX_TWI_DEFAULT_CONFIG |
( |
|
_pin_scl, |
|
|
|
_pin_sda |
|
) |
| |
Value:{ \
.scl = _pin_scl, \
.sda = _pin_sda, \
.hold_bus_uninit = false, \
}
#define NRFX_TWI_DEFAULT_CONFIG_IRQ_PRIORITY
Interrupt priority.
Definition: nrfx_twi_dox_config.h:45
100 kbps.
Definition: nrf_twi.h:79
TWI master driver instance default configuration.
This configuration sets up TWI with the following options:
- clock frequency: 100 kHz
- disable bus holding after uninit
- Parameters
-
[in] | _pin_scl | SCL pin. |
[in] | _pin_sda | SDA pin. |
◆ NRFX_TWI_INSTANCE
#define NRFX_TWI_INSTANCE |
( |
|
id | ) |
|
Value:{ \
}
#define NRFX_CONCAT_2(p1, p2)
Macro for concatenating two tokens in macro expansion.
Definition: nrfx_common.h:67
#define NRFX_CONCAT_3(p1, p2, p3)
Macro for concatenating three tokens in macro expansion.
Definition: nrfx_common.h:88
Macro for creating a TWI master driver instance.
◆ NRFX_TWI_XFER_DESC_RX
#define NRFX_TWI_XFER_DESC_RX |
( |
|
addr, |
|
|
|
p_data, |
|
|
|
length |
|
) |
| |
Value:{ \
.address = (addr), \
.primary_length = (length), \
.secondary_length = 0, \
.p_primary_buf = (p_data), \
.p_secondary_buf = NULL, \
}
RX transfer.
Definition: nrfx_twi.h:99
Macro for setting the RX transfer descriptor.
◆ NRFX_TWI_XFER_DESC_TX
#define NRFX_TWI_XFER_DESC_TX |
( |
|
addr, |
|
|
|
p_data, |
|
|
|
length |
|
) |
| |
Value:{ \
.address = (addr), \
.primary_length = (length), \
.secondary_length = 0, \
.p_primary_buf = (p_data), \
.p_secondary_buf = NULL, \
}
TX transfer.
Definition: nrfx_twi.h:98
Macro for setting the TX transfer descriptor.
◆ NRFX_TWI_XFER_DESC_TXRX
#define NRFX_TWI_XFER_DESC_TXRX |
( |
|
addr, |
|
|
|
p_tx, |
|
|
|
tx_len, |
|
|
|
p_rx, |
|
|
|
rx_len |
|
) |
| |
Value:{ \
.address = (addr), \
.primary_length = (tx_len), \
.secondary_length = (rx_len), \
.p_primary_buf = (p_tx), \
.p_secondary_buf = (p_rx), \
}
TX transfer followed by RX transfer with repeated start.
Definition: nrfx_twi.h:100
Macro for setting the TX-RX transfer descriptor.
◆ NRFX_TWI_XFER_DESC_TXTX
#define NRFX_TWI_XFER_DESC_TXTX |
( |
|
addr, |
|
|
|
p_tx, |
|
|
|
tx_len, |
|
|
|
p_tx2, |
|
|
|
tx_len2 |
|
) |
| |
Value:{ \
.address = (addr), \
.primary_length = (tx_len), \
.secondary_length = (tx_len2), \
.p_primary_buf = (p_tx), \
.p_secondary_buf = (p_tx2), \
}
TX transfer followed by TX transfer with repeated start.
Definition: nrfx_twi.h:101
Macro for setting the TX-TX transfer descriptor.
◆ nrfx_twi_evt_type_t
TWI master driver event types.
Enumerator |
---|
NRFX_TWI_EVT_DONE | Transfer completed event.
|
NRFX_TWI_EVT_ADDRESS_NACK | Error event: NACK received after sending the address.
|
NRFX_TWI_EVT_DATA_NACK | Error event: NACK received after sending a data byte.
|
NRFX_TWI_EVT_OVERRUN | Error event: The unread data is replaced by new data.
|
NRFX_TWI_EVT_BUS_ERROR | Error event: An unexpected transition occurred on the bus.
|
◆ nrfx_twi_xfer_type_t
TWI master driver transfer types.
Enumerator |
---|
NRFX_TWI_XFER_TX | TX transfer.
|
NRFX_TWI_XFER_RX | RX transfer.
|
NRFX_TWI_XFER_TXRX | TX transfer followed by RX transfer with repeated start.
|
NRFX_TWI_XFER_TXTX | TX transfer followed by TX transfer with repeated start.
|
◆ nrfx_twi_bus_recover()
NRFX_STATIC_INLINE nrfx_err_t nrfx_twi_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.
- Note
- This function can be used only if the TWI driver is uninitialized.
- Parameters
-
[in] | scl_pin | SCL pin number. |
[in] | sda_pin | SDA pin number. |
- Return values
-
NRFX_SUCCESS | Bus recovery was successful. |
NRFX_ERROR_INTERNAL | Bus recovery failed. |
◆ nrfx_twi_data_count_get()
size_t nrfx_twi_data_count_get |
( |
nrfx_twi_t const * |
p_instance | ) |
|
Function for getting the transferred data count.
- Parameters
-
[in] | p_instance | Pointer to the driver instance structure. |
- Returns
- Data count.
◆ nrfx_twi_disable()
void nrfx_twi_disable |
( |
nrfx_twi_t const * |
p_instance | ) |
|
Function for disabling the TWI instance.
- Parameters
-
[in] | p_instance | Pointer to the driver instance structure. |
◆ nrfx_twi_enable()
void nrfx_twi_enable |
( |
nrfx_twi_t const * |
p_instance | ) |
|
Function for enabling the TWI instance.
- Parameters
-
[in] | p_instance | Pointer to the driver instance structure. |
◆ nrfx_twi_init()
Function for initializing the TWI driver instance.
- Parameters
-
[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. |
- Return values
-
NRFX_SUCCESS | Initialization is successful. |
NRFX_ERROR_INVALID_STATE | The driver is in invalid state. |
NRFX_ERROR_BUSY | Some other peripheral with the same instance ID is already in use. This is possible only if Peripheral Resource Sharing (PRS) module is enabled. |
◆ nrfx_twi_is_busy()
bool nrfx_twi_is_busy |
( |
nrfx_twi_t const * |
p_instance | ) |
|
Function for checking the TWI driver state.
- Parameters
-
[in] | p_instance | TWI instance. |
- Return values
-
true | The TWI driver is currently busy performing a transfer. |
false | The TWI driver is ready for a new transfer. |
◆ nrfx_twi_stopped_event_get()
uint32_t nrfx_twi_stopped_event_get |
( |
nrfx_twi_t const * |
p_instance | ) |
|
Function for returning the address of a STOPPED TWI event.
A STOPPED event can be used to detect the end of a transfer if the NRFX_TWI_FLAG_NO_XFER_EVT_HANDLER option is used.
- Parameters
-
[in] | p_instance | Pointer to the driver instance structure. |
- Returns
- STOPPED event address.
◆ nrfx_twi_uninit()
void nrfx_twi_uninit |
( |
nrfx_twi_t const * |
p_instance | ) |
|
Function for uninitializing the TWI instance.
- Parameters
-
[in] | p_instance | Pointer to the driver instance structure. |
◆ nrfx_twi_xfer()
Function for performing a TWI transfer.
The following transfer types can be configured (nrfx_twi_xfer_desc_t::type):
- Note
- TX-RX and TX-TX transfers are supported only in non-blocking mode.
Additional options are provided using the flags parameter:
- NRFX_TWI_FLAG_NO_XFER_EVT_HANDLER - No user event handler after transfer completion. In most cases, this also means no interrupt at the end of the transfer.
- NRFX_TWI_FLAG_TX_NO_STOP - No stop condition after TX transfer.
- NRFX_TWI_FLAG_SUSPEND - Transfer will be suspended. This allows for combining multiple transfers into one transaction. Only transactions with the same direction can be combined. To finish the transaction, call the function without this flag.
- Note
- Some flag combinations are invalid:
- Parameters
-
[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). |
- Return values
-
NRFX_SUCCESS | The procedure is successful. |
NRFX_ERROR_BUSY | The driver is not ready for a new transfer. |
NRFX_ERROR_NOT_SUPPORTED | The provided parameters are not supported. |
NRFX_ERROR_INTERNAL | An unexpected transition occurred on the bus. |
NRFX_ERROR_INVALID_STATE | Other direction of transaction is suspended on the bus. |
NRFX_ERROR_DRV_TWI_ERR_OVERRUN | The unread data is replaced by new data (TXRX and RX) |
NRFX_ERROR_DRV_TWI_ERR_ANACK | Negative acknowledgement (NACK) is received after sending the address in polling mode. |
NRFX_ERROR_DRV_TWI_ERR_DNACK | Negative acknowledgement (NACK) is received after sending a data byte in polling mode. |