58#ifndef PWM_WPCR_WPKEY_PASSWD
59# define PWM_WPCR_WPKEY_PASSWD 0x50574D00
62#ifndef PWM_WPCR_WPCMD_DISABLE_SW_PROT
63# define PWM_WPCR_WPCMD_DISABLE_SW_PROT (PWM_WPCR_WPCMD(0))
66#ifndef PWM_WPCR_WPCMD_ENABLE_SW_PROT
67# define PWM_WPCR_WPCMD_ENABLE_SW_PROT (PWM_WPCR_WPCMD(1))
70#ifndef PWM_WPCR_WPCMD_ENABLE_HW_PROT
71# define PWM_WPCR_WPCMD_ENABLE_HW_PROT (PWM_WPCR_WPCMD(2))
74#define PWM_CLOCK_DIV_MAX 256
75#define PWM_CLOCK_PRE_MAX 11
90 {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 };
96 ul_div = (ul_mck / ul_divisors[ul_pre]) / ul_frequency;
105 return ul_div | (ul_pre << 8);
125 if (clock_config->
ul_clka != 0) {
135 if (clock_config->
ul_clkb != 0) {
142 clock |= (result << 16);
144#if (SAM3N || SAM4N || SAM4C || SAM4CP || SAM4CM)
145 p_pwm->PWM_MR = clock;
162 uint32_t tmp_reg = 0;
163 uint32_t ch_num = p_channel->
channel;
168#if (SAM3U || SAM3S || SAM3XA || SAM4S || SAM4E || SAMV70 || SAMV71 || SAME70 || SAMS70)
183#if (SAM3U || SAM3S || SAM3XA || SAM4S || SAM4E || SAMV70 || SAMV71 || SAME70 || SAMS70)
207 uint32_t channel = (1 << ch_num);
211 p_pwm->
PWM_SCM &= ~((uint32_t) channel);
215#if (SAM4E || SAMV70 || SAMV71 || SAME70 || SAMS70)
217 p_pwm->PWM_FPV2 |= (0x01 << ch_num);
219 p_pwm->PWM_FPV2 &= ~(0x01 << ch_num);
221 p_pwm->PWM_FPV1 |= (0x01 << ch_num);
223 p_pwm->PWM_FPV1 &= (~(0x01 << ch_num));
227 p_pwm->PWM_FPV2 |= ((0x01 << ch_num) << 16);
229 p_pwm->PWM_FPV2 &= ~((0x01 << ch_num) << 16);
231 p_pwm->PWM_FPV1 |= ((0x01 << ch_num) << 16);
233 p_pwm->PWM_FPV1 &= (~((0x01 << ch_num) << 16));
238 p_pwm->
PWM_FPV |= (0x01 << ch_num);
240 p_pwm->
PWM_FPV &= (~(0x01 << ch_num));
243 p_pwm->
PWM_FPV |= ((0x01 << ch_num) << 16);
245 p_pwm->
PWM_FPV &= (~((0x01 << ch_num) << 16));
249 uint32_t fault_enable_reg = 0;
253 fault_enable_reg = p_pwm->PWM_FPE1;
254 fault_enable_reg &= ~(0xFF << ch_num);
255 fault_enable_reg |= ((p_channel->
fault_id) << ch_num);
256 p_pwm->PWM_FPE1 = fault_enable_reg;
260 fault_enable_reg = p_pwm->PWM_FPE2;
261 fault_enable_reg &= ~(0xFF << ch_num);
262 fault_enable_reg |= ((p_channel->
fault_id) << ch_num);
263 p_pwm->PWM_FPE2 = fault_enable_reg;
267#if (SAM3U || SAM3S || SAM4S || SAM4E || SAMV70 || SAMV71 || SAME70 || SAMS70)
269 fault_enable_reg = p_pwm->
PWM_FPE;
270 fault_enable_reg &= ~(0xFF << ch_num);
271 fault_enable_reg |= ((p_channel->
fault_id) << ch_num);
272 p_pwm->
PWM_FPE = fault_enable_reg;
280 if (p_channel->spread_spectrum_mode ==
281 PWM_SPREAD_SPECTRUM_MODE_RANDOM) {
282 p_pwm->PWM_SSPR = PWM_SSPR_SPRD(p_channel->ul_spread) |
285 p_pwm->PWM_SSPR = PWM_SSPR_SPRD(p_channel->ul_spread);
288#elif (SAMV70 || SAMV71 || SAME70 || SAMS70)
290 if (p_channel->spread_spectrum_mode ==
291 PWM_SPREAD_SPECTRUM_MODE_RANDOM) {
292 p_pwm->PWM_SSPR = PWM_SSPR_SPRD(p_channel->ul_spread) |
295 p_pwm->PWM_SSPR = PWM_SSPR_SPRD(p_channel->ul_spread);
317 uint32_t ch_num = p_channel->
channel;
320 if (p_channel->
ul_duty > ul_period) {
326#if (SAM3N || SAM4N || SAM4C || SAM4CP || SAM4CM)
330 p_pwm->
PWM_CH_NUM[ch_num].PWM_CUPD = ul_period;
351 uint32_t ch_num = p_channel->
channel;
360#if (SAM3N || SAM4N || SAM4C || SAM4CP || SAM4CM)
363 mode &= ~PWM_CMR_CPD;
399 p_pwm->
PWM_ENA = (1 << ul_channel);
412 p_pwm->
PWM_DIS = (1 << ul_channel);
436#if (SAM3N || SAM4N || SAM4C || SAM4CP || SAM4CM)
437 return p_pwm->PWM_ISR;
452#if (SAM3N || SAM4N || SAM4C || SAM4CP || SAM4CM)
453 return p_pwm->PWM_IMR;
470#if (SAM3N || SAM4N || SAM4C || SAM4CP || SAM4CM)
471 p_pwm->PWM_IER = (1 << ul_event);
475 p_pwm->
PWM_IER1 = (1 << ul_event) | (1 << (ul_fault + 16));
491#if (SAM3N || SAM4N || SAM4C || SAM4CP || SAM4CM)
492 p_pwm->PWM_IDR = (1 << ul_event);
496 p_pwm->
PWM_IDR1 = (1 << ul_event) | (1 << (ul_fault + 16));
501#if (SAM3U || SAM3S || SAM3XA || SAM4S || SAM4E || SAMV70 || SAMV71 || SAME70 || SAMS70)
513 uint32_t ch_num = p_channel->
channel;
527 uint32_t override_value = p_pwm->
PWM_OOV;
529 override_value |= (((pwml << 16) | pwmh) << ch_num);
530 p_pwm->
PWM_OOV = override_value;
534 p_pwm->
PWM_OSSUPD = ((override_pwml << ch_num) << 16) |
535 (override_pwmh << ch_num);
536 p_pwm->
PWM_OSCUPD = ((!override_pwml << ch_num) << 16) |
537 (!override_pwmh << ch_num);
539 p_pwm->
PWM_OSS = ((override_pwml << ch_num) << 16) |
540 (override_pwmh << ch_num);
541 p_pwm->
PWM_OSC = ((!override_pwml << ch_num) << 16) |
542 (!override_pwmh << ch_num);
555 uint16_t us_deadtime_pwmh, uint16_t us_deadtime_pwml)
579 uint32_t fault_id = p_fault->
fault_id;
580 uint32_t fault_reg = p_pwm->
PWM_FMR;
584 fault_reg |= fault_id;
586 fault_reg &= ~fault_id;
590 fault_reg |= (fault_id << 8);
592 fault_reg &= ~(fault_id << 8);
596 fault_reg |= (fault_id << 16);
598 fault_reg &= ~(fault_id << 16);
615 return ((p_pwm->
PWM_FSR >> 8) & 0xFF);
628 uint32_t fault_status_reg = p_pwm->
PWM_FSR;
629 fault_status_reg >>= id;
655 uint32_t unit = p_cmp->
unit;
668 p_pwm->
PWM_ELMR[0] &= ~((uint32_t) (1 << unit));
674 p_pwm->
PWM_ELMR[1] &= ~((uint32_t) (1 << unit));
698 uint32_t unit = p_cmp->
unit;
711 p_pwm->
PWM_ELMR[0] &= ~((uint32_t) (1 << unit));
717 p_pwm->
PWM_ELMR[1] &= ~((uint32_t) (1 << unit));
771 p_pwm->
PWM_IER2 = ((1 << ul_sources) << 8);
773 p_pwm->
PWM_IER2 = ((1 << ul_sources) << 16);
791 p_pwm->
PWM_IDR2 = ((1 << ul_sources) << 8);
793 p_pwm->
PWM_IDR2 = ((1 << ul_sources) << 16);
799#if !(SAMV70 || SAMV71 || SAME70 || SAMS70)
810 uint32_t ul_cmp_unit)
812 uint32_t sync_mode = p_pwm->
PWM_SCM;
855 uint32_t ul_update_period)
857 uint32_t sync_mode = p_pwm->
PWM_SCM;
1014#if (SAM3S || SAM3XA || SAM4S || SAM4E || SAMV70 || SAMV71 || SAME70 || SAMS70)
1024 bool b_enable_gray,
bool b_down)
1029 motor |= ((b_enable_gray | (b_down << 16)) << pair);
1047 p_channel->ul_spread = ul_spread;
1050 p_pwm->PWM_SSPUP = PWM_SSPUP_SPRDUP(ul_spread);
1062 bool polarity_inversion_flag,
pwm_level_t polarity_value)
1064 if (polarity_inversion_flag) {
1066 p_pwm->PWM_CH_NUM_0X400[p_channel->
channel].PWM_CMUPD =
1067 PWM_CMUPD_CPOLINVUP;
1070 p_channel->
polarity = polarity_value;
1074 p_pwm->PWM_CH_NUM_0X400[p_channel->
channel].PWM_CMUPD =
1077 p_pwm->PWM_CH_NUM_0X400[p_channel->
channel].PWM_CMUPD = 0;
1081#elif (SAMV70 || SAMV71 || SAME70 || SAMS70)
1093 p_channel->ul_spread = ul_spread;
1096 p_pwm->PWM_SSPUP = PWM_SSPUP_SPRDUP(ul_spread);
1108 uint32_t ul_leading_edge_delay,
1109 pwm_leading_edge_blanking_mode_t leading_edge_blanking_mode)
1112 p_channel->ul_leading_edge_delay = ul_leading_edge_delay;
1113 p_channel->leading_edge_blanking_mode = leading_edge_blanking_mode;
1116 if (p_channel->
channel == 1) {
1117 p_pwm->PWM_LEBR1 = PWM_LEBR1_LEBDELAY(ul_leading_edge_delay) | leading_edge_blanking_mode;
1118 }
else if (p_channel->
channel == 2) {
1119 p_pwm->PWM_LEBR2 = PWM_LEBR2_LEBDELAY(ul_leading_edge_delay) | leading_edge_blanking_mode;
1124#if (SAMV70 || SAMV71 || SAME70 || SAMS70)
1131void pwm_set_dma_duty(
Pwm *p_pwm, uint32_t ul_dma_duty_value)
1133 uint32_t ul_mask = p_pwm->PWM_DMAR & (~PWM_DMAR_DMADUTY_Msk);
1134 p_pwm->PWM_DMAR = ul_mask | PWM_DMAR_DMADUTY(ul_dma_duty_value);
1144void pwm_set_ext_trigger_mode(
Pwm *p_pwm,
pwm_channel_t *p_channel, uint32_t ul_mode)
1146 if (p_channel->
channel == 1) {
1147 p_pwm->PWM_ETRG1 = ul_mode;
1148 }
else if (p_channel->
channel == 2) {
1149 p_pwm->PWM_ETRG2 = ul_mode;
#define PWM_WPSR_WPVSRC_Pos
#define PWM_CMPM_CUPRCNT_Pos
#define PWM_SCUP_UPRCNT(value)
#define PWM_SCM_PTRCS(value)
#define PWM_SCM_PTRM
(PWM_SCM) PDC Transfer Request Mode
#define PWM_CMPM_CUPR(value)
#define PWM_DTUPD_DTLUPD(value)
#define PWM_SCUP_UPR(value)
#define PWM_DT_DTL(value)
#define PWM_OS_OSH0
(PWM_OS) Output Selection for PWMH output of the channel 0
#define PWM_DTUPD_DTHUPD(value)
#define PWM_CMPM_CPR(value)
#define PWM_DT_DTH(value)
#define PWM_SCUPUPD_UPRUPD(value)
#define PWM_SMMR_DOWN0
(PWM_SMMR) DOWN Count
#define PWM_CMPM_CPRCNT_Pos
#define PWM_WPSR_WPVS
(PWM_WPSR) Write Protect Violation Status
#define PWM_CMPV_CV(value)
#define PWM_OOV_OOVL0
(PWM_OOV) Output Override Value for PWML output of the channel 0
#define PWM_CMPM_CTR(value)
#define PWM_CMPM_CPRCNT(value)
#define PWM_WPSR_WPVSRC_Msk
(PWM_WPSR) Write Protect Violation Source
#define PWM_OS_OSL0
(PWM_OS) Output Selection for PWML output of the channel 0
#define PWM_SCUC_UPDULOCK
(PWM_SCUC) Synchronous Channels Update Unlock
#define PWM_CMPM_CEN
(PWM_CMPM) Comparison x Enable
#define PWM_CMPM_CUPRCNT(value)
#define PWM_SCM_UPDM_Msk
(PWM_SCM) Synchronous Channels Update Mode
#define PWM_OOV_OOVH0
(PWM_OOV) Output Override Value for PWMH output of the channel 0
#define PWM_SCM_PTRCS_Msk
(PWM_SCM) PDC Transfer Request Comparison Selection
#define PWM_SMMR_GCEN0
(PWM_SMMR) Gray Count ENable
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.
void pwm_pdc_disable_interrupt(Pwm *p_pwm, uint32_t ul_sources)
Disable the interrupt of PDC transfer.
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.
uint32_t pwm_get_interrupt_status(Pwm *p_pwm)
Get interrupt status of PDC transfer, synchronous channels and comparison.
void pwm_pdc_enable_interrupt(Pwm *p_pwm, uint32_t ul_sources)
Enable the interrupt of PDC transfer.
uint32_t pwm_channel_get_interrupt_status(Pwm *p_pwm)
Get channel counter event and fault protection trigger interrupt status.
uint32_t pwm_init(Pwm *p_pwm, pwm_clock_t *clock_config)
Initialize the PWM source clock (clock A and clock B).
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.
bool pwm_get_protect_status(Pwm *p_pwm, pwm_protect_t *p_protect)
Get PWM write protect status.
void pwm_sync_unlock_update(Pwm *p_pwm)
Unlock the update of synchronous channels.
#define PWM_CLOCK_DIV_MAX
void pwm_disable_protect(Pwm *p_pwm, uint32_t ul_group)
Disable PWM write protect.
uint32_t pwm_sync_get_period_counter(Pwm *p_pwm)
Get the value of the synchronization update period counter.
#define PWM_WPCR_WPKEY_PASSWD
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.
void pwm_cmp_enable_interrupt(Pwm *p_pwm, uint32_t ul_sources, pwm_cmp_interrupt_t type)
Enable the interrupt of comparison.
uint32_t pwm_channel_get_status(Pwm *p_pwm)
Check which PWM channel is enabled.
#define PWM_CLOCK_PRE_MAX
void pwm_fault_clear_status(Pwm *p_pwm, pwm_fault_id_t id)
Clear a fault input.
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.
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.
uint32_t pwm_cmp_change_setting(Pwm *p_pwm, pwm_cmp_t *p_cmp)
Change the setting of PWM comparison.
void pwm_enable_protect(Pwm *p_pwm, uint32_t ul_group, bool b_sw)
Enable PWM write protect.
void pwm_cmp_disable_interrupt(Pwm *p_pwm, uint32_t ul_sources, pwm_cmp_interrupt_t type)
Disable the interrupt of comparison.
void pwm_sync_disable_interrupt(Pwm *p_pwm, uint32_t ul_sources)
Disable the interrupt of synchronous channels.
uint32_t pwm_cmp_init(Pwm *p_pwm, pwm_cmp_t *p_cmp)
Initialize PWM comparison unit.
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.
uint32_t pwm_fault_get_status(Pwm *p_pwm)
Get fault status.
uint32_t pwm_fault_init(Pwm *p_pwm, pwm_fault_t *p_fault)
Initialize the behavior of a fault input.
pwm_level_t pwm_fault_get_input_level(Pwm *p_pwm, pwm_fault_id_t id)
Get the level of a fault input.
#define PWM_WPCR_WPCMD_DISABLE_SW_PROT
uint32_t pwm_channel_get_counter(Pwm *p_pwm, pwm_channel_t *p_channel)
Return channel counter value.
uint32_t pwm_get_interrupt_mask(Pwm *p_pwm)
Get interrupt mask of PDC transfer, synchronous channels and comparison.
void pwm_sync_change_period(Pwm *p_pwm, uint32_t ul_update_period)
Change the wanted time between each update of the synchronous channels.
void pwm_channel_disable(Pwm *p_pwm, uint32_t ul_channel)
Disable the PWM channel.
uint32_t pwm_cmp_get_update_counter(Pwm *p_pwm, uint32_t ul_cmp_unit)
Report the value of the comparison update period counter.
#define PWM_WPCR_WPCMD_ENABLE_HW_PROT
uint32_t pwm_channel_get_interrupt_mask(Pwm *p_pwm)
Get channel counter event and fault protection trigger interrupt mask.
#define PWM_WPCR_WPCMD_ENABLE_SW_PROT
uint32_t pwm_cmp_get_period_counter(Pwm *p_pwm, uint32_t ul_cmp_unit)
Report the value of the comparison period counter.
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.
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.
void pwm_sync_enable_interrupt(Pwm *p_pwm, uint32_t ul_sources)
Enable the interrupt of synchronous channel.
static uint32_t pwm_clocks_generate(uint32_t ul_frequency, uint32_t ul_mck)
Find a prescaler/divisor couple to generate the desired ul_frequency from ul_mck.
uint32_t pwm_channel_init(Pwm *p_pwm, pwm_channel_t *p_channel)
Initialize one PWM channel.
void pwm_channel_enable(Pwm *p_pwm, uint32_t ul_channel)
Enable the PWM channel.
Pulse Width Modulation (PWM) driver for SAM.
pwm_level_t
Definitions for PWM level.
pwm_sync_update_mode_t
Definitions for PWM synchronous channels update mode.
pwm_pdc_request_mode_t
Definitions for PWM PDC transfer request mode.
pwm_cmp_interrupt_t
Definitions for PWM comparison interrupt.
#define PWM_INVALID_ARGUMENT
pwm_fault_id_t
Definitions for PWM fault input ID.
pwm_stepper_motor_pair_t
Definitions for PWM channels used by motor stepper.
__O uint32_t PWM_DTUPD
(PwmCh_num Offset: 0x1C) PWM Channel Dead Time Update Register
__O uint32_t PWM_CPRDUPD
(PwmCh_num Offset: 0x10) PWM Channel Period Update Register
__I uint32_t PWM_CCNT
(PwmCh_num Offset: 0x14) PWM Channel Counter Register
__IO uint32_t PWM_CMR
(PwmCh_num Offset: 0x0) PWM Channel Mode Register
__O uint32_t PWM_CDTYUPD
(PwmCh_num Offset: 0x8) PWM Channel Duty Cycle Update Register
__IO uint32_t PWM_CPRD
(PwmCh_num Offset: 0xC) PWM Channel Period Register
__IO uint32_t PWM_CDTY
(PwmCh_num Offset: 0x4) PWM Channel Duty Cycle Register
__IO uint32_t PWM_DT
(PwmCh_num Offset: 0x18) PWM Channel Dead Time Register
__IO uint32_t PWM_CMPM
(PwmCmp Offset: 0x8) PWM Comparison 0 Mode Register
__IO uint32_t PWM_CMPV
(PwmCmp Offset: 0x0) PWM Comparison 0 Value Register
__O uint32_t PWM_CMPMUPD
(PwmCmp Offset: 0xC) PWM Comparison 0 Mode Update Register
__O uint32_t PWM_CMPVUPD
(PwmCmp Offset: 0x4) PWM Comparison 0 Value Update Register
__IO uint32_t PWM_FMR
(Pwm Offset: 0x5C) PWM Fault Mode Register
__I uint32_t PWM_IMR1
(Pwm Offset: 0x18) PWM Interrupt Mask Register 1
__I uint32_t PWM_IMR2
(Pwm Offset: 0x3C) PWM Interrupt Mask Register 2
__O uint32_t PWM_OSCUPD
(Pwm Offset: 0x58) PWM Output Selection Clear Update Register
__O uint32_t PWM_WPCR
(Pwm Offset: 0xE4) PWM Write Protection Control Register
__IO uint32_t PWM_SCM
(Pwm Offset: 0x20) PWM Sync Channels Mode Register
__I uint32_t PWM_FSR
(Pwm Offset: 0x60) PWM Fault Status Register
__IO uint32_t PWM_SCUC
(Pwm Offset: 0x28) PWM Sync Channels Update Control Register
__IO uint32_t PWM_ELMR[2]
(Pwm Offset: 0x7C) PWM Event Line 0 Mode Register
__O uint32_t PWM_IDR2
(Pwm Offset: 0x38) PWM Interrupt Disable Register 2
__I uint32_t PWM_SR
(Pwm Offset: 0x0C) PWM Status Register
__O uint32_t PWM_OSSUPD
(Pwm Offset: 0x54) PWM Output Selection Set Update Register
__O uint32_t PWM_SCUPUPD
(Pwm Offset: 0x30) PWM Sync Channels Update Period Update Register
__I uint32_t PWM_ISR2
(Pwm Offset: 0x40) PWM Interrupt Status Register 2
__IO uint32_t PWM_FPE
(Pwm Offset: 0x6C) PWM Fault Protection Enable Register
__O uint32_t PWM_IER1
(Pwm Offset: 0x10) PWM Interrupt Enable Register 1
__O uint32_t PWM_IER2
(Pwm Offset: 0x34) PWM Interrupt Enable Register 2
__O uint32_t PWM_DIS
(Pwm Offset: 0x08) PWM Disable Register
__O uint32_t PWM_OSS
(Pwm Offset: 0x4C) PWM Output Selection Set Register
__IO uint32_t PWM_OOV
(Pwm Offset: 0x44) PWM Output Override Value Register
__I uint32_t PWM_WPSR
(Pwm Offset: 0xE8) PWM Write Protection Status Register
PwmCh_num PWM_CH_NUM[PWMCH_NUM_NUMBER]
(Pwm Offset: 0x200) ch_num = 0 .
__O uint32_t PWM_FCR
(Pwm Offset: 0x64) PWM Fault Clear Register
__I uint32_t PWM_ISR1
(Pwm Offset: 0x1C) PWM Interrupt Status Register 1
__O uint32_t PWM_IDR1
(Pwm Offset: 0x14) PWM Interrupt Disable Register 1
PwmCmp PWM_CMP[PWMCMP_NUMBER]
(Pwm Offset: 0x130) 0 .
__IO uint32_t PWM_SMMR
(Pwm Offset: 0xB0) PWM Stepper Motor Mode Register
__IO uint32_t PWM_OS
(Pwm Offset: 0x48) PWM Output Selection Register
__IO uint32_t PWM_CLK
(Pwm Offset: 0x00) PWM Clock Register
__IO uint32_t PWM_SCUP
(Pwm Offset: 0x2C) PWM Sync Channels Update Period Register
__O uint32_t PWM_ENA
(Pwm Offset: 0x04) PWM Enable Register
__IO uint32_t PWM_FPV
(Pwm Offset: 0x68) PWM Fault Protection Value Register
__O uint32_t PWM_OSC
(Pwm Offset: 0x50) PWM Output Selection Clear Register
Input parameters when configuring a PWM channel mode.
pwm_align_t alignment
Channel alignment.
pwm_fault_id_t fault_id
Fault ID of the channel.
bool b_pwml_output_inverted
Boolean of channel dead-time PWML output inverted.
bool b_pwmh_output_inverted
Boolean of channel dead-time PWMH output inverted.
bool b_deadtime_generator
Boolean of channel dead-time generator.
pwm_level_t ul_fault_output_pwml
Channel PWML output level in fault protection.
bool b_sync_ch
Boolean of Synchronous Channel.
uint16_t us_deadtime_pwml
Dead-time Value for PWML Output.
pwm_level_t polarity
Channel initial polarity.
uint32_t ul_period
Period Cycle Value.
uint32_t ul_prescaler
Channel prescaler.
pwm_output_t output_selection
Channel output.
uint32_t channel
Channel number.
pwm_counter_event_t counter_event
Channel counter event.
pwm_level_t ul_fault_output_pwmh
Channel PWMH output level in fault protection.
uint16_t us_deadtime_pwmh
Dead-time Value for PWMH Output.
uint32_t ul_duty
Duty Cycle Value.
Input parameters when initializing PWM.
uint32_t ul_clkb
Frequency of clock B in Hz (set 0 to turn it off).
uint32_t ul_mck
Frequency of master clock in Hz.
uint32_t ul_clka
Frequency of clock A in Hz (set 0 to turn it off).
Configurations of PWM comparison.
bool b_enable
Boolean of comparison enable.
uint32_t ul_value
Comparison value.
uint32_t ul_period
Comparison period value.
uint32_t ul_trigger
Comparison trigger value.
bool b_is_decrementing
Comparison mode.
uint32_t ul_update_period
Comparison update period value.
uint32_t unit
Comparison unit number.
bool b_pulse_on_line_0
Boolean of generating a match pulse on PWM event line 0.
bool b_pulse_on_line_1
Boolean of generating a match pulse on PWM event line 1.
Configuration of PWM fault input behaviors.
bool b_filtered
Boolean of fault filtering.
pwm_fault_id_t fault_id
Fault ID.
pwm_level_t polarity
Polarity of fault input.
bool b_clear
Boolean of clearing fault flag.
Configurations of a PWM channel output.
bool b_override_pwml
Boolean of using override output as PWML.
pwm_level_t override_level_pwml
Level of override output for PWML.
pwm_level_t override_level_pwmh
Level of override output for PWMH.
bool b_override_pwmh
Boolean of using override output as PWMH.
Structure of PWM write-protect information.
uint32_t ul_sw_status
Bitmask of PWM register group for write protect software status.
uint32_t ul_offset
Offset address of PWM register in which a write access has been attempted.
uint32_t ul_hw_status
Bitmask of PWM register group for write protect hardware status.