diyAudio

diyAudio (http://www.diyaudio.com/forums/)
-   Digital Line Level (http://www.diyaudio.com/forums/digital-line-level/)
-   -   miniDSP to Twister Pear Opus DAC via I2S (http://www.diyaudio.com/forums/digital-line-level/182284-minidsp-twister-pear-opus-dac-via-i2s.html)

ljfont 1st February 2011 04:57 AM

miniDSP to Twister Pear Opus DAC via I2S
 
Anyone connect their miniDSP to an opus DAC via I2S? I've read in other another thread that it is possible. MiniDSP - MiniDSP/MiniDIGI combo and external DACs? - MiniDSP
and the miniDSP I2S technical note.

However, i was wondering if anybody had this going with the opus configured in Normal mode using hardware jumpers?

glt 1st February 2011 07:40 PM

Quote:

Originally Posted by ljfont (Post 2453478)
Anyone connect their miniDSP to an opus DAC via I2S? I've read in other another thread that it is possible. MiniDSP - MiniDSP/MiniDIGI combo and external DACs? - MiniDSP
and the miniDSP I2S technical note.

However, i was wondering if anybody had this going with the opus configured in Normal mode using hardware jumpers?

It should work.

According to the miniDSP i2s manual, miniDSP I2S operates in the following mode:
-External ADC/DAC is an I2S slave device.
-MCLK: 12.288MHz
-BCLK: 3.072MHz = 64Fs = (64 * 48kHz)
-LRCLK: 48kHz
-Resolution: 24bits

This is supported by WM8741/OPUS. MCKL at 12.288 is 256fs which is in the sweet spot of mclk supported by the DAC

fb 2nd February 2011 04:56 AM

I can confirm it's working. I'm using the default hardware settings for the Opus, as found in it's user manual. My chain is miniDIGI (I2S master) -> miniDSP (I2S/MCLK slave) -> Opus (slave).

ljfont 2nd February 2011 08:02 AM

Quote:

Originally Posted by fb (Post 2454667)
I can confirm it's working. I'm using the default hardware settings for the Opus, as found in it's user manual. My chain is miniDIGI (I2S master) -> miniDSP (I2S/MCLK slave) -> Opus (slave).


Great!!
I have the same setup (miniDIGI and miniDSP)

I have some other questions:
which board are you using to get your MCLK signal?
Are you using two opus DACS to get 4 mono outs?
How does it sound?

Thanks.
Leo

fb 3rd February 2011 01:57 AM

Sorry, should have written miniDIGI is MCLK master.

Unfortunately I don't have my new amps with balanced input yet (still waiting for manufacturer), so all I've done is hook up one Opus to the miniDSP and route one of the Opus' outputs into my soundcard (RME FF400) to check it's working.

My speakers are 3 way stereo. At this stage I'm just using the miniDSP DACs into my receiver for multi-amping.

System will soon be:
FF400 -> SPDIF ->
miniDIGI -> I2S ->
2x miniDSP -> I2S ->
3x Opus

glt 3rd February 2011 05:50 PM

>>
System will soon be:
FF400 -> SPDIF ->
miniDIGI -> I2S ->
2x miniDSP -> I2S ->
3x Opus
<<

Although I have not contemplated purchasing these models, I've had the same arrangement in my head. The miniDIGI is a nice module with good clock and SRC chip. Ideally one would use the volume control of the OPUS and then connect directly into amps. However with 3 OPUS you are one I2C address short.

How do plan to control the volume?

fb 3rd February 2011 11:07 PM

It should be possible via SPI. As the WM8741 has in built daisy chaining features, it looks like it would only require 3 wires from an arduino.

What happens if there are more than 1 device on an I2C bus with the same address? If it's OK for all the volume to be set the same this might work.


Failing all that (or maybe preceding), the RME FF400's internal mixer runs at 40bits, and it's already got a display and a knob.

5th element 4th February 2011 12:46 AM

Quote:

Originally Posted by fb (Post 2456774)

What happens if there are more than 1 device on an I2C bus with the same address? If it's OK for all the volume to be set the same this might work.

This doesn't work and is the one major pitfall of I2C. After each transmitted data byte the slave has to send an ACK or NACK in response. It does this by pulling the dataline low for the clock period after the last bit sent.

Quite how this would function if you did connect two devices with the same address I do not know. The ACK is passive, in that the master doesn't have to acknowledge it in any way. I get the impression that the ACK is used for two things. 1) so you know everything is working correctly and 2) for timing. In other words you monitor an internal flag for the ACK and know you can send the next data byte directly after it as a result.

Instead of monitoring the flag for the ACK, you can ignore it and place a time delay between successive data transmits instead, it accomplishes the same thing but could be prone to slip ups if you trim the time delay too low and end up interrupting the transmit bus as a result.

To this end, if the timing between two slaves under the same address was slightly different (why this would be a don't know they are both clocked to the same thing), both would try and pull the data line low in ACK, at the same time. I don't know what the result of this would be. From the view point of the master, it wouldn't really care. The slaves? I don't know what would happen if both try to ACK at the same time. I have heard of errors where a slave pulls a line low and doesn't release it. This generally occurs if the clock goes away for some reason before the line is released. This could perhaps happen if one device ACKs slightly before the other and the master releases the clock as a result. To solve this you need to change the micros output pin configuration, disable the I2C module, configure the clock pin as a general output, send a makeshift clock pulse down what was the clock line so the slave can finish what it's trying to do and it will then release the line. Then turn the I2C module back on and transmit the next data byte.

This of course is just speculation, it could work just fine, or it could be a disaster, I've never tried it, although I'd be up for giving it a go :P

You could use SPI, or purchase a micro with two I2C controllers instead.

(Take what I've written here with a grain of salt as I've only just learnt how to use I2C;))

glt 4th February 2011 01:02 AM

Quote:

Originally Posted by fb (Post 2456774)
It should be possible via SPI. As the WM8741 has in built daisy chaining features, it looks like it would only require 3 wires from an arduino.

What happens if there are more than 1 device on an I2C bus with the same address? If it's OK for all the volume to be set the same this might work.


Failing all that (or maybe preceding), the RME FF400's internal mixer runs at 40bits, and it's already got a display and a knob.

Ah Yeah, SPI... WM8741 supports both I2C and SPI...


All times are GMT. The time now is 08:16 PM.


vBulletin Optimisation provided by vB Optimise (Pro) - vBulletin Mods & Addons Copyright © 2014 DragonByte Technologies Ltd.
Copyright 1999-2014 diyAudio


Content Relevant URLs by vBSEO 3.3.2