AnsweredAssumed Answered

Connect Raspberry Pi to ADAU1701 via I2S bus

Question asked by erotavlas on Sep 17, 2015
Latest reply on Oct 2, 2015 by erotavlas


I would like to connect the Raspberry Pi B+ or the Raspberry Pi 2 to the ADAU1701 via I2S bus. Searching on the web, I found some "guides" about this, but up to now I am not able to reproduce none of them. In particular, here there is the official thread about using I2S bus on Raspberry Pi. In few words, since the Raspberry Pi is not able to produce a master clock signal while ADAU1701 can do it, the only possible solution is to configure I2S as controller. Hence, in this way the ADAU creates its master clock MCLK and the LRCLK and BCLK for the Raspberry Pi and those clocks for itself. Frame Sync Freq is 48kHz (ADAU MCLK/1024) and BCLK is 3,072MHz (ADAU MCLK/16).


Pin out GPIO RPi

  •      SDATA - pin 40 -> DATA OUT
  •      LRCLK - pin 35 -> LRCLK IN/OUT
  •      SCLK - pin 12 -> BCLK IN/OUT
  •      GND - pin 39
  •      MCLK - RPi does not provide Master Clock MCLK


In the thread they said that used the Sabre ESS901 driver and they changed the SND_SOC_DAIFMT_CBS_CFS to SND_SOC_DAIFMT_CBM_CFM, compiled kernel with modules and changed some parameter in the /etc/modules and /etc/asound.conf.

The current kernel directly supports the ADAU1701 with a driver and the corresponding module is directly available with the kernel since SND_SOC_ADAU1701 is defined in kernel configuration and it is possible to obtain the kernel and the module via rpi-update without the need to compile kernel

I have the EVAL‐ADUSB2EBZ board that I use to program the EEPROM of a custom board with ADAU1701. The custom board works perfectly in the stand alone configuration.

What am I missing in order to obtain a working I2S interface between the Raspberry Pi and the ADAU1701? It seems that all should be ok, maybe the only thing that does not work is the driver of ADAU1701.

Please, do you have any suggestion or solution?


P.S. I already read this thread