AnsweredAssumed Answered

I would like to control ADAU1701 as a target with a MCU with i2c comm

Question asked by gaboca0527 on Jan 2, 2010
Latest reply on Jan 4, 2010 by gaboca0527



I am Gabor from Hungary. I apologise for my poor english.


I built an own circuit with this ADAU1701 DSP and with an atmega8A microcontroller.

I wrote a simple code to initialize and set up to pass-through the DSP over i2c bus. In the manual of the DSP (page 15.) is a description about the sequence of the initialization.


1. Apply power to ADAU1701

2. Wait for PLL to lock

3. Load Sigma DSP program and parameters

4. Set up registers

5. Turn off the default muting, clear data registers and initialize DAC setup register


To only test analog audio pass-through (ADCs to DACs), Steps 3 and 4 can be skipped and the default parameter can be used.


I tried this methode, I skipped steps 3 and 4, but nothing was happened. The audio output was mute.

I just set bits ADM, DAM, CR in the core control register to one and I set bits DS [0:1] in the DAC setup register to 01. I think it is enough for the pass-through mode.


The MCU got in order all the ACK messages from the target. It was unbelievable for me, and I tried something. I changed in the i2c program the address of the core control register to a false value. I was surprised, because the ACK messages were again right, in turn the address of the core control register was false.

The next test was that I changed the address of the slave target. Normally it is 0x68 (both ADDR0 and ADDR1 set to 0.), but I changed to 0x6A. In this situation the first ACK was false. So I think the DSP is working fine.


I use 400k SCL frequency for i2c. But I tried it with slower (100k or 200k) too. No changes. I use 2,2kohm pull up resistors on the i2c bus. SELFBOOT mode is not active, pulled down to GND. The MCLK is working fine.


I think something is bewildet the host controller and it is get false ACK messages as normal.


Dou You have any idea? Maybe more register settings or i2c timing problem? Maybe there is a problem with the internal PLL? How can I check it?


Thank You!