nRF52 Series only: 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... | |
nRF52 Series only: Hardware access layer for managing the Pulse Width Modulation (PWM) peripheral.
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. |
__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.
[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.
[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.
[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.
[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.
[in] | p_reg | Pointer to the peripheral registers structure. |
[in] | event | Requested event. |
__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.
[in] | p_reg | Pointer to the peripheral registers structure. |
[in] | event | Event to check. |
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.
[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.
[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.
[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.
[in] | p_reg | Pointer to the peripheral registers structure. |
[in] | pwm_int | Interrupt to check. |
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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[in] | p_reg | Pointer to the peripheral registers structure. |
[in] | task | Requested task. |
__STATIC_INLINE void nrf_pwm_task_trigger | ( | NRF_PWM_Type * | p_reg, |
nrf_pwm_task_t | task | ||
) |
Function for activating a specific PWM task.
[in] | p_reg | Pointer to the peripheral registers structure. |
[in] | task | Task to activate. |