TWIS HAL

nRF5 SDK v17.0.2

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

Typedefs

typedef uint8_t nrf_twis_amount_t
Variable type to hold the amount of data for EasyDMA. More...
typedef uint8_t nrf_twis_address_t
Smallest variable type to hold the TWI address. More...

Enumerations

enum nrf_twis_task_t {
NRF_TWIS_TASK_STOP = offsetof(NRF_TWIS_Type, TASKS_STOP),
NRF_TWIS_TASK_SUSPEND = offsetof(NRF_TWIS_Type, TASKS_SUSPEND),
NRF_TWIS_TASK_RESUME = offsetof(NRF_TWIS_Type, TASKS_RESUME),
NRF_TWIS_TASK_PREPARERX = offsetof(NRF_TWIS_Type, TASKS_PREPARERX),
NRF_TWIS_TASK_PREPARETX = offsetof(NRF_TWIS_Type, TASKS_PREPARETX)
}
TWIS tasks. More...
enum nrf_twis_event_t {
NRF_TWIS_EVENT_STOPPED = offsetof(NRF_TWIS_Type, EVENTS_STOPPED),
NRF_TWIS_EVENT_ERROR = offsetof(NRF_TWIS_Type, EVENTS_ERROR),
NRF_TWIS_EVENT_RXSTARTED = offsetof(NRF_TWIS_Type, EVENTS_RXSTARTED),
NRF_TWIS_EVENT_TXSTARTED = offsetof(NRF_TWIS_Type, EVENTS_TXSTARTED),
NRF_TWIS_EVENT_WRITE = offsetof(NRF_TWIS_Type, EVENTS_WRITE),
NRF_TWIS_EVENT_READ = offsetof(NRF_TWIS_Type, EVENTS_READ)
}
TWIS events. More...
enum nrf_twis_short_mask_t {
NRF_TWIS_SHORT_WRITE_SUSPEND_MASK = TWIS_SHORTS_WRITE_SUSPEND_Msk,
NRF_TWIS_SHORT_READ_SUSPEND_MASK = TWIS_SHORTS_READ_SUSPEND_Msk
}
TWIS shortcuts. More...
enum nrf_twis_int_mask_t {
NRF_TWIS_INT_STOPPED_MASK = TWIS_INTEN_STOPPED_Msk,
NRF_TWIS_INT_ERROR_MASK = TWIS_INTEN_ERROR_Msk,
NRF_TWIS_INT_RXSTARTED_MASK = TWIS_INTEN_RXSTARTED_Msk,
NRF_TWIS_INT_TXSTARTED_MASK = TWIS_INTEN_TXSTARTED_Msk,
NRF_TWIS_INT_WRITE_MASK = TWIS_INTEN_WRITE_Msk,
NRF_TWIS_INT_READ_MASK = TWIS_INTEN_READ_Msk
}
TWIS interrupts. More...
enum nrf_twis_error_t {
NRF_TWIS_ERROR_OVERFLOW = TWIS_ERRORSRC_OVERFLOW_Msk,
NRF_TWIS_ERROR_DATA_NACK = TWIS_ERRORSRC_DNACK_Msk,
NRF_TWIS_ERROR_OVERREAD = TWIS_ERRORSRC_OVERREAD_Msk
}
TWIS error source. More...
enum nrf_twis_config_addr_mask_t {
NRF_TWIS_CONFIG_ADDRESS0_MASK = TWIS_CONFIG_ADDRESS0_Msk,
NRF_TWIS_CONFIG_ADDRESS1_MASK = TWIS_CONFIG_ADDRESS1_Msk,
NRF_TWIS_CONFIG_ADDRESS01_MASK = TWIS_CONFIG_ADDRESS0_Msk | TWIS_CONFIG_ADDRESS1_Msk
}
TWIS address matching configuration. More...

Functions

__STATIC_INLINE void nrf_twis_task_trigger (NRF_TWIS_Type *p_reg, nrf_twis_task_t task)
Function for activating the specified TWIS task. More...
__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. More...
__STATIC_INLINE void nrf_twis_event_clear (NRF_TWIS_Type *p_reg, nrf_twis_event_t event)
Function for clearing the specified event. More...
__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. More...
__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. More...
__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. More...
__STATIC_INLINE void nrf_twis_shorts_enable (NRF_TWIS_Type *p_reg, uint32_t mask)
Function for setting a shortcut. More...
__STATIC_INLINE void nrf_twis_shorts_disable (NRF_TWIS_Type *p_reg, uint32_t mask)
Function for clearing shortcuts. More...
__STATIC_INLINE uint32_t nrf_twis_shorts_get (NRF_TWIS_Type const *p_reg)
Function for getting the shorts mask. More...
__STATIC_INLINE void nrf_twis_int_enable (NRF_TWIS_Type *p_reg, uint32_t mask)
Function for enabling the specified interrupts. More...
__STATIC_INLINE bool nrf_twis_int_enable_check (NRF_TWIS_Type const *p_reg, uint32_t mask)
Function for retrieving the state of the specified interrupts. More...
__STATIC_INLINE void nrf_twis_int_disable (NRF_TWIS_Type *p_reg, uint32_t mask)
Function for disabling the specified interrupts. More...
__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. More...
__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. More...
__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. More...
__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. More...
__STATIC_INLINE uint32_t nrf_twis_error_source_get_and_clear (NRF_TWIS_Type *const p_reg)
Function for retrieving and clearing the TWIS error source. More...
__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. More...
__STATIC_INLINE void nrf_twis_enable (NRF_TWIS_Type *p_reg)
Function for enabling TWIS. More...
__STATIC_INLINE void nrf_twis_disable (NRF_TWIS_Type *p_reg)
Function for disabling TWIS. More...
__STATIC_INLINE void nrf_twis_pins_set (NRF_TWIS_Type *p_reg, uint32_t scl, uint32_t sda)
Function for configuring TWIS pins. More...
__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. More...
__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. More...
__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. More...
__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. More...
__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. More...
__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. More...
__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. More...
__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. More...
__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. More...
__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. More...
__STATIC_INLINE void nrf_twis_orc_set (NRF_TWIS_Type *p_reg, uint8_t orc)
Function for setting the over-read character. More...
__STATIC_INLINE uint8_t nrf_twis_orc_get (NRF_TWIS_Type const *p_reg)
Function for setting the over-read character. More...

Detailed Description

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

Typedef Documentation

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.
typedef uint8_t nrf_twis_amount_t

Variable type to hold the amount of data for EasyDMA.

Variable of the minimum size that can hold the amount of data to transfer.

Note
Defined to make it simple to change if EasyDMA is updated to support more data in the future devices.

Enumeration Type Documentation

TWIS address matching configuration.

Enumerator
NRF_TWIS_CONFIG_ADDRESS0_MASK

Enable or disable address matching on ADDRESS[0].

NRF_TWIS_CONFIG_ADDRESS1_MASK

Enable or disable address matching on ADDRESS[1].

NRF_TWIS_CONFIG_ADDRESS01_MASK

Enable both address matching.

TWIS error source.

Enumerator
NRF_TWIS_ERROR_OVERFLOW

RX buffer overflow detected, and prevented.

NRF_TWIS_ERROR_DATA_NACK

NACK sent after receiving a data byte.

NRF_TWIS_ERROR_OVERREAD

TX buffer over-read detected, and prevented.

TWIS events.

Enumerator
NRF_TWIS_EVENT_STOPPED

TWIS stopped.

NRF_TWIS_EVENT_ERROR

TWIS error.

NRF_TWIS_EVENT_RXSTARTED

Receive sequence started.

NRF_TWIS_EVENT_TXSTARTED

Transmit sequence started.

NRF_TWIS_EVENT_WRITE

Write command received.

NRF_TWIS_EVENT_READ

Read command received.

TWIS interrupts.

Enumerator
NRF_TWIS_INT_STOPPED_MASK

Interrupt on STOPPED event.

NRF_TWIS_INT_ERROR_MASK

Interrupt on ERROR event.

NRF_TWIS_INT_RXSTARTED_MASK

Interrupt on RXSTARTED event.

NRF_TWIS_INT_TXSTARTED_MASK

Interrupt on TXSTARTED event.

NRF_TWIS_INT_WRITE_MASK

Interrupt on WRITE event.

NRF_TWIS_INT_READ_MASK

Interrupt on READ event.

TWIS shortcuts.

Enumerator
NRF_TWIS_SHORT_WRITE_SUSPEND_MASK

Shortcut between WRITE event and SUSPEND task.

NRF_TWIS_SHORT_READ_SUSPEND_MASK

Shortcut between READ event and SUSPEND task.

TWIS tasks.

Enumerator
NRF_TWIS_TASK_STOP

Stop TWIS transaction.

NRF_TWIS_TASK_SUSPEND

Suspend TWIS transaction.

NRF_TWIS_TASK_RESUME

Resume TWIS transaction.

NRF_TWIS_TASK_PREPARERX

Prepare the TWIS slave to respond to a write command.

NRF_TWIS_TASK_PREPARETX

Prepare the TWIS slave to respond to a read command.

Function Documentation

__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
[in] p_reg Pointer to the structure of registers of the peripheral.
[in] n Index of address to get.
Returns
Configured slave address.
__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
[in] p_reg Pointer to the structure of registers of the peripheral.
[in] n Index of address to be set.
[in] addr Addres to be set.
See Also
nrf_twis_config_address_set
nrf_twis_config_address_get
__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
[in] p_reg Pointer to the structure of registers of the peripheral.
Returns
Mask of address indexes of what device should answer to.
__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
[in] p_reg Pointer to the structure of registers of the peripheral.
[in] addr_mask Mask of address indexes of what device should answer to.
See Also
nrf_twis_address_set
__STATIC_INLINE void nrf_twis_disable ( NRF_TWIS_Type * p_reg )

Function for disabling TWIS.

Parameters
[in] p_reg Pointer to the structure of registers of the peripheral.
__STATIC_INLINE void nrf_twis_enable ( NRF_TWIS_Type * p_reg )

Function for enabling TWIS.

Parameters
[in] p_reg Pointer to the structure of registers of the peripheral.
__STATIC_INLINE uint32_t nrf_twis_error_source_get_and_clear ( NRF_TWIS_Type *const p_reg )

Function for retrieving and clearing the TWIS error source.

Attention
Error sources are cleared after read.
Parameters
[in] p_reg Pointer to the structure of registers of the peripheral.
Returns
Error source mask with values from nrf_twis_error_t .
__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
[in] p_reg Pointer to the structure of registers of the peripheral.
[in] event Event.
Returns
Address.
__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
[in] p_reg Pointer to the structure of registers of the peripheral.
[in] event Event to be checked.
Return values
true The event has been generated.
false The event has not been generated.
__STATIC_INLINE void nrf_twis_event_clear ( NRF_TWIS_Type * p_reg ,
nrf_twis_event_t event
)

Function for clearing the specified event.

Parameters
[in] p_reg Pointer to the structure of registers of the peripheral.
[in] event The specified event.
__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
[in,out] p_reg Pointer to the structure of registers of the peripheral.
[in] event Event.
Return values
true The event was set.
false The event was not set.
__STATIC_INLINE void nrf_twis_int_disable ( NRF_TWIS_Type * p_reg ,
uint32_t mask
)

Function for disabling the specified interrupts.

Parameters
[in] p_reg Pointer to the structure of registers of the peripheral.
[in] mask Mask of interrupts to be disabled.
__STATIC_INLINE void nrf_twis_int_enable ( NRF_TWIS_Type * p_reg ,
uint32_t mask
)

Function for enabling the specified interrupts.

Parameters
[in] p_reg Pointer to the structure of registers of the peripheral.
[in] mask Mask of interrupts to be enabled.
__STATIC_INLINE bool nrf_twis_int_enable_check ( NRF_TWIS_Type const * p_reg ,
uint32_t mask
)

Function for retrieving the state of the specified interrupts.

Parameters
[in] p_reg Pointer to the structure of registers of the peripheral.
[in] mask Mask of interrupts to be checked.
Return values
true Any of the specified interrupts is enabled.
false None of the specified interrupts is enabled.
__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
[in] p_reg Pointer to the structure of registers of the peripheral.
Returns
Index of matched address.
__STATIC_INLINE uint8_t nrf_twis_orc_get ( NRF_TWIS_Type const * p_reg )

Function for setting the over-read character.

Parameters
[in] p_reg Pointer to the structure of registers of the peripheral.
Returns
Over-read character configured for selected instance.
__STATIC_INLINE void nrf_twis_orc_set ( NRF_TWIS_Type * p_reg ,
uint8_t orc
)

Function for setting the over-read character.

Parameters
[in] p_reg Pointer to the structure of registers of the peripheral.
[in] orc Over-read character. Character clocked out in case of over-read of the TXD buffer.
__STATIC_INLINE void nrf_twis_pins_set ( NRF_TWIS_Type * p_reg ,
uint32_t scl ,
uint32_t sda
)

Function for configuring TWIS pins.

Parameters
[in] p_reg Pointer to the structure of registers of the peripheral.
[in] scl SCL pin number.
[in] sda SDA pin number.
__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
[in] p_reg Pointer to the structure of registers of the peripheral.
[in] event Event for which to clear the configuration.
__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
[in] p_reg Pointer to the structure of registers of the peripheral.
[in] event Event for which to set the configuration.
[in] channel Channel through which to publish the event.
__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
[in] p_reg TWIS instance.
Returns
Amount of bytes received.
__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
[in] p_reg Pointer to the structure of registers of the peripheral.
[in] p_buf Pointer to the buffer for received data.
[in] length Maximum number of data bytes to receive.
__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
[in] p_reg Pointer to the structure of registers of the peripheral.
[in] p_buf Pointer to the buffer for received data.
[in] length Maximum number of data bytes to receive.
__STATIC_INLINE void nrf_twis_shorts_disable ( NRF_TWIS_Type * p_reg ,
uint32_t mask
)

Function for clearing shortcuts.

Parameters
[in] p_reg Pointer to the structure of registers of the peripheral.
[in] mask Mask of shortcuts to be disabled.
__STATIC_INLINE void nrf_twis_shorts_enable ( NRF_TWIS_Type * p_reg ,
uint32_t mask
)

Function for setting a shortcut.

Parameters
[in] p_reg Pointer to the structure of registers of the peripheral.
[in] mask Mask of shortcuts to be enabled.
__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
[in] p_reg Pointer to the structure of registers of the peripheral.
Returns
Flags of currently enabled shortcuts
__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
[in] p_reg Pointer to the structure of registers of the peripheral.
[in] task Task for which to clear the configuration.
__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
[in] p_reg Pointer to the structure of registers of the peripheral.
[in] task Task for which to set the configuration.
[in] channel Channel through which to subscribe events.
__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
[in] p_reg Pointer to the structure of registers of the peripheral.
[in] task The specified task.
Returns
Task address.
__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
[in] p_reg Pointer to the structure of registers of the peripheral.
[in] task Task to be activated.
__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
[in] p_reg Pointer to the structure of registers of the peripheral.
Returns
Amount of bytes transmitted.
__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
[in] p_reg Pointer to the structure of registers of the peripheral.
[in] p_buf Pointer to the buffer with data to send.
[in] length Maximum number of data bytes to transmit.
__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
[in] p_reg Pointer to the structure of registers of the peripheral.
[in] p_buf Pointer to the buffer with data to send.
[in] length Maximum number of data bytes to transmit.