SAM4SD32 (SAM4S-EK2)
Loading...
Searching...
No Matches
pwm.h
Go to the documentation of this file.
1
33/*
34 * Support and FAQ: visit <a href="https://www.microchip.com/support/">Microchip Support</a>
35 */
36
37#ifndef PWM_H_INCLUDED
38#define PWM_H_INCLUDED
39
40#include "compiler.h"
41
43
44#ifdef __cplusplus
45extern "C" {
46#endif
49
50#define PWM_INVALID_ARGUMENT 0xFFFF
51
53typedef enum _pwm_ch_t {
58#if (SAM3XA)
59 PWM_CHANNEL_4 = 4,
60 PWM_CHANNEL_5 = 5,
61 PWM_CHANNEL_6 = 6,
62 PWM_CHANNEL_7 = 7
63#endif /* (SAM3XA) */
65
67typedef enum {
68 PWM_ALIGN_LEFT = (0 << 8), /* The period is left aligned. */
69 PWM_ALIGN_CENTER = (1 << 8) /* The period is center aligned. */
71
73typedef enum {
74 PWM_LOW = LOW, /* Low level */
75 PWM_HIGH = HIGH, /* High level */
76#if (SAM4E || SAMV70 || SAMV71 || SAME70 || SAMS70)
77 PWM_HIGHZ, /* High Impedance */
78#endif
80
82typedef struct {
84 uint32_t ul_clka;
86 uint32_t ul_clkb;
88 uint32_t ul_mck;
90
91#if (SAM3U || SAM3S || SAM3XA || SAM4S || SAM4E || SAMV70 || SAMV71 || SAME70 || SAMS70)
93typedef enum {
94 PWM_STEPPER_MOTOR_CH_0_1 = 0, /* Channel 0 and 1 */
95 PWM_STEPPER_MOTOR_CH_2_3 = 1, /* Channel 2 and 3 */
96#if (SAM3XA)
97 PWM_STEPPER_MOTOR_CH_4_5 = 2, /* Channel 4 and 5 */
98 PWM_STEPPER_MOTOR_CH_6_7 = 3 /* Channel 6 and 7 */
99#endif /* (SAM3XA) */
101
108
110typedef enum {
111 PWM_EVENT_PERIOD_END = (0 << 10), /* The channel counter event occurs at the end of the PWM period. */
112 PWM_EVENT_PERIOD_HALF_END = (1 << 10) /* The channel counter event occurs at the half of the PWM period. */
114
116typedef enum {
117#if (SAM3U)
118 PWM_FAULT_MAINOSC = (1 << 0),
119 PWM_FAULT_PWMFI2 = (1 << 1),
120 PWM_FAULT_PWMFI0 = (1 << 2),
121 PWM_FAULT_PWMFI1 = (1 << 3),
122#elif (SAM3S || SAM4S )
125 PWM_FAULT_ADC = (1 << 2),
126 PWM_FAULT_ACC = (1 << 3),
129#elif (SAM4E )
130 PWM_FAULT_MAINOSC = (1 << 0),
131 PWM_FAULT_ADC = (1 << 1),
132 PWM_FAULT_PWMFI0 = (1 << 2),
133 PWM_FAULT_PWMFI1 = (1 << 3),
134 PWM_FAULT_PWMFI2 = (1 << 4),
135 PWM_FAULT_PWMFI3 = (1 << 5),
136 PWM_FAULT_PWMFI4 = (1 << 6),
137 PWM_FAULT_PWMFI5 = (1 << 7),
138#elif (SAMV70 || SAMV71 || SAME70 || SAMS70)
139 PWM_FAULT_PWMC0_PWMFI0 = (1 << 0),
140 PWM_FAULT_PWMC0_PWMFI1 = (1 << 1),
141 PWM_FAULT_PWMC0_PWMFI2 = (1 << 2),
142 PWM_FAULT_PWMC1_PWMFI0 = (1 << 0),
143 PWM_FAULT_PWMC1_PWMFI1 = (1 << 1),
144 PWM_FAULT_PWMC1_PWMFI2 = (1 << 2),
145 PWM_FAULT_MAINOSC = (1 << 3),
146 PWM_FAULT_AFEC0 = (1 << 4),
147 PWM_FAULT_AFEC1 = (1 << 5),
148 PWM_FAULT_ACC = (1 << 6),
149 PWM_FAULT_TIMER_0 = (1 << 7),
150 PWM_FAULT_TIMER_1 = (1 << 7),
151#elif (SAM3XA)
152 PWM_FAULT_PWMFI0 = (1 << 0),
153 PWM_FAULT_PWMFI1 = (1 << 1),
154 PWM_FAULT_PWMFI2 = (1 << 2),
155 PWM_FAULT_MAINOSC = (1 << 3),
156 PWM_FAULT_ADC = (1 << 4),
157 PWM_FAULT_TIMER_0 = (1 << 5),
158#endif
160
162typedef enum {
163 PWM_GROUP_CLOCK = (1 << 0),
165 PWM_GROUP_MODE = (1 << 2),
170
172typedef enum {
173 PWM_CMP_MATCH = 8, /* Comparison unit match */
174 PWM_CMP_UPDATE = 16 /* Comparison unit update */
176
188
190typedef enum {
191 PWM_PDC_UPDATE_PERIOD_ELAPSED = (0 << 20), /* PDC transfer request is set as soon as the update period elapses. */
192 PWM_PDC_COMPARISON_MATCH = (1 << 20) /* PDC transfer request is set as soon as the selected comparison matches. */
194
196typedef enum {
197 PWM_PDC_TX_END = (1 << 1), /* PDC Tx end */
198 PWM_PDC_TX_EMPTY = (1 << 2) /* PDC Tx buffer empty */
200
202typedef enum {
203 PWM_SYNC_WRITE_READY = (1 << 0), /* Write Ready for Synchronous Channels Update */
204 PWM_SYNC_UNDERRUN = (1 << 3) /* Synchronous Channels Update Underrun Error */
206
207#if (SAM4E || SAMV70 || SAMV71 || SAME70 || SAMS70)
208typedef enum {
209 PWM_SPREAD_SPECTRUM_MODE_TRIANGULAR = 0,
210 PWM_SPREAD_SPECTRUM_MODE_RANDOM
211} pwm_spread_spectrum_mode_t;
212#if (SAMV70 || SAMV71 || SAME70 || SAMS70)
213typedef enum {
214 PWM_LEADING_EDGE1_MODE_LINC = PWM_LEBR1_PWMLFEN,
215 PWM_LEADING_EDGE1_MODE_LDEC = PWM_LEBR1_PWMLREN,
216 PWM_LEADING_EDGE1_MODE_HINC = PWM_LEBR1_PWMHFEN,
217 PWM_LEADING_EDGE1_MODE_HDEC = PWM_LEBR1_PWMHREN,
218 PWM_LEADING_EDGE2_MODE_LINC = PWM_LEBR2_PWMLFEN,
219 PWM_LEADING_EDGE2_MODE_LDEC = PWM_LEBR2_PWMLREN,
220 PWM_LEADING_EDGE2_MODE_HINC = PWM_LEBR2_PWMHFEN,
221 PWM_LEADING_EDGE2_MODE_HDEC = PWM_LEBR2_PWMHREN,
222} pwm_leading_edge_blanking_mode_t;
223#endif
224#endif
225
237
239typedef struct {
241 uint32_t unit;
245 uint32_t ul_value;
249 uint32_t ul_trigger;
251 uint32_t ul_period;
258} pwm_cmp_t;
259
271
273typedef struct {
275 uint32_t ul_hw_status;
277 uint32_t ul_sw_status;
279 uint32_t ul_offset;
281#endif /* (SAM3U || SAM3S || SAM3XA || SAM4S || SAM4E || SAMV70 || SAMV71 || SAME70 || SAMS70) */
282
284typedef struct {
286 uint32_t channel;
288 uint32_t ul_prescaler;
294 uint32_t ul_duty;
296 uint32_t ul_period;
297
298#if (SAM3U || SAM3S || SAM3XA || SAM4S || SAM4E || SAMV70 || SAMV71 || SAME70 || SAMS70)
321#endif /* (SAM3U || SAM3S || SAM3XA || SAM4S || SAM4E || SAMV70 || SAMV71 || SAME70 || SAMS70) */
322#if SAM4E
324 uint32_t ul_spread;
326 pwm_spread_spectrum_mode_t spread_spectrum_mode;
327#elif (SAMV70 || SAMV71 || SAME70 || SAMS70)
329 uint32_t ul_spread;
331 pwm_spread_spectrum_mode_t spread_spectrum_mode;
333 uint32_t ul_leading_edge_delay;
335 pwm_leading_edge_blanking_mode_t leading_edge_blanking_mode;
337 uint32_t ul_ppm_mode;
338#endif
340
341
342uint32_t pwm_init(Pwm *p_pwm, pwm_clock_t *clock_config);
343uint32_t pwm_channel_init(Pwm *p_pwm, pwm_channel_t *p_channel);
344uint32_t pwm_channel_update_period(Pwm *p_pwm, pwm_channel_t *p_channel,
345 uint32_t ul_period);
346uint32_t pwm_channel_update_duty(Pwm *p_pwm, pwm_channel_t *p_channel,
347 uint32_t ul_duty);
348uint32_t pwm_channel_get_counter(Pwm *p_pwm, pwm_channel_t *p_channel);
349void pwm_channel_enable(Pwm *p_pwm, uint32_t ul_channel);
350void pwm_channel_disable(Pwm *p_pwm, uint32_t ul_channel);
351uint32_t pwm_channel_get_status(Pwm *p_pwm);
353uint32_t pwm_channel_get_interrupt_mask(Pwm *p_pwm);
354void pwm_channel_enable_interrupt(Pwm *p_pwm, uint32_t ul_event,
355 uint32_t ul_fault);
356void pwm_channel_disable_interrupt(Pwm *p_pwm, uint32_t ul_event,
357 uint32_t ul_fault);
358
359#if (SAM3U || SAM3S || SAM3XA || SAM4S || SAM4E || SAMV70 || SAMV71 || SAME70 || SAMS70)
360void pwm_channel_update_output(Pwm *p_pwm, pwm_channel_t *p_channel,
361 pwm_output_t *p_output, bool b_sync);
362void pwm_channel_update_dead_time(Pwm *p_pwm, pwm_channel_t *p_channel,
363 uint16_t us_deadtime_pwmh, uint16_t us_deadtime_pwml);
364
365uint32_t pwm_fault_init(Pwm *p_pwm, pwm_fault_t *p_fault);
366uint32_t pwm_fault_get_status(Pwm *p_pwm);
369
370uint32_t pwm_cmp_init(Pwm *p_pwm, pwm_cmp_t *p_cmp);
371uint32_t pwm_cmp_change_setting(Pwm *p_pwm, pwm_cmp_t *p_cmp);
372uint32_t pwm_cmp_get_period_counter(Pwm *p_pwm, uint32_t ul_cmp_unit);
373uint32_t pwm_cmp_get_update_counter(Pwm *p_pwm, uint32_t ul_cmp_unit);
374void pwm_cmp_enable_interrupt(Pwm *p_pwm, uint32_t ul_sources,
376void pwm_cmp_disable_interrupt(Pwm *p_pwm, uint32_t ul_sources,
378#if !(SAMV70 || SAMV71 || SAME70 || SAMS70)
379void pwm_pdc_set_request_mode(Pwm *p_pwm, pwm_pdc_request_mode_t request_mode,
380 uint32_t ul_cmp_unit);
381
382void pwm_pdc_enable_interrupt(Pwm *p_pwm, uint32_t ul_sources);
383void pwm_pdc_disable_interrupt(Pwm *p_pwm, uint32_t ul_sources);
384#endif
385uint32_t pwm_sync_init(Pwm *p_pwm, pwm_sync_update_mode_t mode,
386 uint32_t ul_update_period);
387void pwm_sync_unlock_update(Pwm *p_pwm);
388void pwm_sync_change_period(Pwm *p_pwm, uint32_t ul_update_period);
389uint32_t pwm_sync_get_period_counter(Pwm * p_pwm);
390void pwm_sync_enable_interrupt(Pwm *p_pwm, uint32_t ul_sources);
391void pwm_sync_disable_interrupt(Pwm *p_pwm, uint32_t ul_sources);
392
393void pwm_enable_protect(Pwm *p_pwm, uint32_t ul_group, bool b_sw);
394void pwm_disable_protect(Pwm *p_pwm, uint32_t ul_group);
395bool pwm_get_protect_status(Pwm *p_pwm, pwm_protect_t * p_protect);
396
397uint32_t pwm_get_interrupt_status(Pwm *p_pwm);
398uint32_t pwm_get_interrupt_mask(Pwm *p_pwm);
399#endif /* (SAM3U || SAM3S || SAM3XA || SAM4S || SAM4E || SAMV70 || SAMV71 || SAME70 || SAMS70) */
400
401#if (SAM3S || SAM3XA || SAM4S || SAM4E || SAMV70 || SAMV71 || SAME70 || SAMS70)
403 bool b_enable_gray, bool b_down);
404#endif /* (SAM3S || SAM3XA || SAM4S || SAM4E || SAMV70 || SAMV71 || SAME70 || SAMS70) */
405
406#if SAM4E
407void pwm_channel_update_spread(Pwm *p_pwm, pwm_channel_t *p_channel,
408 uint32_t ul_spread);
409void pwm_channel_update_polarity_mode(Pwm *p_pwm, pwm_channel_t *p_channel,
410 bool polarity_inversion_flag, pwm_level_t polarity_value);
411#elif (SAMV70 || SAMV71 || SAME70 || SAMS70)
412void pwm_channel_update_spread(Pwm *p_pwm, pwm_channel_t *p_channel,
413 uint32_t ul_spread);
414void pwm_channel_update_leading_edge(Pwm *p_pwm, pwm_channel_t *p_channel,
415 uint32_t ul_leading_edge_delay,
416 pwm_leading_edge_blanking_mode_t leading_edge_blanking_mode);
417#endif
418
419#if (SAMV70 || SAMV71 || SAME70 || SAMS70)
420void pwm_set_dma_duty(Pwm *p_pwm, uint32_t ul_dma_duty_value);
421void pwm_set_ext_trigger_mode(Pwm *p_pwm, pwm_channel_t *p_channel, uint32_t ul_mode);
422#endif
423
425
426#ifdef __cplusplus
427}
428#endif
431
527
681
682#endif /* PWM_H_INCLUDED */
683
#define PWM_SCM_UPDM_MODE0
(PWM_SCM) Manual write of double buffer registers and manual update of synchronous channels
#define PWM_SCM_UPDM_MODE1
(PWM_SCM) Manual write of double buffer registers and automatic update of synchronous channels
#define PWM_SCM_UPDM_MODE2
(PWM_SCM) Automatic write of duty-cycle update registers by the PDC and automatic update of synchrono...
void pwm_pdc_set_request_mode(Pwm *p_pwm, pwm_pdc_request_mode_t request_mode, uint32_t ul_cmp_unit)
Set PDC transfer request mode.
Definition pwm.c:809
void pwm_pdc_disable_interrupt(Pwm *p_pwm, uint32_t ul_sources)
Disable the interrupt of PDC transfer.
Definition pwm.c:839
uint32_t pwm_channel_update_duty(Pwm *p_pwm, pwm_channel_t *p_channel, uint32_t ul_duty)
Change the duty cycle of the PWM channel.
Definition pwm.c:348
uint32_t pwm_get_interrupt_status(Pwm *p_pwm)
Get interrupt status of PDC transfer, synchronous channels and comparison.
Definition pwm.c:996
void pwm_pdc_enable_interrupt(Pwm *p_pwm, uint32_t ul_sources)
Enable the interrupt of PDC transfer.
Definition pwm.c:828
uint32_t pwm_channel_get_interrupt_status(Pwm *p_pwm)
Get channel counter event and fault protection trigger interrupt status.
Definition pwm.c:434
uint32_t pwm_init(Pwm *p_pwm, pwm_clock_t *clock_config)
Initialize the PWM source clock (clock A and clock B).
Definition pwm.c:119
void pwm_stepper_motor_init(Pwm *p_pwm, pwm_stepper_motor_pair_t pair, bool b_enable_gray, bool b_down)
Initialize PWM stepper motor mode.
Definition pwm.c:1023
bool pwm_get_protect_status(Pwm *p_pwm, pwm_protect_t *p_protect)
Get PWM write protect status.
Definition pwm.c:971
void pwm_sync_unlock_update(Pwm *p_pwm)
Unlock the update of synchronous channels.
Definition pwm.c:876
void pwm_disable_protect(Pwm *p_pwm, uint32_t ul_group)
Disable PWM write protect.
Definition pwm.c:956
uint32_t pwm_sync_get_period_counter(Pwm *p_pwm)
Get the value of the synchronization update period counter.
Definition pwm.c:899
void pwm_channel_enable_interrupt(Pwm *p_pwm, uint32_t ul_event, uint32_t ul_fault)
Enable the interrupt of a channel counter event and fault protection.
Definition pwm.c:467
void pwm_cmp_enable_interrupt(Pwm *p_pwm, uint32_t ul_sources, pwm_cmp_interrupt_t type)
Enable the interrupt of comparison.
Definition pwm.c:767
uint32_t pwm_channel_get_status(Pwm *p_pwm)
Check which PWM channel is enabled.
Definition pwm.c:422
void pwm_fault_clear_status(Pwm *p_pwm, pwm_fault_id_t id)
Clear a fault input.
Definition pwm.c:640
void pwm_channel_update_output(Pwm *p_pwm, pwm_channel_t *p_channel, pwm_output_t *p_output, bool b_sync)
Change output selection of the PWM channel.
Definition pwm.c:510
uint32_t pwm_channel_update_period(Pwm *p_pwm, pwm_channel_t *p_channel, uint32_t ul_period)
Change the period of the PWM channel.
Definition pwm.c:314
uint32_t pwm_cmp_change_setting(Pwm *p_pwm, pwm_cmp_t *p_cmp)
Change the setting of PWM comparison.
Definition pwm.c:696
void pwm_enable_protect(Pwm *p_pwm, uint32_t ul_group, bool b_sw)
Enable PWM write protect.
Definition pwm.c:933
void pwm_cmp_disable_interrupt(Pwm *p_pwm, uint32_t ul_sources, pwm_cmp_interrupt_t type)
Disable the interrupt of comparison.
Definition pwm.c:787
void pwm_sync_disable_interrupt(Pwm *p_pwm, uint32_t ul_sources)
Disable the interrupt of synchronous channels.
Definition pwm.c:921
uint32_t pwm_cmp_init(Pwm *p_pwm, pwm_cmp_t *p_cmp)
Initialize PWM comparison unit.
Definition pwm.c:653
void pwm_channel_disable_interrupt(Pwm *p_pwm, uint32_t ul_event, uint32_t ul_fault)
Disable the interrupt of a channel counter event and fault protection.
Definition pwm.c:488
uint32_t pwm_fault_get_status(Pwm *p_pwm)
Get fault status.
Definition pwm.c:613
uint32_t pwm_fault_init(Pwm *p_pwm, pwm_fault_t *p_fault)
Initialize the behavior of a fault input.
Definition pwm.c:577
pwm_level_t pwm_fault_get_input_level(Pwm *p_pwm, pwm_fault_id_t id)
Get the level of a fault input.
Definition pwm.c:626
uint32_t pwm_channel_get_counter(Pwm *p_pwm, pwm_channel_t *p_channel)
Return channel counter value.
Definition pwm.c:383
uint32_t pwm_get_interrupt_mask(Pwm *p_pwm)
Get interrupt mask of PDC transfer, synchronous channels and comparison.
Definition pwm.c:1008
void pwm_sync_change_period(Pwm *p_pwm, uint32_t ul_update_period)
Change the wanted time between each update of the synchronous channels.
Definition pwm.c:887
void pwm_channel_disable(Pwm *p_pwm, uint32_t ul_channel)
Disable the PWM channel.
Definition pwm.c:410
uint32_t pwm_cmp_get_update_counter(Pwm *p_pwm, uint32_t ul_cmp_unit)
Report the value of the comparison update period counter.
Definition pwm.c:753
uint32_t pwm_channel_get_interrupt_mask(Pwm *p_pwm)
Get channel counter event and fault protection trigger interrupt mask.
Definition pwm.c:450
uint32_t pwm_cmp_get_period_counter(Pwm *p_pwm, uint32_t ul_cmp_unit)
Report the value of the comparison period counter.
Definition pwm.c:739
void pwm_channel_update_dead_time(Pwm *p_pwm, pwm_channel_t *p_channel, uint16_t us_deadtime_pwmh, uint16_t us_deadtime_pwml)
Change dead-time value for PWM outputs.
Definition pwm.c:554
uint32_t pwm_sync_init(Pwm *p_pwm, pwm_sync_update_mode_t mode, uint32_t ul_update_period)
Initialize synchronous channels update mode and period.
Definition pwm.c:854
void pwm_sync_enable_interrupt(Pwm *p_pwm, uint32_t ul_sources)
Enable the interrupt of synchronous channel.
Definition pwm.c:910
uint32_t pwm_channel_init(Pwm *p_pwm, pwm_channel_t *p_channel)
Initialize one PWM channel.
Definition pwm.c:160
void pwm_channel_enable(Pwm *p_pwm, uint32_t ul_channel)
Enable the PWM channel.
Definition pwm.c:397
pwm_sync_interrupt_t
Definitions for PWM synchronous channels interrupt.
Definition pwm.h:202
@ PWM_SYNC_UNDERRUN
Definition pwm.h:204
@ PWM_SYNC_WRITE_READY
Definition pwm.h:203
pwm_level_t
Definitions for PWM level.
Definition pwm.h:73
@ PWM_LOW
Definition pwm.h:74
@ PWM_HIGH
Definition pwm.h:75
_pwm_ch_t
Definitions for PWM channel number.
Definition pwm.h:53
@ PWM_CHANNEL_1
Definition pwm.h:55
@ PWM_CHANNEL_3
Definition pwm.h:57
@ PWM_CHANNEL_0
Definition pwm.h:54
@ PWM_CHANNEL_2
Definition pwm.h:56
pwm_sync_update_mode_t
Definitions for PWM synchronous channels update mode.
Definition pwm.h:103
@ PWM_SYNC_UPDATE_MODE_1
Definition pwm.h:105
@ PWM_SYNC_UPDATE_MODE_2
Definition pwm.h:106
@ PWM_SYNC_UPDATE_MODE_0
Definition pwm.h:104
pwm_counter_event_t
Definitions for PWM event.
Definition pwm.h:110
@ PWM_EVENT_PERIOD_END
Definition pwm.h:111
@ PWM_EVENT_PERIOD_HALF_END
Definition pwm.h:112
pwm_pdc_request_mode_t
Definitions for PWM PDC transfer request mode.
Definition pwm.h:190
@ PWM_PDC_UPDATE_PERIOD_ELAPSED
Definition pwm.h:191
@ PWM_PDC_COMPARISON_MATCH
Definition pwm.h:192
pwm_protect_reg_group_t
Definitions of PWM register group.
Definition pwm.h:162
@ PWM_GROUP_DISABLE
Definition pwm.h:164
@ PWM_GROUP_DEAD_TIME
Definition pwm.h:167
@ PWM_GROUP_PERIOD
Definition pwm.h:166
@ PWM_GROUP_FAULT
Definition pwm.h:168
@ PWM_GROUP_MODE
Definition pwm.h:165
@ PWM_GROUP_CLOCK
Definition pwm.h:163
pwm_align_t
Definitions for PWM channel alignment.
Definition pwm.h:67
@ PWM_ALIGN_LEFT
Definition pwm.h:68
@ PWM_ALIGN_CENTER
Definition pwm.h:69
pwm_pdc_interrupt_t
Definitions for PWM PDC transfer interrupt.
Definition pwm.h:196
@ PWM_PDC_TX_END
Definition pwm.h:197
@ PWM_PDC_TX_EMPTY
Definition pwm.h:198
pwm_cmp_interrupt_t
Definitions for PWM comparison interrupt.
Definition pwm.h:172
@ PWM_CMP_UPDATE
Definition pwm.h:174
@ PWM_CMP_MATCH
Definition pwm.h:173
pwm_fault_id_t
Definitions for PWM fault input ID.
Definition pwm.h:116
@ PWM_FAULT_TIMER_0
Definition pwm.h:127
@ PWM_FAULT_TIMER_1
Definition pwm.h:128
@ PWM_FAULT_ACC
Definition pwm.h:126
@ PWM_FAULT_PWMFI0
Definition pwm.h:123
@ PWM_FAULT_MAINOSC
Definition pwm.h:124
@ PWM_FAULT_ADC
Definition pwm.h:125
enum _pwm_ch_t pwm_ch_t
Definitions for PWM channel number.
pwm_stepper_motor_pair_t
Definitions for PWM channels used by motor stepper.
Definition pwm.h:93
@ PWM_STEPPER_MOTOR_CH_2_3
Definition pwm.h:95
@ PWM_STEPPER_MOTOR_CH_0_1
Definition pwm.h:94
pmc_cmp_unit_t
Definitions for PWM comparison unit.
Definition pwm.h:178
@ PWM_CMP_UNIT_7
Definition pwm.h:186
@ PWM_CMP_UNIT_6
Definition pwm.h:185
@ PWM_CMP_UNIT_3
Definition pwm.h:182
@ PWM_CMP_UNIT_2
Definition pwm.h:181
@ PWM_CMP_UNIT_4
Definition pwm.h:183
@ PWM_CMP_UNIT_1
Definition pwm.h:180
@ PWM_CMP_UNIT_0
Definition pwm.h:179
@ PWM_CMP_UNIT_5
Definition pwm.h:184
Input parameters when configuring a PWM channel mode.
Definition pwm.h:284
pwm_align_t alignment
Channel alignment.
Definition pwm.h:290
pwm_fault_id_t fault_id
Fault ID of the channel.
Definition pwm.h:316
bool b_pwml_output_inverted
Boolean of channel dead-time PWML output inverted.
Definition pwm.h:306
bool b_pwmh_output_inverted
Boolean of channel dead-time PWMH output inverted.
Definition pwm.h:304
bool b_deadtime_generator
Boolean of channel dead-time generator.
Definition pwm.h:302
pwm_level_t ul_fault_output_pwml
Channel PWML output level in fault protection.
Definition pwm.h:320
bool b_sync_ch
Boolean of Synchronous Channel.
Definition pwm.h:314
uint16_t us_deadtime_pwml
Dead-time Value for PWML Output.
Definition pwm.h:310
pwm_level_t polarity
Channel initial polarity.
Definition pwm.h:292
uint32_t ul_period
Period Cycle Value.
Definition pwm.h:296
uint32_t ul_prescaler
Channel prescaler.
Definition pwm.h:288
pwm_output_t output_selection
Channel output.
Definition pwm.h:312
uint32_t channel
Channel number.
Definition pwm.h:286
pwm_counter_event_t counter_event
Channel counter event.
Definition pwm.h:300
pwm_level_t ul_fault_output_pwmh
Channel PWMH output level in fault protection.
Definition pwm.h:318
uint16_t us_deadtime_pwmh
Dead-time Value for PWMH Output.
Definition pwm.h:308
uint32_t ul_duty
Duty Cycle Value.
Definition pwm.h:294
Input parameters when initializing PWM.
Definition pwm.h:82
uint32_t ul_clkb
Frequency of clock B in Hz (set 0 to turn it off).
Definition pwm.h:86
uint32_t ul_mck
Frequency of master clock in Hz.
Definition pwm.h:88
uint32_t ul_clka
Frequency of clock A in Hz (set 0 to turn it off).
Definition pwm.h:84
Configurations of PWM comparison.
Definition pwm.h:239
bool b_enable
Boolean of comparison enable.
Definition pwm.h:243
uint32_t ul_value
Comparison value.
Definition pwm.h:245
uint32_t ul_period
Comparison period value.
Definition pwm.h:251
uint32_t ul_trigger
Comparison trigger value.
Definition pwm.h:249
bool b_is_decrementing
Comparison mode.
Definition pwm.h:247
uint32_t ul_update_period
Comparison update period value.
Definition pwm.h:253
uint32_t unit
Comparison unit number.
Definition pwm.h:241
bool b_pulse_on_line_0
Boolean of generating a match pulse on PWM event line 0.
Definition pwm.h:255
bool b_pulse_on_line_1
Boolean of generating a match pulse on PWM event line 1.
Definition pwm.h:257
Configuration of PWM fault input behaviors.
Definition pwm.h:261
bool b_filtered
Boolean of fault filtering.
Definition pwm.h:269
pwm_fault_id_t fault_id
Fault ID.
Definition pwm.h:263
pwm_level_t polarity
Polarity of fault input.
Definition pwm.h:265
bool b_clear
Boolean of clearing fault flag.
Definition pwm.h:267
Configurations of a PWM channel output.
Definition pwm.h:227
bool b_override_pwml
Boolean of using override output as PWML.
Definition pwm.h:231
pwm_level_t override_level_pwml
Level of override output for PWML.
Definition pwm.h:235
pwm_level_t override_level_pwmh
Level of override output for PWMH.
Definition pwm.h:233
bool b_override_pwmh
Boolean of using override output as PWMH.
Definition pwm.h:229
Structure of PWM write-protect information.
Definition pwm.h:273
uint32_t ul_sw_status
Bitmask of PWM register group for write protect software status.
Definition pwm.h:277
uint32_t ul_offset
Offset address of PWM register in which a write access has been attempted.
Definition pwm.h:279
uint32_t ul_hw_status
Bitmask of PWM register group for write protect hardware status.
Definition pwm.h:275