Skip to content

Commit ebf12e4

Browse files
author
Louis Beaudoin
committed
invert I2S CLK output to clock out data on rising edge
1 parent cb0f538 commit ebf12e4

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

src/esp32_i2s_parallel.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,13 @@ static void gpio_setup_out(int gpio, int sig) {
128128
gpio_matrix_out(gpio, sig, false, false);
129129
}
130130

131+
static void gpio_setup_out_invert(int gpio, int sig) {
132+
if (gpio==-1) return;
133+
PIN_FUNC_SELECT(GPIO_PIN_MUX_REG[gpio], PIN_FUNC_GPIO);
134+
gpio_set_direction(gpio, GPIO_MODE_DEF_OUTPUT);
135+
gpio_matrix_out(gpio, sig, true, false);
136+
}
137+
131138

132139
static void dma_reset(i2s_dev_t *dev) {
133140
dev->lc_conf.in_rst=1; dev->lc_conf.in_rst=0;
@@ -284,8 +291,9 @@ void i2s_parallel_setup_without_malloc(i2s_dev_t *dev, const i2s_parallel_config
284291
for (int x=0; x<cfg->bits; x++) {
285292
gpio_setup_out(cfg->gpio_bus[x], sig_data_base+x);
286293
}
287-
//ToDo: Clk/WS may need inversion?
288-
gpio_setup_out(cfg->gpio_clk, sig_clk);
294+
295+
// invert CLK output to clock out data on rising edge
296+
gpio_setup_out_invert(cfg->gpio_clk, sig_clk);
289297

290298
//Power on dev
291299
if (dev==&I2S0) {

0 commit comments

Comments
 (0)