ADAU1452 SDATA_OUT3 SLAVE to CLK DOMAIN 0 does not work


i have a project with an ADAU1452 where SDATA_OUT0 is configured with LRCLK and BCLK as Master. The signal is output on SDATA_OUT0.

SDATA_OUT3 ist configured with LRCLK and BCLK as Slave to CLK domain 0. In this configuration i never get a signal out of SDATA_OUT3.

As i understand the datasheet every output port can be referenced to any clockdomain as slave. This seems to be a very basic task but i don't get it working.

The same behaviour with ADAU1467.

Any idea what i am doing wrong or what i am misunderstanding?

  • I don't have an answer but interested in what the official answer is as I seem to have the opposite situation. I'm using all 4 SD outs in the same clock domain (OUT0) but I never changed the SERIAL_PORT settings to make domains 1-3 slaves of 0, and yet it works where the data is matched to LRCLK0, etc.

    To me what you did sounds like what I should have done.

  • So you have SDATA_OUT0 as Master, and SDATA_OUT3 as Slave

    You will need to set SDATA_OUT3 to Clock Domain 3 so it can use these LCLK and BCLK pins .

    Now If the DSP MCLK is not the same MCLK that is connected to the MASTER device thats Attached to SDATA_OUT3 , then you will need to use a sample rate converter block.


  • Sorry My reply was for Beni

    Brewster, your question is really determined to how you have wired all the slaves

    I assume all 4 ports are slaves?. if all 4 Master devices are again Clocked from the SAME MCLK then you can choose any of the 4 clock domains (provided all 4 masters  LRCLK /  BCLK are in sync)

    If you set the StartPulse to the "Serial out rate 0" then the DSP is clock at the same rate and you wont need SRC


  • +1
    •  Analog Employees 
    on Jul 30, 2021 4:00 PM

    Hello all,

    The answer is very simple. The pin pads internally have clock inputs from the internal clocks. Then there are four buss to go between the four serial output ports ( and the same thing for the four serial input ports but they are not connected) So the pads can output a clock out onto one of these buss or take the signal from one of the buss as an input. 

    When a pin is set to be a slave, it will take the external clock coming in and send it out on the buss so the other clock pins can pick it up. 

    Well, the designers designed the pin pad such that when it is set to be a master, it takes the internal clock and sends it out of the pin but NOT out onto the buss for other pins to pick up. The reason for this is that if you want the other pins to be running off of the same clock then just set those pins to be a master. There is no reason to take the clock from the buss when it will be subject to a little delay through the extra circuits that drive the buss. The other pins have direct access to the same internal clock. 

    So in this example, you must set the serial ports 1-3 as masters. You still can use the LRCLK pins for ports 1-3 as MP pins and the serial ports will still work. 

    Brett, you are correct in that if you slave off of an external clock you can set the DSP start pulse to be one of the serial input ports or one of the serial output ports. Then if you have the serial input and output ports slave to this external clock, then you do not have to use the ASRC and they also do not even have to be on the same master clock. Just make sure the clocks never go away because if you do the DSP program stops in its tracks until it sees another start pulse.

    If they are on the same master clock then you could have the start pulse running on an internal clock and the clock jitter circuits will align up and clock edge differences and it will run fine. Because they are all on the same master clock. 

    I hope this helps.

    Dave T

  • Hi Dave,

    Yes it seems to be as you explained. But when you set an output pin as master the corresponding LRCLK and BCLK are also set as master.

    In my case i want to output signal on SDATA_OUT3 with the internal dsp clock but unfortunatly i have connected an asynchronous clock to the LRCLK3 and BCLK3. So SDATA_OUT3 as master does not work and SDATA_OUT3 set as slave does not work either. Ok i can fix this in hardware for the next version but i expected that it could be solved in software.

    I would welcome any ideas to solve this problem.

    Thank you for taking the time to look into this problem Dave.