TWIS HAL

nRF5 SDK v12.2.0

nRF52 Series 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_reg, 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_reg, 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_reg, 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_reg, 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_reg, 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_reg, 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_reg, uint32_t short_mask)
Function for setting a shortcut. More...
__STATIC_INLINE void nrf_twis_shorts_disable (NRF_TWIS_Type *const p_reg, uint32_t short_mask)
Function for clearing shortcuts. More...
__STATIC_INLINE uint32_t nrf_twis_shorts_get (NRF_TWIS_Type *const p_reg)
Get the shorts mask. More...
__STATIC_INLINE void nrf_twis_int_enable (NRF_TWIS_Type *const p_reg, uint32_t int_mask)
Function for enabling selected interrupts. More...
__STATIC_INLINE bool nrf_twis_int_enable_check (NRF_TWIS_Type const *const p_reg, 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_reg, 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_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)
Get information which of addresses matched. More...
__STATIC_INLINE void nrf_twis_enable (NRF_TWIS_Type *const p_reg)
Function for enabling TWIS. More...
__STATIC_INLINE void nrf_twis_disable (NRF_TWIS_Type *const p_reg)
Function for disabling TWIS. More...
__STATIC_INLINE void nrf_twis_pins_set (NRF_TWIS_Type *const 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 *const p_reg, 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_reg, 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_reg)
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_reg, 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_reg, 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_reg)
Function for getting number of bytes transmitted in the last transaction. More...
__STATIC_INLINE void nrf_twis_address_set (NRF_TWIS_Type *const p_reg, 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_reg, uint_fast8_t n)
Function for retrieving configured slave address. More...
__STATIC_INLINE void nrf_twis_config_address_set (NRF_TWIS_Type *const 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 *const p_reg)
Function for retrieving the device address configuration. More...
__STATIC_INLINE void nrf_twis_orc_set (NRF_TWIS_Type *const 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 *const p_reg)
Function for setting the over-read character. More...

Detailed Description

nRF52 Series 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_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 peripheral registers structure.
n Index of address to get
__STATIC_INLINE void nrf_twis_address_set ( NRF_TWIS_Type *const p_reg ,
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_reg Pointer to the peripheral registers structure.
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_reg )

Function for retrieving the device address configuration.

Parameters
[in] p_reg Pointer to the peripheral registers structure.
Returns
Mask of address indexes of what device should answer to.
__STATIC_INLINE void nrf_twis_config_address_set ( NRF_TWIS_Type *const p_reg ,
nrf_twis_config_addr_mask_t addr_mask
)

Function for setting the device address configuration.

Parameters
[in] p_reg Pointer to the peripheral registers structure.
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_reg )

Function for disabling TWIS.

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

Function for enabling TWIS.

Parameters
[in] p_reg Pointer to the peripheral registers structure.
__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 peripheral registers structure.
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_reg ,
nrf_twis_event_t event
)

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

Parameters
[in] p_reg Pointer to the peripheral registers structure.
event Event.
Returns
Address.
__STATIC_INLINE bool nrf_twis_event_check ( NRF_TWIS_Type const *const p_reg ,
nrf_twis_event_t event
)

Function for returning the state of a specific event.

Parameters
[in] p_reg Pointer to the peripheral registers structure.
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_reg ,
nrf_twis_event_t event
)

Function for clearing a specific event.

Parameters
[in] p_reg Pointer to the peripheral registers structure.
event Event.
__STATIC_INLINE bool nrf_twis_event_get_and_clear ( NRF_TWIS_Type *const p_reg ,
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_reg Pointer to the peripheral registers structure.
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_reg ,
uint32_t int_mask
)

Function for disabling selected interrupts.

Parameters
[in] p_reg Pointer to the peripheral registers structure.
int_mask Interrupts mask.
__STATIC_INLINE void nrf_twis_int_enable ( NRF_TWIS_Type *const p_reg ,
uint32_t int_mask
)

Function for enabling selected interrupts.

Parameters
[in] p_reg Pointer to the peripheral registers structure.
int_mask Interrupts mask.
__STATIC_INLINE bool nrf_twis_int_enable_check ( NRF_TWIS_Type const *const p_reg ,
uint32_t int_mask
)

Function for retrieving the state of selected interrupts.

Parameters
[in] p_reg Pointer to the peripheral registers structure.
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_reg )

Get information which of addresses matched.

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

Parameters
[in] p_reg Pointer to the peripheral registers structure.
Returns
Index of matched address
__STATIC_INLINE uint8_t nrf_twis_orc_get ( NRF_TWIS_Type const *const p_reg )

Function for setting the over-read character.

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

Function for setting the over-read character.

Parameters
[in] p_reg Pointer to the peripheral registers structure.
[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_reg ,
uint32_t scl ,
uint32_t sda
)

Function for configuring TWIS pins.

Parameters
[in] p_reg Pointer to the peripheral registers structure.
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_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 *const p_reg ,
uint8_t * p_buf ,
nrf_twis_amount_t length
)

Function for setting the receive buffer.

Parameters
[in] p_reg Pointer to the peripheral registers structure.
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_reg ,
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_reg Pointer to the peripheral registers structure.
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_reg ,
uint32_t short_mask
)

Function for clearing shortcuts.

Parameters
[in] p_reg Pointer to the peripheral registers structure.
short_mask Shortcuts mask.
__STATIC_INLINE void nrf_twis_shorts_enable ( NRF_TWIS_Type *const p_reg ,
uint32_t short_mask
)

Function for setting a shortcut.

Parameters
[in] p_reg Pointer to the peripheral registers structure.
short_mask Shortcuts mask.
__STATIC_INLINE uint32_t nrf_twis_shorts_get ( NRF_TWIS_Type *const p_reg )

Get the shorts mask.

Function returns shorts register.

Parameters
[in] p_reg Pointer to the peripheral registers structure.
Returns
Flags of currently enabled shortcuts
__STATIC_INLINE uint32_t nrf_twis_task_address_get ( NRF_TWIS_Type const *const p_reg ,
nrf_twis_task_t task
)

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

Parameters
[in] p_reg Pointer to the peripheral registers structure.
task Task.
Returns
Task address.
__STATIC_INLINE void nrf_twis_task_trigger ( NRF_TWIS_Type *const p_reg ,
nrf_twis_task_t task
)

Function for activating a specific TWIS task.

Parameters
[in] p_reg Pointer to the peripheral registers structure.
task Task.
__STATIC_INLINE nrf_twis_amount_t nrf_twis_tx_amount_get ( NRF_TWIS_Type const *const p_reg )

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

Parameters
[in] p_reg Pointer to the peripheral registers structure.
Returns
Amount of bytes transmitted.
__STATIC_INLINE void nrf_twis_tx_buffer_set ( NRF_TWIS_Type *const p_reg ,
uint8_t const * p_buf ,
nrf_twis_amount_t length
)

Function for setting the transmit buffer.

Parameters
[in] p_reg Pointer to the peripheral registers structure.
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_reg ,
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_reg Pointer to the peripheral registers structure.
p_buf Pointer to the buffer with data to send.
length Maximum number of data bytes to transmit.