CCM HAL

group nrf_ccm_hal

Hardware access layer for managing the AES CCM peripheral.

Enums

enum nrf_ccm_task_t

CCM tasks.

Values:

enumerator NRF_CCM_TASK_KSGEN

Start generation of key-stream.

enumerator NRF_CCM_TASK_CRYPT

Start encryption/decryption.

enumerator NRF_CCM_TASK_STOP

Stop encryption/decryption.

enumerator NRF_CCM_TASK_RATEOVERRIDE

Override DATARATE setting in MODE register.

enum nrf_ccm_event_t

CCM events.

Values:

enumerator NRF_CCM_EVENT_ENDKSGEN

Keystream generation complete.

enumerator NRF_CCM_EVENT_ENDCRYPT

Encrypt/decrypt complete.

enumerator NRF_CCM_EVENT_ERROR

CCM error event.

enum nrf_ccm_short_mask_t

Types of CCM shorts.

Values:

enumerator NRF_CCM_SHORT_ENDKSGEN_CRYPT_MASK

Shortcut for starting encryption/decryption when the key-stream generation is complete.

enum nrf_ccm_int_mask_t

CCM interrupts.

Values:

enumerator NRF_CCM_INT_ENDKSGEN_MASK

Interrupt on ENDKSGEN event.

enumerator NRF_CCM_INT_ENDCRYPT_MASK

Interrupt on ENDCRYPT event.

enumerator NRF_CCM_INT_ERROR_MASK

Interrupt on ERROR event.

enum nrf_ccm_mode_t

CCM modes of operation.

Values:

enumerator NRF_CCM_MODE_ENCRYPTION

Encryption mode.

enumerator NRF_CCM_MODE_DECRYPTION

Decryption mode.

enum nrf_ccm_datarate_t

CCM data rates.

Values:

enumerator NRF_CCM_DATARATE_1M

1 Mbps.

enumerator NRF_CCM_DATARATE_2M

2 Mbps.

enumerator NRF_CCM_DATARATE_125K

125 Kbps.

enumerator NRF_CCM_DATARATE_500K

500 Kbps.

enum nrf_ccm_length_t

CCM packet length options.

Values:

enumerator NRF_CCM_LENGTH_DEFAULT

Default length.

enumerator NRF_CCM_LENGTH_EXTENDED

Extended length.

Functions

NRF_STATIC_INLINE void nrf_ccm_task_trigger(NRF_CCM_Type *p_reg, nrf_ccm_task_t task)

Function for activating a specific CCM 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_ccm_task_address_get(NRF_CCM_Type const *p_reg, nrf_ccm_task_t task)

Function for getting the address of a specific CCM task register.

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

  • task[in] Requested task.

Returns

Address of the specified task register.

NRF_STATIC_INLINE void nrf_ccm_event_clear(NRF_CCM_Type *p_reg, nrf_ccm_event_t event)

Function for clearing a specific CCM event.

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

  • event[in] Event to clear.

NRF_STATIC_INLINE bool nrf_ccm_event_check(NRF_CCM_Type const *p_reg, nrf_ccm_event_t event)

Function for retrieving the state of a specific CCM 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_ccm_event_address_get(NRF_CCM_Type const *p_reg, nrf_ccm_event_t event)

Function for getting the address of a specific CCM event register.

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

  • event[in] Requested event.

Returns

Address of the specified event register.

NRF_STATIC_INLINE void nrf_ccm_shorts_enable(NRF_CCM_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_ccm_shorts_disable(NRF_CCM_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_ccm_shorts_set(NRF_CCM_Type *p_reg, uint32_t mask)

Function for setting the specified shortcuts.

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

  • mask[in] Shortcuts to be set.

NRF_STATIC_INLINE void nrf_ccm_int_enable(NRF_CCM_Type *p_reg, uint32_t mask)

Function for enabling specified interrupts.

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

  • mask[in] Interrupts to be enabled.

NRF_STATIC_INLINE void nrf_ccm_int_disable(NRF_CCM_Type *p_reg, uint32_t mask)

Function for disabling specified interrupts.

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

  • mask[in] Interrupts to be disabled.

NRF_STATIC_INLINE uint32_t nrf_ccm_int_enable_check(NRF_CCM_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.

Returns

Mask of enabled interrupts.

NRF_STATIC_INLINE void nrf_ccm_enable(NRF_CCM_Type *p_reg)

Function for enabling the CCM peripheral.

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

NRF_STATIC_INLINE void nrf_ccm_disable(NRF_CCM_Type *p_reg)

Function for disabling the CCM peripheral.

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

NRF_STATIC_INLINE void nrf_ccm_configure(NRF_CCM_Type *p_reg, nrf_ccm_config_t const *p_config)

Function for setting the CCM peripheral configuration.

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

  • p_config[in] Pointer to the structure with configuration to be set.

NRF_STATIC_INLINE void nrf_ccm_maxpacketsize_set(NRF_CCM_Type *p_reg, uint8_t size)

Function for setting the length of key-stream generated when the packet length is configured as extended.

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

  • size[in] Maximum length of the key-stream.

NRF_STATIC_INLINE bool nrf_ccm_micstatus_get(NRF_CCM_Type const *p_reg)

Function for getting the MIC check result.

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

Return values
  • true – The MIC check passed.

  • false – The MIC check failed.

NRF_STATIC_INLINE void nrf_ccm_cnfptr_set(NRF_CCM_Type *p_reg, uint32_t const *p_data)

Function for setting the pointer to the data structure holding the AES key and the CCM NONCE vector.

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

  • p_data[in] Pointer to the data structure.

NRF_STATIC_INLINE uint32_t *nrf_ccm_cnfptr_get(NRF_CCM_Type const *p_reg)

Function for getting the pointer to the data structure holding the AES key and the CCM NONCE vector.

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

Returns

Pointer to the data structure.

NRF_STATIC_INLINE void nrf_ccm_inptr_set(NRF_CCM_Type *p_reg, uint32_t const *p_data)

Function for setting the input data pointer.

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

  • p_data[in] Input data pointer.

NRF_STATIC_INLINE uint32_t *nrf_ccm_inptr_get(NRF_CCM_Type const *p_reg)

Function for getting the input data pointer.

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

Returns

Input data pointer.

NRF_STATIC_INLINE void nrf_ccm_outptr_set(NRF_CCM_Type *p_reg, uint32_t const *p_data)

Function for setting the output data pointer.

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

  • p_data[in] Output data pointer.

NRF_STATIC_INLINE uint32_t *nrf_ccm_outptr_get(NRF_CCM_Type const *p_reg)

Function for getting the output data pointer.

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

Returns

Output data pointer.

NRF_STATIC_INLINE void nrf_ccm_scratchptr_set(NRF_CCM_Type *p_reg, uint32_t const *p_area)

Function for setting the pointer to the scratch area used for temporary storage.

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

  • p_area[in] Pointer to the scratch area.

NRF_STATIC_INLINE uint32_t *nrf_ccm_stratchptr_get(NRF_CCM_Type const *p_reg)

Function for getting the pointer to the scratch area.

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

Returns

Pointer to the scratch area.

NRF_STATIC_INLINE void nrf_ccm_datarate_override_set(NRF_CCM_Type *p_reg, nrf_ccm_datarate_t datarate)

Function for setting the data rate override value.

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

  • datarate[in] Override value to be applied when the RATEOVERRIDE task is triggered.

NRF_STATIC_INLINE void nrf_ccm_subscribe_set(NRF_CCM_Type *p_reg, nrf_ccm_task_t task, uint8_t channel)

Function for setting the subscribe configuration for a given CCM 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_ccm_subscribe_clear(NRF_CCM_Type *p_reg, nrf_ccm_task_t task)

Function for clearing the subscribe configuration for a given CCM 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_ccm_publish_set(NRF_CCM_Type *p_reg, nrf_ccm_event_t event, uint8_t channel)

Function for setting the publish configuration for a given CCM 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_ccm_publish_clear(NRF_CCM_Type *p_reg, nrf_ccm_event_t event)

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

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

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

struct nrf_ccm_config_t
#include <nrf_ccm.h>

CCM configuration.

Public Members

nrf_ccm_mode_t mode

Operation mode.

nrf_ccm_datarate_t datarate

Data rate.

nrf_ccm_length_t length

Lenght of the CCM packet.