cesp32pwm

ESP32 pulsed PWM at low frequencies


The problem is that I'm expecting a low frequency (1.25khz) continuous square wave when writing to the PWM output of the ESP32 and what I get is regular/irregular pulsed PWM triangle wave with a 125hz pulse rate (enough for the human eye to see it as flickering.)

Is there any way around this?

I've tried the config below for it:

ledc_timer_config_t ledc_timer_D = {
    .duty_resolution = LEDC_TIMER_15_BIT,
    .freq_hz = 1250,                     
    .speed_mode = LEDC_HS_MODE,          
    .timer_num = LEDC_HS_TIMER_2,          
    .clk_cfg = LEDC_USE_APB_CLK,              
};

The output:

1250Hz signal from ESP32-mini-1

I've tried this with the low speed as well and got the same issue, if not an issue when compiling through VS Code IDE.


Solution

  • From the drawing you show in the graph, it seems you are not using a good sampling device and you are sampling at a low rate too. The poligonal shaped traces of the signal indicate that probably you are sampling at the same frequency of the pwm signal or even lower. I should recommend you to oversample (let's say 16 times faster) to see properly shaped square pulses.