#include <ESP32_FastPWM.h>
#define SCLK 16 // pin 16 for high speed clock
#define WS 5 // pin 5 for WS
#define BITS 2
#define PWM 50.0f // 0= 25% 1 = 50% 2= 75%
#define SCLK_FREQ 1411200.0f
#define WS_FREQ 44100.0f
#define LEDC_TIMER1_RST ((1<<23))
ESP32_FAST_PWM* SCLK_PWM_Instance;
ESP32_FAST_PWM* WS_PWM_Instance;
unsigned long *reg = (unsigned long *)0x000000a8;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32-S2!");
pinMode(SCLK, OUTPUT);
pinMode(WS, OUTPUT);
SCLK_PWM_Instance = new ESP32_FAST_PWM(SCLK, SCLK_FREQ,PWM, 0, BITS);
WS_PWM_Instance = new ESP32_FAST_PWM(WS, WS_FREQ,PWM, 2, BITS);
if (SCLK_PWM_Instance)
{
SCLK_PWM_Instance->setPWM();
WS_PWM_Instance->setPWM();
}
delay(100); // wait a little until the clocks for PWM are running correctly
unsigned int counter=0;
while (digitalRead(SCLK)==false)
{} // wait until it's false, then while it's true, wait until false, and we've found the falling edge
while (digitalRead(SCLK)==true)
{ ++counter;}
*reg = ((*reg & (1<<23))|(0<<22));
Serial.print("Clock cycles for low:");
Serial.println(counter);
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
}
Loading
esp32-s2-devkitm-1
esp32-s2-devkitm-1