TWIS HAL

nRF5 SDK v11.0.0

nRF5 SDK v11.0.0

nRF52 only: Hardware access layer for Two Wire Interface Slave with EasyDMA (TWIS) peripheral. More...

Typedefs

typedef uint8_t nrf_twis_amount_t
Variable type to hold amount of data for EasyDMA. More...
typedef uint8_t nrf_twis_address_t
Smallest variable type to hold 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 *const p_twis, nrf_twis_task_t task)
Function for activating a specific TWIS task. More...
__STATIC_INLINE uint32_t nrf_twis_task_address_get (NRF_TWIS_Type const *const p_twis, nrf_twis_task_t task)
Function for returning the address of a specific TWIS task register. More...
__STATIC_INLINE void nrf_twis_event_clear (NRF_TWIS_Type *const p_twis, nrf_twis_event_t event)
Function for clearing a specific event. More...
__STATIC_INLINE bool nrf_twis_event_check (NRF_TWIS_Type const *const p_twis, nrf_twis_event_t event)
Function for returning the state of a specific event. More...
__STATIC_INLINE bool nrf_twis_event_get_and_clear (NRF_TWIS_Type *const p_twis, nrf_twis_event_t event)
Function for getting and clearing the state of specific event. More...
__STATIC_INLINE uint32_t nrf_twis_event_address_get (NRF_TWIS_Type const *const p_twis, nrf_twis_event_t event)
Function for returning the address of a specific TWIS event register. More...
__STATIC_INLINE void nrf_twis_shorts_enable (NRF_TWIS_Type *const p_twis, uint32_t short_mask)
Function for setting a shortcut. More...
__STATIC_INLINE void nrf_twis_shorts_disable (NRF_TWIS_Type *const p_twis, uint32_t short_mask)
Function for clearing shortcuts. More...
__STATIC_INLINE uint32_t nrf_twis_shorts_get (NRF_TWIS_Type *const p_twis)
Get the shorts mask. More...
__STATIC_INLINE void nrf_twis_int_enable (NRF_TWIS_Type *const p_twis, uint32_t int_mask)
Function for enabling selected interrupts. More...
__STATIC_INLINE bool nrf_twis_int_enable_check (NRF_TWIS_Type const *const p_twis, uint32_t int_mask)
Function for retrieving the state of selected interrupts. More...
__STATIC_INLINE void nrf_twis_int_disable (NRF_TWIS_Type *const p_twis, uint32_t int_mask)
Function for disabling selected interrupts. More...
__STATIC_INLINE uint32_t nrf_twis_error_source_get_and_clear (NRF_TWIS_Type *const p_twis)
Function for retrieving and clearing the TWIS error source. More...
__STATIC_INLINE uint_fast8_t nrf_twis_match_get (NRF_TWIS_Type const *p_twis)
Get information which of addresses matched. More...
__STATIC_INLINE void nrf_twis_enable (NRF_TWIS_Type *const p_twis)
Function for enabling TWIS. More...
__STATIC_INLINE void nrf_twis_disable (NRF_TWIS_Type *const p_twis)
Function for disabling TWIS. More...
__STATIC_INLINE void nrf_twis_pins_set (NRF_TWIS_Type *const p_twis, uint32_t scl, uint32_t sda)
Function for configuring TWIS pins. More...
__STATIC_INLINE void nrf_twis_rx_buffer_set (NRF_TWIS_Type *const p_twis, uint8_t *p_buf, nrf_twis_amount_t length)
Function for setting the receive buffer. More...
__STATIC_INLINE void nrf_twis_rx_prepare (NRF_TWIS_Type *const p_twis, uint8_t *p_buf, nrf_twis_amount_t length)
Function that prepares TWIS for receiving. More...
__STATIC_INLINE nrf_twis_amount_t nrf_twis_rx_amount_get (NRF_TWIS_Type const *const p_twis)
Function for getting number of bytes received in the last transaction. More...
__STATIC_INLINE void nrf_twis_tx_buffer_set (NRF_TWIS_Type *const p_twis, uint8_t const *p_buf, nrf_twis_amount_t length)
Function for setting the transmit buffer. More...
__STATIC_INLINE void nrf_twis_tx_prepare (NRF_TWIS_Type *const p_twis, uint8_t const *p_buf, nrf_twis_amount_t length)
Function that prepares TWIS for transmitting. More...
__STATIC_INLINE nrf_twis_amount_t nrf_twis_tx_amount_get (NRF_TWIS_Type const *const p_twis)
Function for getting number of bytes transmitted in the last transaction. More...
__STATIC_INLINE void nrf_twis_address_set (NRF_TWIS_Type *const p_twis, uint_fast8_t n, nrf_twis_address_t addr)
Function for setting slave address. More...
__STATIC_INLINE nrf_twis_address_t nrf_twis_address_get (NRF_TWIS_Type const *const p_twis, uint_fast8_t n)
Function for retrieving configured slave address. More...
__STATIC_INLINE void nrf_twis_config_address_set (NRF_TWIS_Type *const p_twis, 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 *const p_twis)
Function for retrieving the device address configuration. More...
__STATIC_INLINE void nrf_twis_orc_set (NRF_TWIS_Type *const p_twis, uint8_t orc)
Function for setting the over-read character. More...
__STATIC_INLINE uint8_t nrf_twis_orc_get (NRF_TWIS_Type const *const p_twis)
Function for setting the over-read character. More...

Detailed Description

nRF52 only: Hardware access layer for Two Wire Interface Slave with EasyDMA (TWIS) peripheral.

Typedef Documentation

typedef uint8_t nrf_twis_address_t

Smallest variable type to hold TWI address.

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

Note
Defined to make it simple to change if new TWI would support for example 10 bit addressing mode.
typedef uint8_t nrf_twis_amount_t

Variable type to hold 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 would be updated to support more data in the future devices to.

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 *const p_twis ,
uint_fast8_t n
)

Function for retrieving configured slave address.

Function gets the selected address for this TWI interface.

Parameters
[in] p_twis TWIS instance.
n Index of address to get
__STATIC_INLINE void nrf_twis_address_set ( NRF_TWIS_Type *const p_twis ,
uint_fast8_t n ,
nrf_twis_address_t addr
)

Function for setting slave address.

Function sets the selected address for this TWI interface.

Parameters
[in] p_twis TWIS instance.
n Index of address to set
addr Addres to 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 *const p_twis )

Function for retrieving the device address configuration.

Parameters
[in] p_twis TWIS instance.
Returns
Mask of address indexes of what device should answer to.
__STATIC_INLINE void nrf_twis_config_address_set ( NRF_TWIS_Type *const p_twis ,
nrf_twis_config_addr_mask_t addr_mask
)

Function for setting the device address configuration.

Parameters
[in] p_twis TWIS instance.
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 *const p_twis )

Function for disabling TWIS.

Parameters
[in] p_twis TWIS instance.
__STATIC_INLINE void nrf_twis_enable ( NRF_TWIS_Type *const p_twis )

Function for enabling TWIS.

Parameters
[in] p_twis TWIS instance.
__STATIC_INLINE uint32_t nrf_twis_error_source_get_and_clear ( NRF_TWIS_Type *const p_twis )

Function for retrieving and clearing the TWIS error source.

Attention
Error sources are cleared after read.
Parameters
[in] p_twis TWIS instance
Returns
Error source mask with values from nrf_twis_error_t .
__STATIC_INLINE uint32_t nrf_twis_event_address_get ( NRF_TWIS_Type const *const p_twis ,
nrf_twis_event_t event
)

Function for returning the address of a specific TWIS event register.

Parameters
[in] p_twis TWIS instance.
event Event.
Returns
Address.
__STATIC_INLINE bool nrf_twis_event_check ( NRF_TWIS_Type const *const p_twis ,
nrf_twis_event_t event
)

Function for returning the state of a specific event.

Parameters
[in] p_twis TWIS instance.
event Event.
Return values
true If the event is set.
false If the event is not set.
__STATIC_INLINE void nrf_twis_event_clear ( NRF_TWIS_Type *const p_twis ,
nrf_twis_event_t event
)

Function for clearing a specific event.

Parameters
[in] p_twis TWIS instance.
event Event.
__STATIC_INLINE bool nrf_twis_event_get_and_clear ( NRF_TWIS_Type *const p_twis ,
nrf_twis_event_t event
)

Function for getting and clearing the state of specific event.

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

Parameters
[in,out] p_twis TWIS instance
event Event.
Return values
true If the event was set.
false If the event was not set.
__STATIC_INLINE void nrf_twis_int_disable ( NRF_TWIS_Type *const p_twis ,
uint32_t int_mask
)

Function for disabling selected interrupts.

Parameters
[in] p_twis TWIS instance.
int_mask Interrupts mask.
__STATIC_INLINE void nrf_twis_int_enable ( NRF_TWIS_Type *const p_twis ,
uint32_t int_mask
)

Function for enabling selected interrupts.

Parameters
[in] p_twis TWIS instance.
int_mask Interrupts mask.
__STATIC_INLINE bool nrf_twis_int_enable_check ( NRF_TWIS_Type const *const p_twis ,
uint32_t int_mask
)

Function for retrieving the state of selected interrupts.

Parameters
[in] p_twis TWIS instance.
int_mask Interrupts mask.
Return values
true If any of selected interrupts is enabled.
false If none of selected interrupts is enabled.
__STATIC_INLINE uint_fast8_t nrf_twis_match_get ( NRF_TWIS_Type const * p_twis )

Get information which of addresses matched.

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

Parameters
[in] p_twis TWIS instance
Returns
Index of matched address
__STATIC_INLINE uint8_t nrf_twis_orc_get ( NRF_TWIS_Type const *const p_twis )

Function for setting the over-read character.

Parameters
[in] p_twis TWIS instance.
Returns
Over-read character configured for selected instance.
__STATIC_INLINE void nrf_twis_orc_set ( NRF_TWIS_Type *const p_twis ,
uint8_t orc
)

Function for setting the over-read character.

Parameters
[in] p_twis TWIS instance.
[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 *const p_twis ,
uint32_t scl ,
uint32_t sda
)

Function for configuring TWIS pins.

Parameters
[in] p_twis TWIS instance.
scl SCL pin number.
sda SDA pin number.
__STATIC_INLINE nrf_twis_amount_t nrf_twis_rx_amount_get ( NRF_TWIS_Type const *const p_twis )

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

Parameters
[in] p_twis TWIS instance.
Returns
Amount of bytes received.
__STATIC_INLINE void nrf_twis_rx_buffer_set ( NRF_TWIS_Type *const p_twis ,
uint8_t * p_buf ,
nrf_twis_amount_t length
)

Function for setting the receive buffer.

Parameters
[in] p_twis TWIS instance.
p_buf Pointer to the buffer for received data.
length Maximum number of data bytes to receive.
__STATIC_INLINE void nrf_twis_rx_prepare ( NRF_TWIS_Type *const p_twis ,
uint8_t * p_buf ,
nrf_twis_amount_t length
)

Function that prepares TWIS for receiving.

This function sets receive buffer and then sets NRF_TWIS_TASK_PREPARERX task.

Parameters
[in] p_twis TWIS instance.
p_buf Pointer to the buffer for received data.
length Maximum number of data bytes to receive.
__STATIC_INLINE void nrf_twis_shorts_disable ( NRF_TWIS_Type *const p_twis ,
uint32_t short_mask
)

Function for clearing shortcuts.

Parameters
[in] p_twis TWIS instance.
short_mask Shortcuts mask.
__STATIC_INLINE void nrf_twis_shorts_enable ( NRF_TWIS_Type *const p_twis ,
uint32_t short_mask
)

Function for setting a shortcut.

Parameters
[in] p_twis TWIS instance.
short_mask Shortcuts mask.
__STATIC_INLINE uint32_t nrf_twis_shorts_get ( NRF_TWIS_Type *const p_twis )

Get the shorts mask.

Function returns shorts register.

Parameters
[in] p_twis TWIS instance.
Returns
Flags of currently enabled shortcuts
__STATIC_INLINE uint32_t nrf_twis_task_address_get ( NRF_TWIS_Type const *const p_twis ,
nrf_twis_task_t task
)

Function for returning the address of a specific TWIS task register.

Parameters
[in] p_twis TWIS instance.
task Task.
Returns
Task address.
__STATIC_INLINE void nrf_twis_task_trigger ( NRF_TWIS_Type *const p_twis ,
nrf_twis_task_t task
)

Function for activating a specific TWIS task.

Parameters
[in] p_twis TWIS instance.
task Task.
__STATIC_INLINE nrf_twis_amount_t nrf_twis_tx_amount_get ( NRF_TWIS_Type const *const p_twis )

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

Parameters
[in] p_twis TWIS instance.
Returns
Amount of bytes transmitted.
__STATIC_INLINE void nrf_twis_tx_buffer_set ( NRF_TWIS_Type *const p_twis ,
uint8_t const * p_buf ,
nrf_twis_amount_t length
)

Function for setting the transmit buffer.

Parameters
[in] p_twis TWIS instance.
p_buf Pointer to the buffer with data to send.
length Maximum number of data bytes to transmit.
__STATIC_INLINE void nrf_twis_tx_prepare ( NRF_TWIS_Type *const p_twis ,
uint8_t const * p_buf ,
nrf_twis_amount_t length
)

Function that prepares TWIS for transmitting.

This function sets transmit buffer and then sets NRF_TWIS_TASK_PREPARETX task.

Parameters
[in] p_twis TWIS instance.
p_buf Pointer to the buffer with data to send.
length Maximum number of data bytes to transmit.