TWIS HAL

group nrf_twis_hal

Hardware access layer for managing the Two Wire Interface Slave with EasyDMA (TWIS) peripheral.

Defines

NRF_TWIS_HAS_DMA_REG

Symbol indicating whether dedicated DMA register is present.

NRF_TWIS_HAS_DMA_TASKS_EVENTS

Symbol indicating whether TWIS DMA tasks and events are present.

NRF_TWIS_HAS_LIST_REG

Symbol indicating whether TX or RX LIST is present.

NRF_TWIS_TX_MAX_COUNT_SIZE

Symbol specifying maximum possible size of the TX channel buffer.

NRF_TWIS_RX_MAX_COUNT_SIZE

Symbol specifying maximum possible size of the RX channel buffer.

NRF_TWIS_INST_GET(idx)

Macro getting pointer to the structure of registers of the TWIS peripheral.

Parameters:
  • idx[in] TWIS instance index.

Returns:

Pointer to the structure of registers of the TWIS peripheral.

Typedefs

typedef uint8_t nrf_twis_address_t

Smallest variable type to hold the TWI address.

Variable of the minimum size that can hold a single TWI address.

Note

Defined to make it simple to change if the new TWI supports for example 10 bit addressing mode.

Enums

enum nrf_twis_task_t

TWIS tasks.

Values:

enumerator NRF_TWIS_TASK_STOP

Stop TWIS transaction.

enumerator NRF_TWIS_TASK_SUSPEND

Suspend TWIS transaction.

enumerator NRF_TWIS_TASK_RESUME

Resume TWIS transaction.

enumerator NRF_TWIS_TASK_PREPARERX

Prepare the TWIS slave to respond to a write command.

enumerator NRF_TWIS_TASK_PREPARETX

Prepare the TWIS slave to respond to a read command.

enum nrf_twis_event_t

TWIS events.

Values:

enumerator NRF_TWIS_EVENT_STOPPED

TWIS stopped.

enumerator NRF_TWIS_EVENT_ERROR

TWIS error.

enumerator NRF_TWIS_EVENT_RXSTARTED

Receive sequence started.

enumerator NRF_TWIS_EVENT_TXSTARTED

Transmit sequence started.

enumerator NRF_TWIS_EVENT_WRITE

Write command received.

enumerator NRF_TWIS_EVENT_READ

Read command received.

enum nrf_twis_short_mask_t

TWIS shortcuts.

Values:

enumerator NRF_TWIS_SHORT_WRITE_SUSPEND_MASK

Shortcut between WRITE event and SUSPEND task.

enumerator NRF_TWIS_SHORT_READ_SUSPEND_MASK

Shortcut between READ event and SUSPEND task.

enum nrf_twis_int_mask_t

TWIS interrupts.

Values:

enumerator NRF_TWIS_INT_STOPPED_MASK

Interrupt on STOPPED event.

enumerator NRF_TWIS_INT_ERROR_MASK

Interrupt on ERROR event.

enumerator NRF_TWIS_INT_RXSTARTED_MASK

Interrupt on RXSTARTED event.

enumerator NRF_TWIS_INT_TXSTARTED_MASK

Interrupt on TXSTARTED event.

enumerator NRF_TWIS_INT_WRITE_MASK

Interrupt on WRITE event.

enumerator NRF_TWIS_INT_READ_MASK

Interrupt on READ event.

enum nrf_twis_error_t

TWIS error source.

Values:

enumerator NRF_TWIS_ERROR_OVERFLOW

RX buffer overflow detected, and prevented.

enumerator NRF_TWIS_ERROR_DATA_NACK

NACK sent after receiving a data byte.

enumerator NRF_TWIS_ERROR_OVERREAD

TX buffer over-read detected, and prevented.

enum nrf_twis_config_addr_mask_t

TWIS address matching configuration.

Values:

enumerator NRF_TWIS_CONFIG_ADDRESS0_MASK

Enable or disable address matching on ADDRESS[0].

enumerator NRF_TWIS_CONFIG_ADDRESS1_MASK

Enable or disable address matching on ADDRESS[1].

enumerator NRF_TWIS_CONFIG_ADDRESS01_MASK

Enable both address matching.

Functions

NRF_STATIC_INLINE void nrf_twis_task_trigger(NRF_TWIS_Type *p_reg, nrf_twis_task_t task)

Function for activating the specified TWIS task.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

  • task[in] Task to be activated.

NRF_STATIC_INLINE uint32_t nrf_twis_task_address_get(NRF_TWIS_Type const *p_reg, nrf_twis_task_t task)

Function for returning the address of the specified TWIS task register.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

  • task[in] The specified task.

Returns:

Task address.

NRF_STATIC_INLINE void nrf_twis_event_clear(NRF_TWIS_Type *p_reg, nrf_twis_event_t event)

Function for clearing the specified event.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

  • event[in] The specified event.

NRF_STATIC_INLINE bool nrf_twis_event_check(NRF_TWIS_Type const *p_reg, nrf_twis_event_t event)

Function for retrieving the state of the TWIS event.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

  • event[in] Event to be checked.

Return values:
  • true – The event has been generated.

  • false – The event has not been generated.

NRF_STATIC_INLINE bool nrf_twis_event_get_and_clear(NRF_TWIS_Type *p_reg, nrf_twis_event_t event)

Function for getting and clearing the state of the specified event.

This function checks the state of the event and clears it.

Parameters:
  • p_reg[inout] Pointer to the structure of registers of the peripheral.

  • event[in] Event.

Return values:
  • true – The event was set.

  • false – The event was not set.

NRF_STATIC_INLINE uint32_t nrf_twis_event_address_get(NRF_TWIS_Type const *p_reg, nrf_twis_event_t event)

Function for returning the address of the specified TWIS event register.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

  • event[in] Event.

Returns:

Address.

NRF_STATIC_INLINE void nrf_twis_shorts_enable(NRF_TWIS_Type *p_reg, uint32_t mask)

Function for setting a shortcut.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

  • mask[in] Mask of shortcuts to be enabled.

NRF_STATIC_INLINE void nrf_twis_shorts_disable(NRF_TWIS_Type *p_reg, uint32_t mask)

Function for clearing shortcuts.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

  • mask[in] Mask of shortcuts to be disabled.

NRF_STATIC_INLINE uint32_t nrf_twis_shorts_get(NRF_TWIS_Type const *p_reg)

Function for getting the shorts mask.

Function returns shorts register.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

Returns:

Flags of currently enabled shortcuts

NRF_STATIC_INLINE void nrf_twis_int_enable(NRF_TWIS_Type *p_reg, uint32_t mask)

Function for enabling the specified interrupts.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

  • mask[in] Mask of interrupts to be enabled. Use nrf_twis_int_mask_t values for bit masking.

NRF_STATIC_INLINE uint32_t nrf_twis_int_enable_check(NRF_TWIS_Type const *p_reg, uint32_t mask)

Function for checking if the specified interrupts are enabled.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

  • mask[in] Mask of interrupts to be checked. Use nrf_twis_int_mask_t values for bit masking.

Returns:

Mask of enabled interrupts.

NRF_STATIC_INLINE void nrf_twis_int_disable(NRF_TWIS_Type *p_reg, uint32_t mask)

Function for disabling the specified interrupts.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

  • mask[in] Mask of interrupts to be disabled. Use nrf_twis_int_mask_t values for bit masking.

NRF_STATIC_INLINE void nrf_twis_subscribe_set(NRF_TWIS_Type *p_reg, nrf_twis_task_t task, uint8_t channel)

Function for setting the subscribe configuration for a given TWIS task.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

  • task[in] Task for which to set the configuration.

  • channel[in] Channel through which to subscribe events.

NRF_STATIC_INLINE void nrf_twis_subscribe_clear(NRF_TWIS_Type *p_reg, nrf_twis_task_t task)

Function for clearing the subscribe configuration for a given TWIS task.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

  • task[in] Task for which to clear the configuration.

NRF_STATIC_INLINE void nrf_twis_publish_set(NRF_TWIS_Type *p_reg, nrf_twis_event_t event, uint8_t channel)

Function for setting the publish configuration for a given TWIS event.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

  • event[in] Event for which to set the configuration.

  • channel[in] Channel through which to publish the event.

NRF_STATIC_INLINE void nrf_twis_publish_clear(NRF_TWIS_Type *p_reg, nrf_twis_event_t event)

Function for clearing the publish configuration for a given TWIS event.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

  • event[in] Event for which to clear the configuration.

NRF_STATIC_INLINE uint32_t nrf_twis_error_source_get_and_clear(NRF_TWIS_Type *p_reg)

Function for retrieving and clearing the TWIS error source.

Attention

Error sources are cleared after read.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

Returns:

Error source mask with values from nrf_twis_error_t.

NRF_STATIC_INLINE uint_fast8_t nrf_twis_match_get(NRF_TWIS_Type const *p_reg)

Function for getting information about which of the addresses matched.

Function returns index in the address table that points to the address that already matched.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

Returns:

Index of matched address.

NRF_STATIC_INLINE void nrf_twis_enable(NRF_TWIS_Type *p_reg)

Function for enabling TWIS.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

NRF_STATIC_INLINE void nrf_twis_disable(NRF_TWIS_Type *p_reg)

Function for disabling TWIS.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

NRF_STATIC_INLINE bool nrf_twis_enable_check(NRF_TWIS_Type const *p_reg)

Function for checking if the TWIS is enabled.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

Return values:
  • true – The TWIS is enabled.

  • false – The TWIS is not enabled.

NRF_STATIC_INLINE void nrf_twis_pins_set(NRF_TWIS_Type *p_reg, uint32_t scl, uint32_t sda)

Function for configuring TWIS pins.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

  • scl[in] SCL pin number.

  • sda[in] SDA pin number.

NRF_STATIC_INLINE uint32_t nrf_twis_scl_pin_get(NRF_TWIS_Type const *p_reg)

Function for retrieving the SCL pin selection.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

Returns:

SCL pin selection.

NRF_STATIC_INLINE uint32_t nrf_twis_sda_pin_get(NRF_TWIS_Type const *p_reg)

Function for retrieving the SDA pin selection.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

Returns:

SDA pin selection.

NRF_STATIC_INLINE void nrf_twis_rx_buffer_set(NRF_TWIS_Type *p_reg, uint8_t *p_buf, size_t length)

Function for setting the receive buffer.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

  • p_buf[in] Pointer to the buffer for received data.

  • length[in] Maximum number of data bytes to receive.

NRF_STATIC_INLINE uint8_t *nrf_twis_rx_buffer_get(NRF_TWIS_Type const *p_reg)

Function for getting the receive buffer.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

Returns:

Pointer to the receive buffer.

NRF_STATIC_INLINE void nrf_twis_rx_prepare(NRF_TWIS_Type *p_reg, uint8_t *p_buf, size_t length)

Function that prepares TWIS for receiving.

This function sets receive buffer and then sets NRF_TWIS_TASK_PREPARERX task.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

  • p_buf[in] Pointer to the buffer for received data.

  • length[in] Maximum number of data bytes to receive.

NRF_STATIC_INLINE size_t nrf_twis_rx_amount_get(NRF_TWIS_Type const *p_reg)

Function for getting number of bytes received in the last transaction.

Parameters:
  • p_reg[in] TWIS instance.

Returns:

Amount of received bytes.

NRF_STATIC_INLINE void nrf_twis_tx_buffer_set(NRF_TWIS_Type *p_reg, uint8_t const *p_buf, size_t length)

Function for setting the transmit buffer.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

  • p_buf[in] Pointer to the buffer with data to send.

  • length[in] Maximum number of data bytes to transmit.

NRF_STATIC_INLINE uint8_t *nrf_twis_tx_buffer_get(NRF_TWIS_Type const *p_reg)

Function for getting the transmit buffer.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

Returns:

Pointer to the transmit buffer.

NRF_STATIC_INLINE void nrf_twis_tx_prepare(NRF_TWIS_Type *p_reg, uint8_t const *p_buf, size_t length)

Function for preparing TWIS for transmitting.

This function sets transmit buffer and then sets NRF_TWIS_TASK_PREPARETX task.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

  • p_buf[in] Pointer to the buffer with data to send.

  • length[in] Maximum number of data bytes to transmit.

NRF_STATIC_INLINE size_t nrf_twis_tx_amount_get(NRF_TWIS_Type const *p_reg)

Function for getting the number of bytes transmitted in the last transaction.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

Returns:

Amount of bytes transmitted.

NRF_STATIC_INLINE void nrf_twis_address_set(NRF_TWIS_Type *p_reg, uint_fast8_t n, nrf_twis_address_t addr)

Function for setting the slave address.

Function sets the selected address for this TWI interface.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

  • n[in] Index of address to be set.

  • addr[in] Addres to be set.

NRF_STATIC_INLINE nrf_twis_address_t nrf_twis_address_get(NRF_TWIS_Type const *p_reg, uint_fast8_t n)

Function for retrieving configured slave address.

Function gets the selected address for this TWI interface.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

  • n[in] Index of address to get.

Returns:

Configured slave address.

NRF_STATIC_INLINE void nrf_twis_config_address_set(NRF_TWIS_Type *p_reg, nrf_twis_config_addr_mask_t addr_mask)

Function for setting the device address configuration.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

  • addr_mask[in] Mask of address indexes of what device should answer to.

NRF_STATIC_INLINE nrf_twis_config_addr_mask_t nrf_twis_config_address_get(NRF_TWIS_Type const *p_reg)

Function for retrieving the device address configuration.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

Returns:

Mask of address indexes of what device should answer to.

NRF_STATIC_INLINE void nrf_twis_orc_set(NRF_TWIS_Type *p_reg, uint8_t orc)

Function for setting the over-read character.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

  • orc[in] Over-read character. Character clocked out in case of over-read of the TXD buffer.

NRF_STATIC_INLINE uint8_t nrf_twis_orc_get(NRF_TWIS_Type const *p_reg)

Function for setting the over-read character.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

Returns:

Over-read character configured for selected instance.

NRF_STATIC_INLINE void nrf_twis_tx_list_enable(NRF_TWIS_Type *p_reg)

Function for enabling the TX list feature.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

NRF_STATIC_INLINE void nrf_twis_tx_list_disable(NRF_TWIS_Type *p_reg)

Function for disabling the TX list feature.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

NRF_STATIC_INLINE void nrf_twis_rx_list_enable(NRF_TWIS_Type *p_reg)

Function for enabling the RX list feature.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.

NRF_STATIC_INLINE void nrf_twis_rx_list_disable(NRF_TWIS_Type *p_reg)

Function for disabling the RX list feature.

Parameters:
  • p_reg[in] Pointer to the structure of registers of the peripheral.