Page 1 of 1

Fixing the I2S driver in ESP8266 RTOS SDK

PostPosted: Sun Mar 19, 2023 9:14 pm
by szabi
The current example code for the I2S peripheral in ESP8266 RTOS SDK doesn't work at all. There's an open issue on GitHub without a fix. The problem is in the driver code.

I was able to squeeze out valid I2S signals of the chip without using the driver, just by direct register manipulation. However, I couldn't get the SLC interrupts working which is exactly the problem with the RTOS driver as well.

Unfortunately I couldn't find any information on how to enable SLC interrupts. The only description out there is a header file (actually two, slc_struct.h and slc_register.h, but they contain the same information in different formats) without any instructions on how to make the interrupts work. The most detailed hardware document I found provides no details either.

Anybody knows how to do this? Can somebody from @espressif comment on this?

Re: Fixing the I2S driver in ESP8266 RTOS SDK

PostPosted: Fri May 05, 2023 4:20 am
by eriksl
Yeah, well, the very well-known documentation and source quality of Espressif :o Don't get me started there.

After long experimentation and reverse engineering I got the I2S module working, on the NON-OS SDK. I tried to avoid as much Espressif code as possible maybe that's why it works ;). Note that many details of I2S are not disclosed so it remains a bit hit-or-miss.

I am not using SLC (DMA) maybe that's where the issue is. The SLC part was documented in such a terrible way, I didn't even want to get started there. The I2S module has fair amount of FIFO memory, maybe that is sufficient for your application?