I2S output does not look right
mroavi opened this issue · 6 comments
Hi Charles. I compiled the project with no changes and flashed it to my board. I used the 'top' application to send packets to the module but none of the LEDs flashed. I used a logic analyzer to see the signal coming out of the U0RXD_U/I2S0_DATA pin. This is before sending running 'top':
Any idea what the problem is?
I noticed that you commented out the line that maps the I2SO_BCK to GPIO15:
// PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, FUNC_I2SO_BCK);
In order to check if the clock was working fine I included it back. This is how the clock looks like:
which actually looks fine to me.
The funny thing is that after doing this change (mapping the clock to GPIO15), the signal coming out U0RXD_U/I2S0_DATA also changed:
Unfortunately, the LEDs are still not flashing.
Any thoughts?
That signal looks pretty awful. Sadly, this is a situation where you might need a scope, but only after checking for things like ground loops, etc. This is some pretty intense ringing on the line!
I think I know what is going on, but I"m not 100% sure. I'm using an Adafruit HUZZAH ESP8266 breakout board. I just read from their webpage that there is a level shifter connected to the RX pin. Could this be why the I2S does not work properly?
Woah, that could totally mess it up. I wish more people used resistors on their output pins... It is possible the level shifter could be driving the esp, very hard and would totally prevent all outbound communications.
I replaced the Adafruit HUZZAH ESP8266 breakout board with a D1 Mini and it worked great. I definitely think that it is the level shifter what is interfering with the proper operation of the I2S. Thanks for your help!
Yeah, level shifters are almost always bad news bears. People need to use resistor dividers much more often, especially if it's not 100% clear if something's an input or an output.