How to output 2.048MHz clock on any pin on the ESP32
You can use the LEDC timer (typically used for PWM) to output a 50% duty cycle clock with 3.3V P-P amplitude on any output-capable GPIO pin.
First,
#include <driver/ledc.h>
then setup the timer. You only need to do this once on startup, no code in your loop function is required.
/**
* Setup 2.048MHz clock output on GPIO33
*/
ledc_timer_config_t ledc_timer = {
.speed_mode = LEDC_HIGH_SPEED_MODE,
.bit_num = LEDC_TIMER_2_BIT,
.timer_num = LEDC_TIMER_0,
.freq_hz = 2048000
};
ledc_channel_config_t ledc_channel = {
.gpio_num = GPIO_NUM_33,
.speed_mode = LEDC_HIGH_SPEED_MODE,
.channel = LEDC_CHANNEL_0,
.timer_sel = LEDC_TIMER_0,
.duty = 2
};
ledc_timer_config(&ledc_timer);
ledc_channel_config(&ledc_channel);