| nRF5 SDK v12.0.0 |

Choose documentation: | nRF5 SDK | S130 SoftDevice API | S132 SoftDevice API | S212 SoftDevice API | S332 SoftDevice API

All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
Modules | Macros | Functions
PPI driver
PPI HAL and driver

Programmable Peripheral Interconnect (PPI) driver. More...

## Modules
| PPI peripheral driver configuration

## Macros
#define | NRF_PPI_ALL_APP_CHANNELS_MASK ((uint32_t)0xFFF0FFFFuL & ~(NRF_PPI_CHANNELS_USED))
#define | NRF_PPI_PROG_APP_CHANNELS_MASK ((uint32_t)0x0000FFFFuL & ~(NRF_PPI_CHANNELS_USED))
#define | NRF_PPI_ALL_APP_GROUPS_MASK (((1uL << PPI_GROUP_NUM) - 1) & ~(NRF_PPI_GROUPS_USED))

## Functions
uint32_t | nrf_drv_ppi_init (void)
| Function for initializing PPI module. More...
uint32_t | nrf_drv_ppi_uninit (void)
| Function for uninitializing the PPI module. More...
uint32_t | nrf_drv_ppi_channel_alloc (nrf_ppi_channel_t *p_channel)
| Function for allocating a PPI channel. More...
uint32_t | nrf_drv_ppi_channel_free (nrf_ppi_channel_t channel)
| Function for freeing a PPI channel. More...
uint32_t | nrf_drv_ppi_channel_assign (nrf_ppi_channel_t channel, uint32_t eep, uint32_t tep)
| Function for assigning task and event endpoints to the PPI channel. More...
uint32_t | nrf_drv_ppi_channel_fork_assign (nrf_ppi_channel_t channel, uint32_t fork_tep)
| Function for assigning or clearing fork endpoint to the PPI channel. More...
uint32_t | nrf_drv_ppi_channel_enable (nrf_ppi_channel_t channel)
| Function for enabling a PPI channel. More...
uint32_t | nrf_drv_ppi_channel_disable (nrf_ppi_channel_t channel)
| Function for disabling a PPI channel. More...
uint32_t | nrf_drv_ppi_group_alloc (nrf_ppi_channel_group_t *p_group)
| Function for allocating a PPI channel group. More...
uint32_t | nrf_drv_ppi_group_free (nrf_ppi_channel_group_t group)
| Function for freeing a PPI channel group. More...
__STATIC_INLINE uint32_t | nrf_drv_ppi_channel_to_mask (nrf_ppi_channel_t channel)
| Compute a channel mask for NRF_PPI registers. More...
uint32_t | nrf_drv_ppi_channels_include_in_group (uint32_t channel_mask, nrf_ppi_channel_group_t group)
| Function for including multiple PPI channels in a channel group. More...
__STATIC_INLINE uint32_t | nrf_drv_ppi_channel_include_in_group (nrf_ppi_channel_t channel, nrf_ppi_channel_group_t group)
| Function for including a PPI channel in a channel group. More...
uint32_t | nrf_drv_ppi_channels_remove_from_group (uint32_t channel_mask, nrf_ppi_channel_group_t group)
| Function for removing multiple PPI channels from a channel group. More...
__STATIC_INLINE uint32_t | nrf_drv_ppi_channel_remove_from_group (nrf_ppi_channel_t channel, nrf_ppi_channel_group_t group)
| Function for removing a PPI channel from a channel group. More...
__STATIC_INLINE uint32_t | nrf_drv_ppi_group_clear (nrf_ppi_channel_group_t group)
| Function for clearing a PPI channel group. More...
uint32_t | nrf_drv_ppi_group_enable (nrf_ppi_channel_group_t group)
| Function for enabling a PPI channel group. More...
uint32_t | nrf_drv_ppi_group_disable (nrf_ppi_channel_group_t group)
| Function for disabling a PPI channel group. More...
__STATIC_INLINE uint32_t | nrf_drv_ppi_task_addr_get (nrf_ppi_task_t task)
| Function for getting the address of a PPI task. More...
__STATIC_INLINE uint32_t | nrf_drv_ppi_task_addr_group_enable_get (nrf_ppi_channel_group_t group)
| Function for getting the address of a PPI group enable task. More...
__STATIC_INLINE uint32_t | nrf_drv_ppi_task_addr_group_disable_get (nrf_ppi_channel_group_t group)
| Function for getting the address of a PPI group enable task. More...

## Detailed Description

Programmable Peripheral Interconnect (PPI) driver.

## Macro Definition Documentation

#define NRF_PPI_ALL_APP_CHANNELS_MASK ((uint32_t)0xFFF0FFFFuL & ~(NRF_PPI_CHANNELS_USED))

All PPI channels available to the application.

#define NRF_PPI_ALL_APP_GROUPS_MASK (((1uL << PPI_GROUP_NUM) - 1) & ~(NRF_PPI_GROUPS_USED))

All PPI groups available to the application.

#define NRF_PPI_PROG_APP_CHANNELS_MASK ((uint32_t)0x0000FFFFuL & ~(NRF_PPI_CHANNELS_USED))

Programmable PPI channels available to the application.

## Function Documentation

uint32_t nrf_drv_ppi_channel_alloc | ( | nrf_ppi_channel_t * | p_channel | ) |

Function for allocating a PPI channel.

This function allocates the first unused PPI channel.

Parameters

  [out] | p_channel | Pointer to the PPI channel that has been allocated.

Return values

  NRF_SUCCESS | If the channel was successfully allocated.
  NRF_ERROR_NO_MEM | If there is no available channel to be used.

uint32_t nrf_drv_ppi_channel_assign | ( | nrf_ppi_channel_t | channel,
|  | uint32_t | eep,
|  | uint32_t | tep
| ) |  |

Function for assigning task and event endpoints to the PPI channel.

Parameters

  [in] | channel | PPI channel to be assigned endpoints.
  [in] | eep | Event endpoint address.
  [in] | tep | Task endpoint address.

Return values

  NRF_SUCCESS | If the channel was successfully assigned.
  NRF_ERROR_INVALID_STATE | If the channel is not allocated for the user.
  NRF_ERROR_INVALID_PARAM | If the channel is not user-configurable.

uint32_t nrf_drv_ppi_channel_disable | ( | nrf_ppi_channel_t | channel | ) |

Function for disabling a PPI channel.

Parameters

  [in] | channel | PPI channel to be disabled.

Return values

  NRF_SUCCESS | If the channel was successfully disabled.
  NRF_ERROR_INVALID_STATE | If the user-configurable channel is not allocated.
  NRF_ERROR_INVALID_PARAM | If the channel cannot be disabled by the user.

uint32_t nrf_drv_ppi_channel_enable | ( | nrf_ppi_channel_t | channel | ) |

Function for enabling a PPI channel.

Parameters

  [in] | channel | PPI channel to be enabled.

Return values

  NRF_SUCCESS | If the channel was successfully enabled.
  NRF_ERROR_INVALID_STATE | If the user-configurable channel is not allocated.
  NRF_ERROR_INVALID_PARAM | If the channel cannot be enabled by the user.

uint32_t nrf_drv_ppi_channel_fork_assign | ( | nrf_ppi_channel_t | channel,
|  | uint32_t | fork_tep
| ) |  |

Function for assigning or clearing fork endpoint to the PPI channel.

Parameters

  [in] | channel | PPI channel to be assigned endpoints.
  [in] | fork_tep | Fork task endpoint address or 0 to clear.

Return values

  NRF_SUCCESS | If the channel was successfully assigned.
  NRF_ERROR_INVALID_STATE | If the channel is not allocated for the user.
  NRF_ERROR_INVALID_PARAM | If the channel is not user-configurable.
  NRF_ERROR_NOT_SUPPORTED | If function is not supported.

uint32_t nrf_drv_ppi_channel_free | ( | nrf_ppi_channel_t | channel | ) |

Function for freeing a PPI channel.

This function also disables the chosen channel.

Parameters

  [in] | channel | PPI channel to be freed.

Return values

  NRF_SUCCESS | If the channel was successfully freed.
  NRF_ERROR_INVALID_PARAM | If the channel is not user-configurable.

__STATIC_INLINE uint32_t nrf_drv_ppi_channel_include_in_group | ( | nrf_ppi_channel_t | channel,
|  | nrf_ppi_channel_group_t | group
| ) |  |

Function for including a PPI channel in a channel group.

Parameters

  [in] | channel | PPI channel to be added.
  [in] | group | Channel group in which to include the channel.

Return values

  NRF_SUCCESS | If the channel was successfully included.

__STATIC_INLINE uint32_t nrf_drv_ppi_channel_remove_from_group | ( | nrf_ppi_channel_t | channel,
|  | nrf_ppi_channel_group_t | group
| ) |  |

Function for removing a PPI channel from a channel group.

Parameters

  [in] | channel | PPI channel to be removed.
  [in] | group | Channel group from which to remove the channel.

Return values

  NRF_SUCCESS | If the channel was successfully removed.

__STATIC_INLINE uint32_t nrf_drv_ppi_channel_to_mask | ( | nrf_ppi_channel_t | channel | ) |

Compute a channel mask for NRF_PPI registers.

Parameters

  [in] | channel | Channel number to transform to a mask.

Return values

  Channel | mask.

uint32_t nrf_drv_ppi_channels_include_in_group | ( | uint32_t | channel_mask,
|  | nrf_ppi_channel_group_t | group
| ) |  |

Function for including multiple PPI channels in a channel group.

Parameters

  [in] | channel_mask | PPI channels to be added.
  [in] | group | Channel group in which to include the channels.

Return values

  NRF_SUCCESS | If the channels was successfully included.

uint32_t nrf_drv_ppi_channels_remove_from_group | ( | uint32_t | channel_mask,
|  | nrf_ppi_channel_group_t | group
| ) |  |

Function for removing multiple PPI channels from a channel group.

Parameters

  [in] | channel_mask | PPI channels to be removed.
  [in] | group | Channel group from which to remove the channels.

Return values

  NRF_SUCCESS | If the channel was successfully removed.

uint32_t nrf_drv_ppi_group_alloc | ( | nrf_ppi_channel_group_t * | p_group | ) |

Function for allocating a PPI channel group.

This function allocates the first unused PPI group.

Parameters

  [out] | p_group | Pointer to the PPI channel group that has been allocated.

Return values

  NRF_SUCCESS | If the channel group was successfully allocated.
  NRF_ERROR_NO_MEM | If there is no available channel group to be used.

__STATIC_INLINE uint32_t nrf_drv_ppi_group_clear | ( | nrf_ppi_channel_group_t | group | ) |

Function for clearing a PPI channel group.

Parameters

  [in] | group | Channel group to be cleared.

Return values

  NRF_SUCCESS | If the group was successfully cleared.

< All PPI channels available to the application.

uint32_t nrf_drv_ppi_group_disable | ( | nrf_ppi_channel_group_t | group | ) |

Function for disabling a PPI channel group.

Parameters

  [in] | group | Channel group to be disabled.

Return values

  NRF_SUCCESS | If the group was successfully disabled.

uint32_t nrf_drv_ppi_group_enable | ( | nrf_ppi_channel_group_t | group | ) |

Function for enabling a PPI channel group.

Parameters

  [in] | group | Channel group to be enabled.

Return values

  NRF_SUCCESS | If the group was successfully enabled.

uint32_t nrf_drv_ppi_group_free | ( | nrf_ppi_channel_group_t | group | ) |

Function for freeing a PPI channel group.

This function also disables the chosen group.

Parameters

  [in] | group | PPI channel group to be freed.

Return values

  NRF_SUCCESS | If the channel group was successfully freed.
  NRF_ERROR_INVALID_PARAM | If the channel group is not user-configurable.

uint32_t nrf_drv_ppi_init | ( | void |  | ) |

Function for initializing PPI module.

Return values

  NRF_SUCCESS | If the module was successfully initialized.
  MODULE_ALREADY_INITIALIZED | If the module has already been initialized.

__STATIC_INLINE uint32_t nrf_drv_ppi_task_addr_get | ( | nrf_ppi_task_t | task | ) |

Function for getting the address of a PPI task.

Parameters

  [in] | task | Task.

Return values

  Task | address.

__STATIC_INLINE uint32_t nrf_drv_ppi_task_addr_group_disable_get | ( | nrf_ppi_channel_group_t | group | ) |

Function for getting the address of a PPI group enable task.

Parameters

  [in] | group | PPI channel group

Return values

  Task | address.

__STATIC_INLINE uint32_t nrf_drv_ppi_task_addr_group_enable_get | ( | nrf_ppi_channel_group_t | group | ) |

Function for getting the address of a PPI group enable task.

Parameters

  [in] | group | PPI channel group

Return values

  Task | address.

uint32_t nrf_drv_ppi_uninit | ( | void |  | ) |

Function for uninitializing the PPI module.

This function also disables all channels and clears the channel groups.

Return values

  NRF_SUCCESS | If the module was successfully uninitialized.
  NRF_ERROR_INVALID_STATE | If the module has not been initialized yet.
  NRF_ERROR_INTERNAL | If the channels or groups could not be disabled.