I'm having difficulties configuring the TDM mode on my ADAU1702, and I'm running out of ideas. I am trying to configure the TDM in to send 2 samples to the 4 DACs and despite my best efforts it's still not working.
- I tried routing the input block of sigmaDSP to the dac (as attached), but with the ADAU1702, the input bock only show analog input (As opposed to the ADAU1701 where the input offers 2 analog input and 8 serial in) and that configuration doesn't seem to make sense in regards of the documentation that states that in TDM mode, slots 0 to to 3 are the first half of the audio frame and slots 4 to 7 are the second half.
- My master is sending a 2 samples over 4 channels every 20us or so (attached), with a pulse as LRCLK delauyed by one BCLK.
If some could let me know what I'm missing here that would be greatly appreciated.
You do not have the multifunction pins set to be the serial port. So the serial port is getting nothing.
Try these settings.
Also, SigmaStudio offers an excellent window into what is going on in the DSP. Use it.
Do something like this. Then you can see the level and which channels are active.
The part you quoted about the slots is an older format that everyone has moved away from now but this part was designed a long time ago. What initially was done with TDM is put all the left channels when the clock was low and right channels when the clock was high. In this part when you are in TDM mode I think it sends slot 1 to input 1. But you will see it if you meter all the inputs.
Thank you for your help, that fixed my problem. Funny thing is that I had set the input of MP pins correctly the first time when I tried to get the codec working only from the registers.
Since I'm programming the chip via I2C from a microcontroler I can't test the level detection boxes from SigmaStudio..
Thanks again for your help!
What I always recommend in any design is to design into the hardware a way to directly control the SigmaDSP from the USBi interface. It is super helpful for working out the design. It will speed up the development a lot. There is so much you can see and do from SigmaStudio to monitor the DSP to verify that it is indeed doing what you think it is doing. To only work from the controller is running blind and making this much harder for yourself.
Then after it is all done you can translate the program into your controller knowing that the program will function and any issues are the implementation with the uC.
Since you are using I2C this is not too difficult to do. You can make a small adaptor cable to tie into the I2C lines and ground. So only three wires but I would personally use a ribbon that has five wires to alternate between three grounds. Ground, CLK, GND, SDA, GND. Keep the wire short.
Then you have to program your uC to release the bus and to not try to communicate with anything on the bus while you use the USBi. You can use the 5V from the USBi to signal the uC that it is hooked up and have your program stop using the I2C when it is connected. You could also add a 6th wire to pull a GPIO down on your uC. You get the point,... many ways to do it and allow you to use SigmaStudio.
I love using the TagConnect cables for this use. They don't cost anything except a bit of PCB space and you can do a custom wire or just use the 10-pin one to a 10-pin male. Then if a unit ever develops an issue in the field you can easily look into the DSP to gather information about the failure. Something to think about.