Open Bashima opened 3 years ago
I'm also having difficulties to read only left channel. I have adafruit i2s mems microphone breakout and metro M4.
I think I figured out the issue, something about mono messes with the interrupts. The regular I2S lib does not check the interrupts, but this one does on the blocking read. This results in some weird behaviour that I have not been able to figure out. If you remove the checks on I2S->INTFLAG.bit.RXRDY0
from the while loops the blocking reads work perfectly.
~The other thing I had to fix as well was I2S_SERCTRL_SLOTADJ_LEFT was used in the regular lib where as this one is RIGHT, also for mems you need I2S->CLKCTRL[_i2sclock].bit.BITDELAY = I2S_CLKCTRL_BITDELAY_I2S_Val
;~
Scratch that, just the interrupt needs to be adjusted
I was originally having an issue getting good I2S data out to the serial port. The fix @cujomalainey recommended has helped!
Was getting serial data like 1 -10 -45 30 0 0 0 0 0 0 0 54. Couldn't figure out why I couldn't code in skipping the zeros. But commenting out the INTFLAG for RXRDY0 like suggested has worked like a charm.
I am using an Adafruit I2S Mic with M0 Feather Board. Which parameters/flags do I need to change to read MONO channel data? Currently it is reading stereo data.