TDM of 2x2 stereo channels between 2 ADAU1467
We have problems using TDM where one of the ports is slave to another TDM port. Here is the case:
We have to transfer 4 stereo channels using two ports, port 1 and port 3 between two ADAU1467. Sample rate is 192k and we use 4 channel transfer. Furthermore, we must use the clock domain of OUT1 on DSP1, i.e. OUT3 on DSP1 must be slave to OUT1. The OUT1 clock domain is DSP1's clock generator. We can successfully transfer data over OUT1 but not OUT3, it does not transfer any data. We can make OUT3 to work by setting it as master. However, port3 is supposed to provide another external clock domain so we might end up with two different domains on the port3 - bad. On DSP2, IN1 and IN3 are both configured as 4 channel slaves to IN1. Interestingly, we do not have to set IN3 as slave to OUT3 to make it work.
I maybe have missed something in the data sheet, but I can't find that TDM out only works for master ports.
(We tried the same thing using port 0 and port 1, still port 1 supposed to provide the clock domain, with exactly the same result as above. Also in that case port 0 is supposed to provide an external clock domain.)
Thank's in advance,
Alex.
Edit Notes
updated subject field
[edited by: Alexander at 8:04 AM (GMT 0) on 15 Jul 2020]
Audio Signal Processors
adau1467
SigmaDSP Audio Processors
tdm
Hello Alex,
This is a simple issue. Since OUT1 is using the internal clocks, the internal buss for slaving from one port to another has no data. This is because there is no point to do this. Set OUT3 to the same internal clock. The designers did not see the reason to put out clocks on the internal bus when set as a master. The only time you need to do this is if it is a slave, then you can share this slave clock with other serial ports.
The bus I am talking about is the internal connections between the four serial output ports. There are also busses for the serial input ports but they are only for the serial input ports.
I want to make sure I am clear. If Port 0 is set as a master it is using the internal clocks. So set port 3 to be a master and it will be using the same clock as port 0 and so they will be in sync exactly. Of course you need to set it to the same internal clock. Fs or FsX2 etc...
Dave T
Please log in to reply.