Post Go back to editing

ADAU1761 no sound


I'm using it on my own board with ADAU1761 and MCU (STM32L476) configured as master. The idea is to play and record 22.05kHz audio. I made a simple schematic in SigmaStudio to check if ADAU1761 is working (see image below). Sine tone is generated and sent to DAC0 and DAC1 but there is no audio on the outputs. Using this presentation I managed to send SigmaStudio exported data via I2C to ADAU1761. LOUTP and LOUTN are connected to external speaker with amplifier (SSM2305), RHP and LHP are connected to headphone jack (I'm not using capless configuration). Clock source is MCLK from MCU, 5.647MHz (~256 x fs). I'm also using serial interface in full-duplex mode (I also tried to send sine tone though DIG0 and DIG1). PLL is set to: X = 1, R = 8 to get >41MHz clock, input master clock freq is 1024 x fs. I'm really confused with PLL and MCLK. I also used USBi to load SigmaStudio data, so I think it's not I2C fault. I attach full project from SigmaStudio.
  • Hello Def,

    The lowest MCLK frequency that the PLL will accept is an 8MHz MCLK. So your MCLK is too low.

    I will look into using a 12.288MHz crystal for the MCLK on the DSP and have  the DSP be the master clock source for the serial audio. Then have the MCU slave off of those clocks. Then you can use the fs/2 settings for sample rate and be running at 24kHz fs.

    Dave T

  • Thanks Dave for fast reply. I switched to 48kHz and now MCLK is 12.288MHz. However I discovered that it looks like this. I will find another clock source and see if this works.

  • Hello Def,

    So that is the MCLK output? Not great. The PLL will not like MCLK input that is intermittent.

    That said, It looks like you are using a digital input on a scope since the waves are nice and squared off. When looking at clocks I usually use the analog input to a scope. This way the scope does not look to see if the data is above a threshold for a high etc. Plus, many times the peak to peak crystal output signals are not very high. Then I also like to see if there is a lot of over and under shoot on the signals and if there are major reflections in the transmission line. So my point is that the clock may not have stopped during those blank sections but instead it simply went below the threshold for a "1".

    Dave T

  • That was just image from logic analyzer. I'll try with scope in couple of hours(atm I dont have access to any). Even with MCLK > 8MHz I can't get it working. I tried to read clock settings registers with SigmaStudio (using USBi) and I can read and write with no problem to R0 and R1 (but after a while even this stopped working). However if I want to read any other register that requires PLL to access them it fails. Datasheet says:

    The ADAU1761 must have a valid master clock in order to write to all registers except for Register R0 (Address 0x4000) and Register R1 (Address 0x4002).

    So there is problem with MCLK. I will also replace ADAU1761 and then see if this works, maybe I damaged it somehow.

    Here is the schematic:


    Ok, I managed to get PLL Lock and now I can read/write all registers via I2C. Using Link Compile Download button I uploaded SigmaStudio project but still can't get any sound out of DSP. That's really weird. I have no clue what might be wrong.

  • OK, finally I solved my issue. It was a faulty chip, maybe I damaged it somehow during soldering. I soldered a new one and everything is working perfectly! 

  • Thanks for letting us know!

    You were correct in that without MCLK and more specific, the PLL running, you cannot access any internal registers but for the first two. So something was keeping the PLL from running. The startup routine is important. If you have more troubles let us know.

    Oh, one little thing. I noticed on your schematic that you have the GSM filter on the power. That is the inductor and cap in series. You do not need to have that in your design unless you are putting this into a cell phone.

    Dave T

  • I have one more question. I would like to record 16 bit audio. ADCs on ADAU1761 are 24 bit, that means I can record and send only 24 bit data though I2S? Can I make it somehow 16 bit in sigma studio? It would make my application a lot easier if I wouldn't have to bitshift data on the MCU side.

  • Hello,

    You do not need to bit-shift your data. It needs to be left justified so all you do is take the first two bytes and discard the last byte (LSBs) and you are done.

    Dave T