@@ -116,8 +116,9 @@ static ledc_timer_config_t timers[PWM_TIMER_MAX];
116
116
// Clock alias values (used by clock parameter)
117
117
// PWM_LAST_CLK_IDX is not clock by a maker to identify outofindex values
118
118
// PWM_AUTO_CLK is used in order to auto determinate the clock (no specific clock has been required)
119
- enum { PWM_APB_CLK , PWM_RC_FAST_CLK , PWM_REF_TICK , PWM_XTAL_CLK , PWM_AUTO_CLK , _PWM_LAST_CLK_IDX };
119
+ enum { PWM_AUTO_CLK , PWM_APB_CLK , PWM_RC_FAST_CLK , PWM_REF_TICK , PWM_XTAL_CLK , PWM_PLL_CLK , _PWM_LAST_CLK_IDX };
120
120
static const ledc_clk_cfg_t clk_source_map [] = {
121
+ -2 ,
121
122
LEDC_USE_APB_CLK ,
122
123
LEDC_USE_RC_FAST_CLK , // LEDC_USE_RC_FAST_CLK == LEDC_USE_RTC8M_CLK
123
124
#if SOC_LEDC_SUPPORT_REF_TICK
@@ -126,9 +127,14 @@ static const ledc_clk_cfg_t clk_source_map[] = {
126
127
-1 ,
127
128
#endif
128
129
#if SOC_LEDC_SUPPORT_XTAL_CLOCK
129
- LEDC_USE_XTAL_CLK
130
+ LEDC_USE_XTAL_CLK ,
130
131
#else
131
- -1
132
+ -1 ,
133
+ #endif
134
+ #if SOC_LEDC_SUPPORT_PLL_DIV_CLOCK
135
+ LEDC_USE_PLL_DIV_CLK ,
136
+ #else
137
+ -1 ,
132
138
#endif
133
139
};
134
140
@@ -489,6 +495,11 @@ static int find_clock_in_use() {
489
495
return PWM_XTAL_CLK ;
490
496
}
491
497
#endif
498
+ #if SOC_LEDC_SUPPORT_PLL_DIV_CLOCK
499
+ else if (found_clk == LEDC_USE_PLL_DIV_CLK ) {
500
+ return PWM_PLL_CLK ;
501
+ }
502
+ #endif
492
503
493
504
return PWM_AUTO_CLK ;
494
505
}
@@ -555,6 +566,11 @@ static void mp_machine_pwm_print(const mp_print_t *print, mp_obj_t self_in, mp_p
555
566
mp_printf (print , ", clock=PWM_REF_TICK(%d)" , PWM_REF_TICK );
556
567
}
557
568
#endif
569
+ #if SOC_LEDC_SUPPORT_PLL_DIV_CLOCK
570
+ else if (clk_src == LEDC_USE_PLL_DIV_CLK ) {
571
+ mp_printf (print , ", clock=PWM_PLL_CLK(%d)" , PWM_PLL_CLK );
572
+ }
573
+ #endif
558
574
else {
559
575
mp_printf (print , ", clock=UNKNOWN" );
560
576
}
@@ -621,16 +637,26 @@ static void mp_machine_pwm_init_helper(machine_pwm_obj_t *self,
621
637
if (pwm_clk != PWM_AUTO_CLK ) {
622
638
DFAF
pwm_src_clock = pwm_clk ;
623
639
} else {
640
+ #if SOC_LEDC_SUPPORT_PLL_DIV_CLOCK
641
+ pwm_src_clock = PWM_PLL_CLK ;
642
+ #endif
643
+ #if SOC_LEDC_SUPPORT_APB_CLOCK
624
644
pwm_src_clock = PWM_APB_CLK ;
645
+ #endif
625
646
}
626
647
#else
627
- pwm_src_clock = PWM_APB_CLK ;
648
+ #if SOC_LEDC_SUPPORT_PLL_DIV_CLOCK
649
+ pwm_src_clock = PWM_PLL_CLK ;
650
+ #endif
651
+ #if SOC_LEDC_SUPPORT_APB_CLOCK
652
+ pwm_src_clock = PWM_APB_CLK ;
653
+ #endif
628
654
629
- #if SOC_LEDC_SUPPORT_REF_TICK
630
- if (freq < EMPIRIC_FREQ ) {
631
- pwm_src_clock = PWM_REF_TICK ; // 1 MHz
632
- }
633
- #endif
655
+ #if SOC_LEDC_SUPPORT_REF_TICK
656
+ if (freq < EMPIRIC_FREQ ) {
657
+ pwm_src_clock = PWM_REF_TICK ; // 1 MHz
658
+ }
659
+ #endif
634
660
#endif
635
661
}
636
662
#if !(PWM_SUPPORT_INDEP_CLOCK_SRC )
0 commit comments