Ak4384 dac i2s

domingo

Well-known member
Hi all,

I've got this chip AK4384 while disassembling an old Tascam interface. I placed it on an adapter and connected everything I could, but it doesn't work. I think it is not set to I2S mode. The data sheet says pin8 (DIF0) should be high, also DIF1. But there is no DIF1 pin. So I guess the mode has to be set via MCU.

Datasheet AK4384 (page 10)

Could someone take a look at it and tell me how easy would it be to activate the I2S mode and try out this DAC?

Thanks a lot in advance,
Domingo
 
Could someone take a look at it and tell me how easy would it be to activate the I2S mode and try out this DAC?

In the Pin Function table on page 2, it shows that pins 6/7/8 have differing functions based on whether the chip is used in parallel or serial mode. Assuming you plan to use serial mode, you choose the mode via register "Control 1" (address 00H), which has bit fields for DIF0, DIF1, and DIF2.
 
Thank you. Sounds like I would need to wire pin8 (DIF0) to a digital pin in the teensy and write the code to set the mode, but I have no experience on that. Is there any copy paste from code from a similar device I could do? Or any reference to start with? Or better forget about it?

In any case it is good to know that it was not as simple as setting pins up or down (like the PCM1802 for example).
 
Thank you. Sounds like I would need to wire pin8 (DIF0) to a digital pin in the teensy and write the code to set the mode, but I have no experience on that. Is there any copy paste from code from a similar device I could do? Or any reference to start with? Or better forget about it?

In any case it is good to know that it was not as simple as setting pins up or down (like the PCM1802 for example).

Without looking into it too much, I think you would be using the serial interface, which seems to be a 3-wire SPI-like interface, with pin 6 being the chip select, pin 7 the clock, and pin 8 the data. The audio data is on 3 other pins. You would choose the audio mode by setting the values of DFI0, DFI1, DFI2 via writing to the Control 1 register over the serial interface.
 
Looks like you can configure the chip for I2S by only wiring certain pins to 3.3V or GND. The datasheet calls this "parallel mode". That use of the word "parallel" seems a little unusual, but it ultimately means you can configure the chip by only wiring certain pins high or low.

P/S (pin 9) needs to be GND for parallel control mode.

In parallel mode, only 2 formats are available, shown in Table 8 on page 10. Connect DIF0 (pin 8) to logic high to configure for I2S mode.

To specifically answer your original question:

The data sheet says pin8 (DIF0) should be high, also DIF1. But there is no DIF1 pin. So I guess the mode has to be set via MCU.

I believe you're looking at Table 7 which applies only if you configured the chip for serial control mode, by wiring P/S (pin 9) to logic high. But that is not necessary. You can use the much simpler parallel config mode by wiring P/S (pin 9) to GND. Then Table 7 does not apply. Table 8 is your configuration options if P/S is connected to GND.

At least while experimenting, I would wire SMUTE (pin 6) to GND to disable the mute feature.

ACKS (pin 7) isn't as clear, at least from my quick reading of the datasheet. My guess is it should be low to disable auto mode, because the specific clock settings Teensy uses are shown in Table 2: Fs = 44.1 kHz, MCLK = Fs * 256, BCLK = Fs * 64. My gut feeling is auto mode (ACKS wired to logic high) will probably also work but with lower sound quality, probably causing the filters inside the chip to destroy some of the higher frequency content.

The only pin you might need to connect to Teensy, other than the I2S data and 3 I2S clocks, is PDN (pin 5). It says "When at “L”, the AK4384 is in the power-down mode and is held in reset. The AK4384 should always be reset upon power-up." You might need to use pinMode() and digitalWrite() to drive this low when your program starts, and then after a delay drive it high. Maybe? It's not clear to me from the datasheet if this chip is capable of starting up properly on its own. Many older chips can't.

But it really looks like this chip should be able to work with Teensy's I2S output if you just wire P/S (pin 9) to GND, and connect DIF0 high. When reading the datasheet, ignore all the tables which apply to the more complex serial mode.
 
Looks like you can configure the chip for I2S by only wiring certain pins to 3.3V or GND. The datasheet calls this "parallel mode". That use of the word "parallel" seems a little unusual, but it ultimately means you can configure the chip by only wiring certain pins high or low.

P/S (pin 9) needs to be GND for parallel control mode.

In parallel mode, only 2 formats are available, shown in Table 8 on page 10. Connect DIF0 (pin 8) to logic high to configure for I2S mode.

To specifically answer your original question:



I believe you're looking at Table 7 which applies only if you configured the chip for serial control mode, by wiring P/S (pin 9) to logic high. But that is not necessary. You can use the much simpler parallel config mode by wiring P/S (pin 9) to GND. Then Table 7 does not apply. Table 8 is your configuration options if P/S is connected to GND.

At least while experimenting, I would wire SMUTE (pin 6) to GND to disable the mute feature.

ACKS (pin 7) isn't as clear, at least from my quick reading of the datasheet. My guess is it should be low to disable auto mode, because the specific clock settings Teensy uses are shown in Table 2: Fs = 44.1 kHz, MCLK = Fs * 256, BCLK = Fs * 64. My gut feeling is auto mode (ACKS wired to logic high) will probably also work but with lower sound quality, probably causing the filters inside the chip to destroy some of the higher frequency content.

The only pin you might need to connect to Teensy, other than the I2S data and 3 I2S clocks, is PDN (pin 5). It says "When at “L”, the AK4384 is in the power-down mode and is held in reset. The AK4384 should always be reset upon power-up." You might need to use pinMode() and digitalWrite() to drive this low when your program starts, and then after a delay drive it high. Maybe? It's not clear to me from the datasheet if this chip is capable of starting up properly on its own. Many older chips can't.

But it really looks like this chip should be able to work with Teensy's I2S output if you just wire P/S (pin 9) to GND, and connect DIF0 high. When reading the datasheet, ignore all the tables which apply to the more complex serial mode.


Thank you for your time Paul.
It was quite a revelation for me that 'parallel' meant only pins L and H. I tried already in a few occasions what you mention, following the datasheet as well. The signal seems to be there behind a lot of noise and the power up process seems tricky. PDN pin has to be down for a specific time apparently to switch it on. I'll publish here any further progress with this particular (recycled) DAC.
 
Hey Paul and everyone,

So this DAC works, but I get rushes of noise that I've tried everything to solve. Resistors of many magnitudes (below 470R) across the I2S lines, all decoupled as per datasheet. Same happens with another DAC so it not specific to this one. I tried also lowering the strength of the GPIO pins, noise increases. I soldered very short cables to the pins in the Teensy, same happens. Any tip on how should this be breadboarded?

–Noise is sometimes not there, then it starts slowly. Sometimes it is so strong that I cannot listen to the audio behind. Is this a problem with I2S? or grounding? Any advice will be immensely appreciated.
 
Back
Top