diff --git a/libraries/I2S/src/pio_i2s.pio b/libraries/I2S/src/pio_i2s.pio index 472571442..18ddd97fe 100644 --- a/libraries/I2S/src/pio_i2s.pio +++ b/libraries/I2S/src/pio_i2s.pio @@ -295,8 +295,8 @@ static inline void pio_i2s_in_program_init(PIO pio, uint sm, uint offset, uint d pio_sm_exec(pio, sm, pio_encode_set(pio_y, bits - 2)); - // Offset the data by 1 bit - pio_sm_exec(pio, sm, pio_encode_in(pio_pins, bits - 1)); + pio_sm_exec(pio, sm, pio_encode_in(pio_pins, bits)); // Shift in 1st L data + pio_sm_exec(pio, sm, pio_encode_in(pio_pins, bits - 1)); // Shift in 1st R data modulo one bit, avoiding bit shift from #2037 } %} diff --git a/libraries/I2S/src/pio_i2s.pio.h b/libraries/I2S/src/pio_i2s.pio.h index d7bfbca55..8f30d83ab 100644 --- a/libraries/I2S/src/pio_i2s.pio.h +++ b/libraries/I2S/src/pio_i2s.pio.h @@ -378,8 +378,8 @@ static inline void pio_i2s_in_program_init(PIO pio, uint sm, uint offset, uint d pio_sm_set_pindirs_with_mask(pio, sm, pin_mask, pin_mask); pio_sm_set_pins(pio, sm, 0); // clear pins pio_sm_exec(pio, sm, pio_encode_set(pio_y, bits - 2)); - // Offset the data by 1 bit - pio_sm_exec(pio, sm, pio_encode_in(pio_pins, bits - 1)); + pio_sm_exec(pio, sm, pio_encode_in(pio_pins, bits)); // Shift in 1st L data + pio_sm_exec(pio, sm, pio_encode_in(pio_pins, bits - 1)); // Shift in 1st R data modulo one bit, avoiding bit shift from #2037 } #endif