From 6ac2978ecefec27b9daa4207c39c26c8797c2062 Mon Sep 17 00:00:00 2001 From: JimMacA <141042316+JimMacA@users.noreply.github.com> Date: Fri, 8 Nov 2024 11:32:31 -0500 Subject: [PATCH 1/4] Update pio_i2s.pio Fixing Issue 2584 bug: in input mode, LRCK needs to change on falling edge of BCK --- libraries/I2S/src/pio_i2s.pio | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/I2S/src/pio_i2s.pio b/libraries/I2S/src/pio_i2s.pio index 328c745ed..933ba2eb6 100644 --- a/libraries/I2S/src/pio_i2s.pio +++ b/libraries/I2S/src/pio_i2s.pio @@ -162,13 +162,13 @@ right1: left1: in pins, 1 side 0b01 jmp x--, left1 side 0b00 - in pins, 1 side 0b11 ; Last bit of left has WCLK change per I2S spec - + in pins, 1 side 0b01 ; 2584 LRCK stays low until BCLK goes low + ; Last bit of left has WCLK change per I2S spec mov x, y side 0b10 right1: in pins, 1 side 0b11 jmp x--, right1 side 0b10 - in pins, 1 side 0b01 ; Last bit of right also has WCLK change + in pins, 1 side 0b11 ; 2584 LRCK stays high until BCLK goes low ; Loop back to beginning... From 3f243f4bced1506cf7ba0aa04884261ccf5ed9a8 Mon Sep 17 00:00:00 2001 From: JimMacA <141042316+JimMacA@users.noreply.github.com> Date: Fri, 8 Nov 2024 11:35:35 -0500 Subject: [PATCH 2/4] Update pio_i2s.pio.h Fixes Issue 2584: I2S input, LRCK should change on falling edge of BCK --- libraries/I2S/src/pio_i2s.pio.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/I2S/src/pio_i2s.pio.h b/libraries/I2S/src/pio_i2s.pio.h index ebcbfe3f3..7f7d1433a 100644 --- a/libraries/I2S/src/pio_i2s.pio.h +++ b/libraries/I2S/src/pio_i2s.pio.h @@ -286,11 +286,11 @@ static const uint16_t pio_i2s_in_program_instructions[] = { 0xa022, // 0: mov x, y side 0 0x4801, // 1: in pins, 1 side 1 0x0041, // 2: jmp x--, 1 side 0 - 0x5801, // 3: in pins, 1 side 3 + 0x4801, // 3: in pins, 1 side 3 0xb022, // 4: mov x, y side 2 0x5801, // 5: in pins, 1 side 3 0x1045, // 6: jmp x--, 5 side 2 - 0x4801, // 7: in pins, 1 side 1 + 0x5801, // 7: in pins, 1 side 1 // .wrap }; From e8a2d46fa5e7be3ddca036de38d16a3af0274f39 Mon Sep 17 00:00:00 2001 From: JimMacA <141042316+JimMacA@users.noreply.github.com> Date: Sat, 9 Nov 2024 15:02:33 -0500 Subject: [PATCH 3/4] Update pio_i2s.pio Issue 2584, extended LRCK for swapped clock input version --- libraries/I2S/src/pio_i2s.pio | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/I2S/src/pio_i2s.pio b/libraries/I2S/src/pio_i2s.pio index 933ba2eb6..4c5f5ad45 100644 --- a/libraries/I2S/src/pio_i2s.pio +++ b/libraries/I2S/src/pio_i2s.pio @@ -184,13 +184,13 @@ right1: left1: in pins, 1 side 0b10 jmp x--, left1 side 0b00 - in pins, 1 side 0b11 ; Last bit of left has WCLK change per I2S spec + in pins, 1 side 0b10 ;2584 LRCK stays low until BCLK goes low mov x, y side 0b01 right1: in pins, 1 side 0b11 jmp x--, right1 side 0b01 - in pins, 1 side 0b10 ; Last bit of right also has WCLK change + in pins, 1 side 0b11 ; 2584 LRCK stays high until BCLK goes low ; Loop back to beginning... From e9e34149afab46e0a3b046b58bd195da93cbbae5 Mon Sep 17 00:00:00 2001 From: JimMacA <141042316+JimMacA@users.noreply.github.com> Date: Sat, 9 Nov 2024 15:13:58 -0500 Subject: [PATCH 4/4] Update pio_i2s.pio.h Delayed LRCK for swapped I2S in --- libraries/I2S/src/pio_i2s.pio.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/I2S/src/pio_i2s.pio.h b/libraries/I2S/src/pio_i2s.pio.h index 7f7d1433a..9e4372ebd 100644 --- a/libraries/I2S/src/pio_i2s.pio.h +++ b/libraries/I2S/src/pio_i2s.pio.h @@ -286,11 +286,11 @@ static const uint16_t pio_i2s_in_program_instructions[] = { 0xa022, // 0: mov x, y side 0 0x4801, // 1: in pins, 1 side 1 0x0041, // 2: jmp x--, 1 side 0 - 0x4801, // 3: in pins, 1 side 3 + 0x4801, // 3: in pins, 1 side 1 0xb022, // 4: mov x, y side 2 0x5801, // 5: in pins, 1 side 3 0x1045, // 6: jmp x--, 5 side 2 - 0x5801, // 7: in pins, 1 side 1 + 0x5801, // 7: in pins, 1 side 3 // .wrap }; @@ -326,11 +326,11 @@ static const uint16_t pio_i2s_in_swap_program_instructions[] = { 0xa022, // 0: mov x, y side 0 0x5001, // 1: in pins, 1 side 2 0x0041, // 2: jmp x--, 1 side 0 - 0x5801, // 3: in pins, 1 side 3 + 0x5001, // 3: in pins, 1 side 2 0xa822, // 4: mov x, y side 1 0x5801, // 5: in pins, 1 side 3 0x0845, // 6: jmp x--, 5 side 1 - 0x5001, // 7: in pins, 1 side 2 + 0x5801, // 7: in pins, 1 side 3 // .wrap };