SPIS HAL

group nrf_spis_hal

Hardware access layer for managing the SPIS peripheral.

Defines

NRF_SPIS_HAS_DMA_REG

Symbol indicating whether dedicated DMA register is present.

NRF_SPIS_HAS_DMA_TASKS_EVENTS

Symbol indicating whether SPIS DMA tasks and events are present.

NRF_SPIS_DMA_RX_PATTERN_MAX_COUNT

Maximum number of RX patterns.

NRF_SPIS_INST_GET(idx)

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

Parameters:
  • idx[in] SPIS instance index.

Returns:

Pointer to the structure of registers of the SPIS peripheral.

NRF_SPIS_PIN_NOT_CONNECTED

This value can be used as a parameter for the nrf_spis_pins_set function to specify that a given SPI signal (SCK, MOSI, or MISO) shall not be connected to a physical pin.

Enums

enum nrf_spis_task_t

SPIS tasks.

Values:

enumerator NRF_SPIS_TASK_ACQUIRE

Acquire SPI semaphore.

enumerator NRF_SPIS_TASK_RELEASE

Release SPI semaphore, enabling the SPI slave to acquire it.

enumerator NRF_SPIS_TASK_ENABLERXMATCH0

Enable SPI pattern matching functionality for pattern 0.

enumerator NRF_SPIS_TASK_ENABLERXMATCH1

Enable SPI pattern matching functionality for pattern 1.

enumerator NRF_SPIS_TASK_ENABLERXMATCH2

Enable SPI pattern matching functionality for pattern 2.

enumerator NRF_SPIS_TASK_ENABLERXMATCH3

Enable SPI pattern matching functionality for pattern 3.

enumerator NRF_SPIS_TASK_DISABLERXMATCH0

Disable SPI pattern matching functionality for pattern 0.

enumerator NRF_SPIS_TASK_DISABLERXMATCH1

Disable SPI pattern matching functionality for pattern 1.

enumerator NRF_SPIS_TASK_DISABLERXMATCH2

Disable SPI pattern matching functionality for pattern 2.

enumerator NRF_SPIS_TASK_DISABLERXMATCH3

Disable SPI pattern matching functionality for pattern 3.

enum nrf_spis_event_t

SPIS events.

Values:

enumerator NRF_SPIS_EVENT_RXSTARTED

Receive sequence started.

enumerator NRF_SPIS_EVENT_RXBUSERROR

Memory bus error occurred during the RX transfer.

enumerator NRF_SPIS_EVENT_RXMATCH0

Pattern match for pattern 0 detected.

enumerator NRF_SPIS_EVENT_RXMATCH1

Pattern match for pattern 1 detected.

enumerator NRF_SPIS_EVENT_RXMATCH2

Pattern match for pattern 2 detected.

enumerator NRF_SPIS_EVENT_RXMATCH3

Pattern match for pattern 3 detected.

enumerator NRF_SPIS_EVENT_TXSTARTED

Transmit sequence started.

enumerator NRF_SPIS_EVENT_TXBUSERROR

Memory bus error occurred during the TX transfer.

enumerator NRF_SPIS_EVENT_ENDRX

End of RXD buffer reached.

enumerator NRF_SPIS_EVENT_ENDTX

End of TXD buffer reached.

enumerator NRF_SPIS_EVENT_END

Granted transaction completed.

enumerator NRF_SPIS_EVENT_ACQUIRED

Semaphore acquired.

enum nrf_spis_short_mask_t

SPIS shortcuts.

Values:

enumerator NRF_SPIS_SHORT_END_ACQUIRE

Shortcut between END event and ACQUIRE task.

enumerator NRF_SPIS_SHORT_RXMATCH0_ENABLERXMATCH1_MASK

Shortcut between DMA.RX.MATCH0 event and DMA.RX.ENABLEMATCH1 task.

enumerator NRF_SPIS_SHORT_RXMATCH1_ENABLERXMATCH2_MASK

Shortcut between DMA.RX.MATCH1 event and DMA.RX.ENABLEMATCH2 task.

enumerator NRF_SPIS_SHORT_RXMATCH2_ENABLERXMATCH3_MASK

Shortcut between DMA.RX.MATCH2 event and DMA.RX.ENABLEMATCH3 task.

enumerator NRF_SPIS_SHORT_RXMATCH3_ENABLERXMATCH0_MASK

Shortcut between DMA.RX.MATCH3 event and DMA.RX.ENABLEMATCH0 task.

enumerator NRF_SPIS_SHORT_RXMATCH0_DISABLERXMATCH0_MASK

Shortcut between DMA.RX.MATCH0 event and DMA.RX.DISABLEMATCH0 task.

enumerator NRF_SPIS_SHORT_RXMATCH1_DISABLERXMATCH1_MASK

Shortcut between DMA.RX.MATCH1 event and DMA.RX.DISABLEMATCH1 task.

enumerator NRF_SPIS_SHORT_RXMATCH2_DISABLERXMATCH2_MASK

Shortcut between DMA.RX.MATCH2 event and DMA.RX.DISABLEMATCH2 task.

enumerator NRF_SPIS_SHORT_RXMATCH3_DISABLERXMATCH3_MASK

Shortcut between DMA.RX.MATCH3 event and DMA.RX.DISABLEMATCH3 task.

enumerator NRF_SPIS_ALL_SHORTS_MASK

All SPIS shortcuts.

enum nrf_spis_int_mask_t

SPIS interrupts.

Values:

enumerator NRF_SPIS_INT_END_MASK

Interrupt on END event.

enumerator NRF_SPIS_INT_ACQUIRED_MASK

Interrupt on ACQUIRED event.

enumerator NRF_SPIS_INT_RXREADY_MASK

Interrupt on DMA.RX.READY event.

enumerator NRF_SPIS_INT_RXBUSERROR_MASK

Interrupt on DMA.RX.BUSERROR event.

enumerator NRF_SPIS_INT_RXMATCH0_MASK

Interrupt on DMA.RX.MATCH0 event.

enumerator NRF_SPIS_INT_RXMATCH1_MASK

Interrupt on DMA.RX.MATCH1 event.

enumerator NRF_SPIS_INT_RXMATCH2_MASK

Interrupt on DMA.RX.MATCH2 event.

enumerator NRF_SPIS_INT_RXMATCH3_MASK

Interrupt on DMA.RX.MATCH3 event.

enumerator NRF_SPIS_INT_TXREADY_MASK

Interrupt on DMA.TX.READY event.

enumerator NRF_SPIS_INT_TXBUSERROR_MASK

Interrupt on DMA.TX.BUSERROR event.

enumerator NRF_SPIS_INT_ENDRX_MASK

Interrupt on ENDRX event.

enumerator NRF_SPIS_INT_ENDTX_MASK

Interrupt on ENDTX event.

enumerator NRF_SPIS_ALL_INTS_MASK

All SPIS interrupts.

enum nrf_spis_mode_t

SPI modes.

Values:

enumerator NRF_SPIS_MODE_0

SCK active high, sample on leading edge of clock.

enumerator NRF_SPIS_MODE_1

SCK active high, sample on trailing edge of clock.

enumerator NRF_SPIS_MODE_2

SCK active low, sample on leading edge of clock.

enumerator NRF_SPIS_MODE_3

SCK active low, sample on trailing edge of clock.

enum nrf_spis_bit_order_t

SPI bit orders.

Values:

enumerator NRF_SPIS_BIT_ORDER_MSB_FIRST

Most significant bit shifted out first.

enumerator NRF_SPIS_BIT_ORDER_LSB_FIRST

Least significant bit shifted out first.

enum nrf_spis_semstat_t

SPI semaphore status.

Values:

enumerator NRF_SPIS_SEMSTAT_FREE

Semaphore is free.

enumerator NRF_SPIS_SEMSTAT_CPU

Semaphore is assigned to the CPU.

enumerator NRF_SPIS_SEMSTAT_SPIS

Semaphore is assigned to the SPI slave.

enumerator NRF_SPIS_SEMSTAT_CPUPENDING

Semaphore is assigned to the SPI, but a handover to the CPU is pending.

enum nrf_spis_status_mask_t

SPIS status.

Values:

enumerator NRF_SPIS_STATUS_OVERREAD

TX buffer over-read detected and prevented.

enumerator NRF_SPIS_STATUS_OVERFLOW

RX buffer overflow detected and prevented.

Functions

NRF_STATIC_INLINE void nrf_spis_task_trigger(NRF_SPIS_Type *p_reg, nrf_spis_task_t task)

Function for activating the specified SPIS 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_spis_task_address_get(NRF_SPIS_Type const *p_reg, nrf_spis_task_t task)

Function for getting the address of the specified SPIS task register.

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

  • task[in] The specified task.

Returns:

Address of the specified task register.

NRF_STATIC_INLINE void nrf_spis_event_clear(NRF_SPIS_Type *p_reg, nrf_spis_event_t event)

Function for clearing the specified SPIS event.

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

  • event[in] Event to be cleared.

NRF_STATIC_INLINE bool nrf_spis_event_check(NRF_SPIS_Type const *p_reg, nrf_spis_event_t event)

Function for retrieving the state of the SPIS 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 uint32_t nrf_spis_event_address_get(NRF_SPIS_Type const *p_reg, nrf_spis_event_t event)

Function for getting the address of the specified SPIS event register.

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

  • event[in] The specified event.

Returns:

Address of the specified event register.

NRF_STATIC_INLINE void nrf_spis_shorts_enable(NRF_SPIS_Type *p_reg, uint32_t mask)

Function for enabling the specified shortcuts.

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

  • mask[in] Shortcuts to be enabled.

NRF_STATIC_INLINE void nrf_spis_shorts_disable(NRF_SPIS_Type *p_reg, uint32_t mask)

Function for disabling the specified shortcuts.

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

  • mask[in] Shortcuts to be disabled.

NRF_STATIC_INLINE void nrf_spis_int_enable(NRF_SPIS_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_spis_int_mask_t values for bit masking.

NRF_STATIC_INLINE void nrf_spis_int_disable(NRF_SPIS_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_spis_int_mask_t values for bit masking.

NRF_STATIC_INLINE uint32_t nrf_spis_int_enable_check(NRF_SPIS_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_spis_int_mask_t values for bit masking.

Returns:

Mask of enabled interrupts.

NRF_STATIC_INLINE void nrf_spis_subscribe_set(NRF_SPIS_Type *p_reg, nrf_spis_task_t task, uint8_t channel)

Function for setting the subscribe configuration for a given SPIS 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_spis_subscribe_clear(NRF_SPIS_Type *p_reg, nrf_spis_task_t task)

Function for clearing the subscribe configuration for a given SPIS 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_spis_publish_set(NRF_SPIS_Type *p_reg, nrf_spis_event_t event, uint8_t channel)

Function for setting the publish configuration for a given SPIS 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_spis_publish_clear(NRF_SPIS_Type *p_reg, nrf_spis_event_t event)

Function for clearing the publish configuration for a given SPIS 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 void nrf_spis_enable(NRF_SPIS_Type *p_reg)

Function for enabling the SPIS peripheral.

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

NRF_STATIC_INLINE void nrf_spis_disable(NRF_SPIS_Type *p_reg)

Function for disabling the SPIS peripheral.

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

NRF_STATIC_INLINE bool nrf_spis_enable_check(NRF_SPIS_Type const *p_reg)

Function for checking if the SPIS peripheral is enabled.

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

Return values:
  • true – The SPIS is enabled.

  • false – The SPIS is not enabled.

NRF_STATIC_INLINE nrf_spis_semstat_t nrf_spis_semaphore_status_get(NRF_SPIS_Type const *p_reg)

Function for retrieving the SPIS semaphore status.

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

Returns:

Current semaphore status.

NRF_STATIC_INLINE nrf_spis_status_mask_t nrf_spis_status_get(NRF_SPIS_Type const *p_reg)

Function for retrieving the SPIS status.

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

Returns:

Current SPIS status.

NRF_STATIC_INLINE void nrf_spis_pins_set(NRF_SPIS_Type *p_reg, uint32_t sck_pin, uint32_t mosi_pin, uint32_t miso_pin, uint32_t csn_pin)

Function for configuring SPIS pins.

If a given signal is not needed, pass the NRF_SPIS_PIN_NOT_CONNECTED value instead of its pin number.

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

  • sck_pin[in] SCK pin number.

  • mosi_pin[in] MOSI pin number.

  • miso_pin[in] MISO pin number.

  • csn_pin[in] CSN pin number.

NRF_STATIC_INLINE uint32_t nrf_spis_sck_pin_get(NRF_SPIS_Type const *p_reg)

Function for getting the SCK pin selection.

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

Returns:

SCK pin selection.

NRF_STATIC_INLINE uint32_t nrf_spis_mosi_pin_get(NRF_SPIS_Type const *p_reg)

Function for getting the MOSI pin selection.

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

Returns:

MOSI pin selection.

NRF_STATIC_INLINE uint32_t nrf_spis_miso_pin_get(NRF_SPIS_Type const *p_reg)

Function for getting the MISO pin selection.

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

Returns:

MISO pin selection.

NRF_STATIC_INLINE uint32_t nrf_spis_csn_pin_get(NRF_SPIS_Type const *p_reg)

Function for getting the CSN pin selection.

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

Returns:

CSN pin selection.

NRF_STATIC_INLINE void nrf_spis_tx_buffer_set(NRF_SPIS_Type *p_reg, uint8_t const *p_buffer, size_t length)

Function for setting the transmit buffer.

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

  • p_buffer[in] Pointer to the buffer that contains the data to send.

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

NRF_STATIC_INLINE void nrf_spis_rx_buffer_set(NRF_SPIS_Type *p_reg, uint8_t *p_buffer, size_t length)

Function for setting the receive buffer.

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

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

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

NRF_STATIC_INLINE size_t nrf_spis_tx_amount_get(NRF_SPIS_Type const *p_reg)

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

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

Returns:

Number of bytes transmitted.

NRF_STATIC_INLINE size_t nrf_spis_rx_amount_get(NRF_SPIS_Type const *p_reg)

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

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

Returns:

Number of bytes received.

NRF_STATIC_INLINE void nrf_spis_configure(NRF_SPIS_Type *p_reg, nrf_spis_mode_t spi_mode, nrf_spis_bit_order_t spi_bit_order)

Function for setting the SPI configuration.

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

  • spi_mode[in] SPI mode.

  • spi_bit_order[in] SPI bit order.

NRF_STATIC_INLINE void nrf_spis_def_set(NRF_SPIS_Type *p_reg, uint8_t def)

Function for setting the default character.

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

  • def[in] Default character that is clocked out in case of an overflow of the RXD buffer.

NRF_STATIC_INLINE void nrf_spis_orc_set(NRF_SPIS_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 that is clocked out in case of an over-read of the TXD buffer.

NRF_STATIC_INLINE void nrf_spis_tx_list_enable(NRF_SPIS_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_spis_tx_list_disable(NRF_SPIS_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_spis_rx_list_enable(NRF_SPIS_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_spis_rx_list_disable(NRF_SPIS_Type *p_reg)

Function for disabling the RX list feature.

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

NRF_STATIC_INLINE void nrf_spis_rx_pattern_match_enable_set(NRF_SPIS_Type *p_reg, uint8_t index, bool enable)

Function for enabling individual pattern match filters.

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

  • index[in] Index of pattern match filter.

  • enable[in] True if pattern match filter is to be enabled, false otherwise.

NRF_STATIC_INLINE bool nrf_spis_rx_pattern_match_enable_check(NRF_SPIS_Type const *p_reg, uint8_t index)

Function for checking if the specified pattern match filter is enabled.

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

  • index[in] Index of pattern match filter.

Return values:
  • true – Pattern match filter is enabled.

  • false – Pattern match filter is disabled.

NRF_STATIC_INLINE void nrf_spis_rx_pattern_match_one_shot_enable(NRF_SPIS_Type *p_reg, uint8_t index)

Function for enabling one-shot operation for the specified match filter.

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

  • index[in] Index of pattern match filter.

NRF_STATIC_INLINE void nrf_spis_rx_pattern_match_one_shot_disable(NRF_SPIS_Type *p_reg, uint8_t index)

Function for disabling one-shot operation for the specified match filter.

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

  • index[in] Index of pattern match filter.

NRF_STATIC_INLINE bool nrf_spis_rx_pattern_match_one_shot_check(NRF_SPIS_Type const *p_reg, uint8_t index)

Function for checking if specified pattern match filter is configured as one-shot.

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

  • index[in] Index of pattern match filter.

Return values:
  • true – Pattern match filter is configured as one-shot.

  • false – Pattern match filter is configured as continuous.

NRF_STATIC_INLINE void nrf_spis_rx_pattern_match_candidate_set(NRF_SPIS_Type *p_reg, uint8_t index, uint32_t pattern)

Function for setting the pattern to be looked for by the specified match filter.

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

  • index[in] Index of pattern match filter.

  • pattern[in] Pattern to be looked for. Match will trigger the corresponding event, if enabled.

NRF_STATIC_INLINE uint32_t nrf_spis_rx_pattern_match_candidate_get(NRF_SPIS_Type const *p_reg, uint8_t index)

Function for getting the pattern that the specified match filter is looking for.

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

  • index[in] Index of pattern match filter.

Returns:

Pattern that the specified match filter is looking for.

NRF_STATIC_INLINE void nrf_spis_rx_terminate_on_bus_error_enable(NRF_SPIS_Type *p_reg)

Function for enabling the termination of the RX transaction after detecting the BUSERROR event.

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

NRF_STATIC_INLINE void nrf_spis_rx_terminate_on_bus_error_disable(NRF_SPIS_Type *p_reg)

Function for disabling the termination of the RX transaction after detecting the BUSERROR event.

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

NRF_STATIC_INLINE bool nrf_spis_rx_terminate_on_bus_error_check(NRF_SPIS_Type const *p_reg)

Function for checking if RX transaction termination after detecting the BUSERROR event is enabled.

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

Return values:
  • true – RX transaction termination after detecting a BUSERROR event is enabled.

  • false – RX transaction termination after detecting a BUSERROR event is disabled.

NRF_STATIC_INLINE void nrf_spis_tx_terminate_on_bus_error_enable(NRF_SPIS_Type *p_reg)

Function for enabling the termination of the TX transaction after detecting the BUSERROR event.

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

NRF_STATIC_INLINE void nrf_spis_tx_terminate_on_bus_error_disable(NRF_SPIS_Type *p_reg)

Function for disabling the termination of the TX transaction after detecting the BUSERROR event.

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

NRF_STATIC_INLINE bool nrf_spis_tx_terminate_on_bus_error_check(NRF_SPIS_Type const *p_reg)

Function for checking if TX transaction termination after detecting the BUSERROR event is enabled.

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

Return values:
  • true – TX transaction termination after detecting a BUSERROR event is enabled.

  • false – TX transaction termination after detecting a BUSERROR event is disabled.