From c78c8f6faf51eb5fa66dd2ca94439b40ad1047b0 Mon Sep 17 00:00:00 2001 From: Weixiao Zhang Date: Tue, 20 Nov 2018 21:41:45 -0600 Subject: [PATCH] i2s: Fix 2 issues. 1. WS = 0, Left Channel; WS = 1, Right Channel 2. Data start and end at falling edge of SCK --- decoders/i2s/pd.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/decoders/i2s/pd.py b/decoders/i2s/pd.py index bfb2c9e..e32fe6f 100644 --- a/decoders/i2s/pd.py +++ b/decoders/i2s/pd.py @@ -145,10 +145,12 @@ class Decoder(srd.Decoder): self.samplesreceived += 1 - idx = 0 if self.oldws else 1 - c1 = 'Left channel' if self.oldws else 'Right channel' - c2 = 'Left' if self.oldws else 'Right' - c3 = 'L' if self.oldws else 'R' + sck = self.wait({0: 'f'}) + + idx = 0 if not self.oldws else 1 + c1 = 'Left channel' if not self.oldws else 'Right channel' + c2 = 'Left' if not self.oldws else 'Right' + c3 = 'L' if not self.oldws else 'R' v = '%08x' % self.data self.putpb(['DATA', [c3, self.data]]) self.putb([idx, ['%s: %s' % (c1, v), '%s: %s' % (c2, v), @@ -161,6 +163,8 @@ class Decoder(srd.Decoder): 'word' % (self.bitcount, self.wordlength)]]) self.wordlength = self.bitcount + else: + sck = self.wait({0: 'f'}) # Reset decoder state. self.data = 0 -- 2.30.2