I want to use the ESP32 series to make a Bluetooth speaker with digital crossover. That entails a 4-channel amplifier. I have my eyes on the TAS6424-Q1 for this, which uses TDM or I2S with two SDIN pins. The ESP32 SoC does not support TDM, only the newer ones do (ESP32-C3 and so on). That is a problem, because coincidentally those newer SoCs do not support Bluetooth Classic, only Bluetooth LE, which is not supported for audio by all devices (namely iPhones).
I am not sure whether having two in-sync and in-phase I2S outputs is possible on the ESP32. That leads me on to my question, would it be possible to emulate 4-slot 16-bit TDM with 32-bit I2S? From what I've gathered, the clock signaling is the same between I2S and TDM, the only difference being how many bits are in a frame. If this is true then I believe it would be possible to simply combine two 16-bit samples into one 32-bit sample, and effectively get TDM. Is this correct?
I am not sure whether having two in-sync and in-phase I2S outputs is possible on the ESP32. That leads me on to my question, would it be possible to emulate 4-slot 16-bit TDM with 32-bit I2S? From what I've gathered, the clock signaling is the same between I2S and TDM, the only difference being how many bits are in a frame. If this is true then I believe it would be possible to simply combine two 16-bit samples into one 32-bit sample, and effectively get TDM. Is this correct?
You can do it with 2 I2S peripherials, I did same thing in my USB-I2S project but it indeed requires two I2S peripherials to start and stop synchronously.
If this is hard to arhieve on ESP32, you can configure one I2S as a master and drives second one, configured as slave.
If this is hard to arhieve on ESP32, you can configure one I2S as a master and drives second one, configured as slave.
yep, bclk and wclk. Or maybe you can make them start simultaniously.So I should feed the clock output from the ESP back into a different pin?
Would there be a way to configure the clocking internally or set the slave input pin to the same one that's the master output pin?
I do not think you can do it internally.Would there be a way to configure the clocking internally
Never tried that with ESP32 but it may work.or set the slave input pin to the same one that's the master output pin?