TDM512

jbax

Member
Hello,

I've seen that the TDM objects in the audio library handle 16 channels at 16bit, so 256 bits TDM (TMD256).
I would like to have 16x32bit channels(all outputs or all inputs) on 1 TDM object, so 512bits TDM (TDM512).
Is it possible to make it work in TDM512 ? If not what are the limitations ?
I would be using 2x 8 channels adcs (or 2x 8 channel dacs) to achieve that, daisy chained for TDM512.

Another possibility would be to use 2 serial data pins, I've seen that the i2s1 port can support up to 4 serial data pins in i2s mode.
Could that be doable in TDM mode ? Having 2 pins as inputs (or 2 outputs), each doing TDM256, so we get 16 32bit channels total.
In this case the codecs would not be daisy chained put used in parallel.
If not possible why would be the limitations?

The question remains the same for either 16 32 bits inputs, or 16 32bit outputs, on one TDM object.
Ideally by supporting TDM512, we could do both (16in, 16 out, all 32bit) on one single teensy, using both TDM ports.
By using 2 serial data pins on the first TDM port, that would not be feasible.

Thanks
 
First to answer your "Is it possible" regarding 512 bit data frame, yes, at least in theory from reading the reference manual and datasheet specs. But as a practical matter, editing the audio library code to accomplish this requires understanding the low-level registers of the SAI ports and the DMA controller's transfer descriptors. If you don't already know this, it's a pretty steep learning curve.

Regarding use of 2 data pins on the first port, I'm going to answer "probably". I believe it should be possible, but I'm less certain of this answer. This learning curve is even steeper because NXP's documentation about the use of multiple pins is so thin.

Now having tried to answer, I have one question for you. Do you have a specific device in mind that would be connected to Teensy to communicate this way? I'm asking because as a practical matter, the only reason we have TDM today with 256 bit frame is because the CS42448 hardware existed for testing. Without hardware that communicates 512 bits, hard to imagine a path to success.
 
Thanks a lot for your answer !

I guessed that would be kinda difficult but still wanted to try asking.

FYI, the CS42448 will stop being sold from september 2024 with no replacement (see https://www.cirrus.com/products/cs42448/ and https://www.cirrus.com/products/eol/ )

Ahasi Kasei is producing codecs supporting TDM up to 512 bits (daisy chainable so a high number of channels can be obtained by just adding more devices) for instance the ak5538, also the ad1835a from analog devices. A quick google search with "TDM512 codec" and more models pop up.

I guess my best solution is to seek the same number of channel count but downgrading sample bit depth to 16bits.
 
Last edited:
Resurecting this thread because I stumbled upon
If I'm not mistaken that means that I can use 1 AK on each data input pin (feeding the same clock to both codecs) and discard every other channel, keeping only the 16 MSB
A bit overkill as half the bandwith will not be use but that should solve my issue.
If someone could confirm that, at least in theory, I'm not mistaken, that would be great :)
 
Back
Top