Hardware access layer for managing the Pulse Width Modulation (PWM) peripheral. More...
Data Structures |
|
| struct | nrf_pwm_values_grouped_t |
|
Structure for defining duty cycle values for a sequence loaded in
NRF_PWM_LOAD_GROUPED
mode.
More...
|
|
| struct | nrf_pwm_values_individual_t |
|
Structure for defining duty cycle values for a sequence loaded in
NRF_PWM_LOAD_INDIVIDUAL
mode.
More...
|
|
| struct | nrf_pwm_values_wave_form_t |
|
Structure for defining duty cycle values for a sequence loaded in
NRF_PWM_LOAD_WAVE_FORM
mode.
More...
|
|
| union | nrf_pwm_values_t |
|
Union grouping pointers to arrays of duty cycle values applicable to various loading modes.
More...
|
|
| struct | nrf_pwm_sequence_t |
|
Structure for defining a sequence of PWM duty cycles.
More...
|
|
Macros |
|
| #define | NRF_PWM_PIN_NOT_CONNECTED 0xFFFFFFFF |
|
This value can be provided as a parameter for the
nrf_pwm_pins_set
function call to specify that a given output channel shall not be connected to a physical pin.
|
|
| #define | NRF_PWM_CHANNEL_COUNT 4 |
|
Number of channels in each Pointer to the peripheral registers structure.
|
|
| #define | NRF_PWM_VALUES_LENGTH (array) (sizeof(array) / sizeof(uint16_t)) |
|
Helper macro for calculating the number of 16-bit values in specified array of duty cycle values.
|
|
Typedefs |
|
| typedef uint16_t | nrf_pwm_values_common_t |
|
Type used for defining duty cycle values for a sequence loaded in
NRF_PWM_LOAD_COMMON
mode.
|
|
Enumerations |
|
| enum |
nrf_pwm_task_t
{
NRF_PWM_TASK_STOP = offsetof(NRF_PWM_Type, TASKS_STOP), NRF_PWM_TASK_SEQSTART0 = offsetof(NRF_PWM_Type, TASKS_SEQSTART[0]), NRF_PWM_TASK_SEQSTART1 = offsetof(NRF_PWM_Type, TASKS_SEQSTART[1]), NRF_PWM_TASK_NEXTSTEP = offsetof(NRF_PWM_Type, TASKS_NEXTSTEP) } |
|
PWM tasks.
More...
|
|
| enum |
nrf_pwm_event_t
{
NRF_PWM_EVENT_STOPPED = offsetof(NRF_PWM_Type, EVENTS_STOPPED), NRF_PWM_EVENT_SEQSTARTED0 = offsetof(NRF_PWM_Type, EVENTS_SEQSTARTED[0]), NRF_PWM_EVENT_SEQSTARTED1 = offsetof(NRF_PWM_Type, EVENTS_SEQSTARTED[1]), NRF_PWM_EVENT_SEQEND0 = offsetof(NRF_PWM_Type, EVENTS_SEQEND[0]), NRF_PWM_EVENT_SEQEND1 = offsetof(NRF_PWM_Type, EVENTS_SEQEND[1]), NRF_PWM_EVENT_PWMPERIODEND = offsetof(NRF_PWM_Type, EVENTS_PWMPERIODEND), NRF_PWM_EVENT_LOOPSDONE = offsetof(NRF_PWM_Type, EVENTS_LOOPSDONE) } |
|
PWM events.
More...
|
|
| enum |
nrf_pwm_int_mask_t
{
NRF_PWM_INT_STOPPED_MASK = PWM_INTENSET_STOPPED_Msk, NRF_PWM_INT_SEQSTARTED0_MASK = PWM_INTENSET_SEQSTARTED0_Msk, NRF_PWM_INT_SEQSTARTED1_MASK = PWM_INTENSET_SEQSTARTED1_Msk, NRF_PWM_INT_SEQEND0_MASK = PWM_INTENSET_SEQEND0_Msk, NRF_PWM_INT_SEQEND1_MASK = PWM_INTENSET_SEQEND1_Msk, NRF_PWM_INT_PWMPERIODEND_MASK = PWM_INTENSET_PWMPERIODEND_Msk, NRF_PWM_INT_LOOPSDONE_MASK = PWM_INTENSET_LOOPSDONE_Msk } |
|
PWM interrupts.
More...
|
|
| enum |
nrf_pwm_short_mask_t
{
NRF_PWM_SHORT_SEQEND0_STOP_MASK = PWM_SHORTS_SEQEND0_STOP_Msk, NRF_PWM_SHORT_SEQEND1_STOP_MASK = PWM_SHORTS_SEQEND1_STOP_Msk, NRF_PWM_SHORT_LOOPSDONE_SEQSTART0_MASK = PWM_SHORTS_LOOPSDONE_SEQSTART0_Msk, NRF_PWM_SHORT_LOOPSDONE_SEQSTART1_MASK = PWM_SHORTS_LOOPSDONE_SEQSTART1_Msk, NRF_PWM_SHORT_LOOPSDONE_STOP_MASK = PWM_SHORTS_LOOPSDONE_STOP_Msk } |
|
PWM shortcuts.
More...
|
|
| enum |
nrf_pwm_mode_t
{
NRF_PWM_MODE_UP = PWM_MODE_UPDOWN_Up, NRF_PWM_MODE_UP_AND_DOWN = PWM_MODE_UPDOWN_UpAndDown } |
|
PWM modes of operation.
More...
|
|
| enum |
nrf_pwm_clk_t
{
NRF_PWM_CLK_16MHz = PWM_PRESCALER_PRESCALER_DIV_1, NRF_PWM_CLK_8MHz = PWM_PRESCALER_PRESCALER_DIV_2, NRF_PWM_CLK_4MHz = PWM_PRESCALER_PRESCALER_DIV_4, NRF_PWM_CLK_2MHz = PWM_PRESCALER_PRESCALER_DIV_8, NRF_PWM_CLK_1MHz = PWM_PRESCALER_PRESCALER_DIV_16, NRF_PWM_CLK_500kHz = PWM_PRESCALER_PRESCALER_DIV_32, NRF_PWM_CLK_250kHz = PWM_PRESCALER_PRESCALER_DIV_64, NRF_PWM_CLK_125kHz = PWM_PRESCALER_PRESCALER_DIV_128 } |
|
PWM base clock frequencies.
More...
|
|
| enum |
nrf_pwm_dec_load_t
{
NRF_PWM_LOAD_COMMON = PWM_DECODER_LOAD_Common, NRF_PWM_LOAD_GROUPED = PWM_DECODER_LOAD_Grouped, NRF_PWM_LOAD_INDIVIDUAL = PWM_DECODER_LOAD_Individual, NRF_PWM_LOAD_WAVE_FORM = PWM_DECODER_LOAD_WaveForm } |
|
PWM decoder load modes.
More...
|
|
| enum |
nrf_pwm_dec_step_t
{
NRF_PWM_STEP_AUTO = PWM_DECODER_MODE_RefreshCount, NRF_PWM_STEP_TRIGGERED = PWM_DECODER_MODE_NextStep } |
|
PWM decoder next step modes.
More...
|
|
Functions |
|
| __STATIC_INLINE void | nrf_pwm_task_trigger (NRF_PWM_Type *p_reg, nrf_pwm_task_t task) |
|
Function for activating a specific PWM task.
More...
|
|
| __STATIC_INLINE uint32_t | nrf_pwm_task_address_get (NRF_PWM_Type const *p_reg, nrf_pwm_task_t task) |
|
Function for getting the address of a specific PWM task register.
More...
|
|
| __STATIC_INLINE void | nrf_pwm_event_clear (NRF_PWM_Type *p_reg, nrf_pwm_event_t event) |
|
Function for clearing a specific PWM event.
More...
|
|
| __STATIC_INLINE bool | nrf_pwm_event_check (NRF_PWM_Type const *p_reg, nrf_pwm_event_t event) |
|
Function for checking the state of a specific PWM event.
More...
|
|
| __STATIC_INLINE uint32_t | nrf_pwm_event_address_get (NRF_PWM_Type const *p_reg, nrf_pwm_event_t event) |
|
Function for getting the address of a specific PWM event register.
More...
|
|
| __STATIC_INLINE void | nrf_pwm_shorts_enable (NRF_PWM_Type *p_reg, uint32_t pwm_shorts_mask) |
|
Function for enabling specified shortcuts.
More...
|
|
| __STATIC_INLINE void | nrf_pwm_shorts_disable (NRF_PWM_Type *p_reg, uint32_t pwm_shorts_mask) |
|
Function for disabling specified shortcuts.
More...
|
|
| __STATIC_INLINE void | nrf_pwm_shorts_set (NRF_PWM_Type *p_reg, uint32_t pwm_shorts_mask) |
|
Function for setting the configuration of PWM shortcuts.
More...
|
|
| __STATIC_INLINE void | nrf_pwm_int_enable (NRF_PWM_Type *p_reg, uint32_t pwm_int_mask) |
|
Function for enabling specified interrupts.
More...
|
|
| __STATIC_INLINE void | nrf_pwm_int_disable (NRF_PWM_Type *p_reg, uint32_t pwm_int_mask) |
|
Function for disabling specified interrupts.
More...
|
|
| __STATIC_INLINE void | nrf_pwm_int_set (NRF_PWM_Type *p_reg, uint32_t pwm_int_mask) |
|
Function for setting the configuration of PWM interrupts.
More...
|
|
| __STATIC_INLINE bool | nrf_pwm_int_enable_check (NRF_PWM_Type const *p_reg, nrf_pwm_int_mask_t pwm_int) |
|
Function for retrieving the state of a given interrupt.
More...
|
|
| __STATIC_INLINE void | nrf_pwm_enable (NRF_PWM_Type *p_reg) |
|
Function for enabling the PWM peripheral.
More...
|
|
| __STATIC_INLINE void | nrf_pwm_disable (NRF_PWM_Type *p_reg) |
|
Function for disabling the PWM peripheral.
More...
|
|
| __STATIC_INLINE void | nrf_pwm_pins_set (NRF_PWM_Type *p_reg, uint32_t out_pins[4]) |
|
Function for assigning pins to PWM output channels.
More...
|
|
| __STATIC_INLINE void | nrf_pwm_configure (NRF_PWM_Type *p_reg, nrf_pwm_clk_t base_clock, nrf_pwm_mode_t mode, uint16_t top_value) |
|
Function for configuring the PWM peripheral.
More...
|
|
| __STATIC_INLINE void | nrf_pwm_sequence_set (NRF_PWM_Type *p_reg, uint8_t seq_id, nrf_pwm_sequence_t const *p_seq) |
|
Function for defining a sequence of PWM duty cycles.
More...
|
|
| __STATIC_INLINE void | nrf_pwm_seq_ptr_set (NRF_PWM_Type *p_reg, uint8_t seq_id, uint16_t const *p_values) |
|
Function for modifying the pointer to the duty cycle values in the specified sequence.
More...
|
|
| __STATIC_INLINE void | nrf_pwm_seq_cnt_set (NRF_PWM_Type *p_reg, uint8_t seq_id, uint16_t length) |
|
Function for modifying the total number of duty cycle values in the specified sequence.
More...
|
|
| __STATIC_INLINE void | nrf_pwm_seq_refresh_set (NRF_PWM_Type *p_reg, uint8_t seq_id, uint32_t refresh) |
|
Function for modifying the additional number of PWM periods spent on each duty cycle value in the specified sequence.
More...
|
|
| __STATIC_INLINE void | nrf_pwm_seq_end_delay_set (NRF_PWM_Type *p_reg, uint8_t seq_id, uint32_t end_delay) |
|
Function for modifying the additional time added after the sequence is played.
More...
|
|
| __STATIC_INLINE void | nrf_pwm_decoder_set (NRF_PWM_Type *p_reg, nrf_pwm_dec_load_t dec_load, nrf_pwm_dec_step_t dec_step) |
|
Function for setting the mode of loading sequence data from RAM and advancing the sequence.
More...
|
|
| __STATIC_INLINE void | nrf_pwm_loop_set (NRF_PWM_Type *p_reg, uint16_t loop_count) |
|
Function for setting the number of times the sequence playback should be performed.
More...
|
|
Detailed Description
Hardware access layer for managing the Pulse Width Modulation (PWM) peripheral.
Enumeration Type Documentation
| enum nrf_pwm_clk_t |
PWM base clock frequencies.
| enum nrf_pwm_dec_load_t |
PWM decoder load modes.
The selected mode determines how the sequence data is read from RAM and spread to the compare registers.
| enum nrf_pwm_dec_step_t |
PWM decoder next step modes.
The selected mode determines when the next value from the active sequence is loaded.
| Enumerator | |
|---|---|
| NRF_PWM_STEP_AUTO |
Automatically after the current value is played and repeated the requested number of times. |
| NRF_PWM_STEP_TRIGGERED |
When the NRF_PWM_TASK_NEXTSTEP task is triggered. |
| enum nrf_pwm_event_t |
PWM events.
| enum nrf_pwm_int_mask_t |
PWM interrupts.
| enum nrf_pwm_mode_t |
| enum nrf_pwm_short_mask_t |
PWM shortcuts.
| enum nrf_pwm_task_t |
PWM tasks.
| Enumerator | |
|---|---|
| NRF_PWM_TASK_STOP |
Stops PWM pulse generation on all channels at the end of the current PWM period, and stops the sequence playback. |
| NRF_PWM_TASK_SEQSTART0 |
Starts playback of sequence 0. |
| NRF_PWM_TASK_SEQSTART1 |
Starts playback of sequence 1. |
| NRF_PWM_TASK_NEXTSTEP |
Steps by one value in the current sequence if the decoder is set to NRF_PWM_STEP_TRIGGERED mode. |
Function Documentation
| __STATIC_INLINE void nrf_pwm_configure | ( | NRF_PWM_Type * | p_reg , |
| nrf_pwm_clk_t | base_clock , | ||
| nrf_pwm_mode_t | mode , | ||
| uint16_t | top_value | ||
| ) |
Function for configuring the PWM peripheral.
- Parameters
-
[in] p_reg Pointer to the peripheral registers structure. [in] base_clock Base clock frequency. [in] mode Operating mode of the pulse generator counter. [in] top_value Value up to which the pulse generator counter counts.
| __STATIC_INLINE void nrf_pwm_decoder_set | ( | NRF_PWM_Type * | p_reg , |
| nrf_pwm_dec_load_t | dec_load , | ||
| nrf_pwm_dec_step_t | dec_step | ||
| ) |
Function for setting the mode of loading sequence data from RAM and advancing the sequence.
- Parameters
-
[in] p_reg Pointer to the peripheral registers structure. [in] dec_load Mode of loading sequence data from RAM. [in] dec_step Mode of advancing the active sequence.
| __STATIC_INLINE void nrf_pwm_disable | ( | NRF_PWM_Type * | p_reg | ) |
Function for disabling the PWM peripheral.
- Parameters
-
[in] p_reg Pointer to the peripheral registers structure.
| __STATIC_INLINE void nrf_pwm_enable | ( | NRF_PWM_Type * | p_reg | ) |
Function for enabling the PWM peripheral.
- Parameters
-
[in] p_reg Pointer to the peripheral registers structure.
| __STATIC_INLINE uint32_t nrf_pwm_event_address_get | ( | NRF_PWM_Type const * | p_reg , |
| nrf_pwm_event_t | event | ||
| ) |
Function for getting the address of a specific PWM event register.
- Parameters
-
[in] p_reg Pointer to the peripheral registers structure. [in] event Requested event.
- Returns
- Address of the specified event register.
| __STATIC_INLINE bool nrf_pwm_event_check | ( | NRF_PWM_Type const * | p_reg , |
| nrf_pwm_event_t | event | ||
| ) |
Function for checking the state of a specific PWM event.
- Parameters
-
[in] p_reg Pointer to the peripheral registers structure. [in] event Event to check.
- Return values
-
true If the event is set. false If the event is not set.
| __STATIC_INLINE void nrf_pwm_event_clear | ( | NRF_PWM_Type * | p_reg , |
| nrf_pwm_event_t | event | ||
| ) |
Function for clearing a specific PWM event.
- Parameters
-
[in] p_reg Pointer to the peripheral registers structure. [in] event Event to clear.
| __STATIC_INLINE void nrf_pwm_int_disable | ( | NRF_PWM_Type * | p_reg , |
| uint32_t | pwm_int_mask | ||
| ) |
Function for disabling specified interrupts.
- Parameters
-
[in] p_reg Pointer to the peripheral registers structure. [in] pwm_int_mask Interrupts to disable.
| __STATIC_INLINE void nrf_pwm_int_enable | ( | NRF_PWM_Type * | p_reg , |
| uint32_t | pwm_int_mask | ||
| ) |
Function for enabling specified interrupts.
- Parameters
-
[in] p_reg Pointer to the peripheral registers structure. [in] pwm_int_mask Interrupts to enable.
| __STATIC_INLINE bool nrf_pwm_int_enable_check | ( | NRF_PWM_Type const * | p_reg , |
| nrf_pwm_int_mask_t | pwm_int | ||
| ) |
Function for retrieving the state of a given interrupt.
- Parameters
-
[in] p_reg Pointer to the peripheral registers structure. [in] pwm_int Interrupt to check.
- Return values
-
true If the interrupt is enabled. false If the interrupt is not enabled.
| __STATIC_INLINE void nrf_pwm_int_set | ( | NRF_PWM_Type * | p_reg , |
| uint32_t | pwm_int_mask | ||
| ) |
Function for setting the configuration of PWM interrupts.
- Parameters
-
[in] p_reg Pointer to the peripheral registers structure. [in] pwm_int_mask Interrupts configuration to set.
| __STATIC_INLINE void nrf_pwm_loop_set | ( | NRF_PWM_Type * | p_reg , |
| uint16_t | loop_count | ||
| ) |
Function for setting the number of times the sequence playback should be performed.
This function applies to two-sequence playback (concatenated sequence 0 and 1). A single sequence can be played back only once.
- Parameters
-
[in] p_reg Pointer to the peripheral registers structure. [in] loop_count Number of times to perform the sequence playback.
| __STATIC_INLINE void nrf_pwm_pins_set | ( | NRF_PWM_Type * | p_reg , |
| uint32_t | out_pins [4] | ||
| ) |
Function for assigning pins to PWM output channels.
Usage of all PWM output channels is optional. If a given channel is not needed, pass the NRF_PWM_PIN_NOT_CONNECTED value instead of its pin number.
- Parameters
-
[in] p_reg Pointer to the peripheral registers structure. [in] out_pins Array with pin numbers for individual PWM output channels.
| __STATIC_INLINE void nrf_pwm_seq_cnt_set | ( | NRF_PWM_Type * | p_reg , |
| uint8_t | seq_id , | ||
| uint16_t | length | ||
| ) |
Function for modifying the total number of duty cycle values in the specified sequence.
- Parameters
-
[in] p_reg Pointer to the peripheral registers structure. [in] seq_id Identifier of the sequence (0 or 1). [in] length Number of duty cycle values.
| __STATIC_INLINE void nrf_pwm_seq_end_delay_set | ( | NRF_PWM_Type * | p_reg , |
| uint8_t | seq_id , | ||
| uint32_t | end_delay | ||
| ) |
Function for modifying the additional time added after the sequence is played.
- Parameters
-
[in] p_reg Pointer to the peripheral registers structure. [in] seq_id Identifier of the sequence (0 or 1). [in] end_delay Number of PWM periods added at the end of the sequence.
| __STATIC_INLINE void nrf_pwm_seq_ptr_set | ( | NRF_PWM_Type * | p_reg , |
| uint8_t | seq_id , | ||
| uint16_t const * | p_values | ||
| ) |
Function for modifying the pointer to the duty cycle values in the specified sequence.
- Parameters
-
[in] p_reg Pointer to the peripheral registers structure. [in] seq_id Identifier of the sequence (0 or 1). [in] p_values Pointer to an array with duty cycle values.
| __STATIC_INLINE void nrf_pwm_seq_refresh_set | ( | NRF_PWM_Type * | p_reg , |
| uint8_t | seq_id , | ||
| uint32_t | refresh | ||
| ) |
Function for modifying the additional number of PWM periods spent on each duty cycle value in the specified sequence.
- Parameters
-
[in] p_reg Pointer to the peripheral registers structure. [in] seq_id Identifier of the sequence (0 or 1). [in] refresh Number of additional PWM periods for each duty cycle value.
| __STATIC_INLINE void nrf_pwm_sequence_set | ( | NRF_PWM_Type * | p_reg , |
| uint8_t | seq_id , | ||
| nrf_pwm_sequence_t const * | p_seq | ||
| ) |
Function for defining a sequence of PWM duty cycles.
- Parameters
-
[in] p_reg Pointer to the peripheral registers structure. [in] seq_id Identifier of the sequence (0 or 1). [in] p_seq Pointer to the sequence definition.
| __STATIC_INLINE void nrf_pwm_shorts_disable | ( | NRF_PWM_Type * | p_reg , |
| uint32_t | pwm_shorts_mask | ||
| ) |
Function for disabling specified shortcuts.
- Parameters
-
[in] p_reg Pointer to the peripheral registers structure. [in] pwm_shorts_mask Shortcuts to disable.
| __STATIC_INLINE void nrf_pwm_shorts_enable | ( | NRF_PWM_Type * | p_reg , |
| uint32_t | pwm_shorts_mask | ||
| ) |
Function for enabling specified shortcuts.
- Parameters
-
[in] p_reg Pointer to the peripheral registers structure. [in] pwm_shorts_mask Shortcuts to enable.
| __STATIC_INLINE void nrf_pwm_shorts_set | ( | NRF_PWM_Type * | p_reg , |
| uint32_t | pwm_shorts_mask | ||
| ) |
Function for setting the configuration of PWM shortcuts.
- Parameters
-
[in] p_reg Pointer to the peripheral registers structure. [in] pwm_shorts_mask Shortcuts configuration to set.
| __STATIC_INLINE uint32_t nrf_pwm_task_address_get | ( | NRF_PWM_Type const * | p_reg , |
| nrf_pwm_task_t | task | ||
| ) |
Function for getting the address of a specific PWM task register.
- Parameters
-
[in] p_reg Pointer to the peripheral registers structure. [in] task Requested task.
- Returns
- Address of the specified task register.
| __STATIC_INLINE void nrf_pwm_task_trigger | ( | NRF_PWM_Type * | p_reg , |
| nrf_pwm_task_t | task | ||
| ) |
Function for activating a specific PWM task.
- Parameters
-
[in] p_reg Pointer to the peripheral registers structure. [in] task Task to activate.