ESS Sabre Reference DAC (8-channel) - Page 157 - diyAudio
Go Back   Home > Forums > Source & Line > Digital Line Level

Digital Line Level DACs, Digital Crossovers, Equalizers, etc.

Please consider donating to help us continue to serve you.

Ads on/off / Custom Title / More PMs / More album space / Advanced printing & mass image saving
Reply
 
Thread Tools Search this Thread
Old 18th July 2010, 11:15 PM   #1561
diyAudio Member
 
Join Date: Jan 2009
Send a message via MSN to Adrculda Send a message via Yahoo to Adrculda
Quote:
Originally Posted by OzOnE_2k3 View Post
Hi,

Sounds like a nice project - That amp / preamp combo will be HUGE though. (In keeping with many other projects I suppose).

I was trying to cram too much into this case at first (7 Sympatico modules plus toroidal AND DSP!), but after the positive comments about "Class-D" type amps like the Sure amp, I moved over to class-D and I now have a lot more room in the case.

(I'm planning to stack another Sure amp on top of this one if I can ever get the rest of the details sorted).

btw, does anyone know of a cheap I/V stage suitable for the Sabre chip? Would something like a modified IVY III type circuit work OK (if only single-ended outputs were needed)?...

This would save a fair bit in the cost as I would then only need eight OPA1632's and four LME49720's.

OzOnE.
Inside the Preamp all the stages are going to be separated by 1/16 copper sheets to reduce noise and crosstalk between sections.
Power supply will be buried at the bottom of the case and will be separated from the modules as well to reduce EMI with 1/8 thick copper.
As far as the back panel, i will have another one made to the exact dimensions as the one that came plus the holes required for the connectors.

I just have to figure how to machine out the front panel for the controls and mounting of the LCD display.
  Reply With Quote
Old 19th July 2010, 03:11 AM   #1562
qusp is offline qusp  Australia
diyAudio Member
 
qusp's Avatar
 
Join Date: Oct 2009
Location: Brisbane, Australia
I would not expect such thin copper to provide any meaningful shielding against EMI, in fact thick copper would not do much good either; it is simply not dense enough to provide an effective shield. I could be wrong of course, but that certainly has been my experience
  Reply With Quote
Old 19th July 2010, 05:09 AM   #1563
Bunpei is offline Bunpei  Japan
diyAudio Member
 
Join Date: Aug 2008
Quote:
Originally Posted by OzOnE_2k3 View Post
The problem I'm having now is that the Sabre locks onto the I2S audio from the DSP perfectly fine when using an optical input from a DVD player, but...

...If I use the optical output from the PC (tried two different sound cards), the Sabre locks on and plays audio for three seconds, then it looses lock for one second and the process repeats?

The sound cards work perfectly through optical to a commercial amp (even through a very cheap 5 metre optical cable). I tried three different cables with the Sabre DAC and I still have this "lock" problem?

The decoded I2S signals from the DSP board look identical on the scope whether I'm using the DVD player optical output (audio fine), or PC optical output (audio intermittent)?
May I make them sure that;
0. Your Sabre chip is ES9018.
1. You are using sampling rate 48 kHz and data length 16 bit inputs from both your DVD-player and PC interface and does your Denon DSP module output fs=48 kHz and BIT CLOCK = 64 * fs ( 64= 32 * 2 ) for the both DVD-player and PC interface cases?
2. Are those waveforms of BIT CLOCKs and WORD CLOCKs for the both cases almost identical? How are the timings between BIT CLOCK and WORD CLOCK? Are they almost identical either?

I don't think you use BIT CLOCK = 32 * fs ( 32 = 16 * 2) for the PC interface case. However, I just remember that ES9018 only supports BIT CLOCK = 64 * fs.
  Reply With Quote
Old 23rd July 2010, 05:10 AM   #1564
diyAudio Member
 
Join Date: Jul 2005
Location: Devon
Hi, Bunpei,

I'm using the ES9008 ("24-bit" version).

All digital audio signals are passed through the DSP board. The sources are standard S/PDIF, so should be 64fs (32-bits per Left / Right, but only 16, 18, 20, or 24 bits actually used for audio).

The thing is, it's working fine when using coax from the PC instead of optical? The signal format from coax and optical should be identical (apart from slight bias / jitter differences etc.)

I've been too busy to try changing the resistors on the I2S lines to match the impedances etc. I'm sure this is the main problem, so I'll fix it soon. I can always use coax for the time being, it's just that my on-board sound card (coax) sounds dreadful.

I'm not sure that this amp will ever get finished. It basically just needs a cheap 8-channel I/V stage and a 7-channel speaker protection relay board to finish it off.

I also have a very nice FriendlyArm board and 3'5" LCD which I'm planning to fit to the front of the amp chassis to do basic control and possibly generate some test signals. It's way overkill though, and difficult enough just to get simple I2C working and deciding on an OS to use.

Thanks for everyone's help though, I think I'll put the optical / coax thing to rest for now.


OzOnE.
  Reply With Quote
Old 6th August 2010, 01:29 AM   #1565
diyAudio Member
 
Join Date: Jan 2009
Send a message via MSN to Adrculda Send a message via Yahoo to Adrculda
I'm still waiting a response on the 8Ch DAC ...
Anyone ??
  Reply With Quote
Old 6th August 2010, 03:14 AM   #1566
diyAudio Member
 
Join Date: Jun 2009
Lots of information here about it but I don't know where you buy it from.

Test hearing of Evaluation boad of ES9008S ESS Technology
  Reply With Quote
Old 18th August 2010, 09:39 PM   #1567
theob is offline theob  United States
diyAudio Member
 
Join Date: Jun 2007
I'm having trouble with 2 of my terminal blocks on the buf32s mobo. I either have to physically move them or tighten the set screws. Has anybody had this issue and if so what can I do to fix?
  Reply With Quote
Old 15th September 2010, 08:27 AM   #1568
gebi is offline gebi  Austria
diyAudio Member
 
Join Date: Aug 2005
Default i2c with arduino

just started playing with my arduino Duemilanove (I’m newbie with it).
sadly I cannot get the volume control via I2c running with my buffalo 1.
I known that is not a arduino list, but maybe I'm making here a stupid fundamental error. I'm using the wire lib.

A few questions:
about wiring from arduino to buffalo:
pin 4 to sda
pin 5 to scl
connect grounds.
Is it needed to connect Vdd on the buffalo too -- and do we need pull up resistors (I don't think so as the pull up res are in the buffalo 1 already ) ?
after that I tried the following test program to attenuate the vol.
but nothing happens — but the ‘build in LED’ from the arduino is flashing.
from the data sheet I2C addr. is 0x90 (addr pin is open). but what are the register addr starting from 1 to 8 ? (see page 9). (what means (default = 8’d0 - is that 8bit digital 0 ??).

it was strange that the datasheet was not on the ess website. google gives 202 results of the pdf...

thanks.


#include <Wire.h>

void setup()
{
Wire.begin(); // join i2c bus (address optional for master)
}

byte vol=0;
int ledPin = 13; // led on the arduino
void loop()
{
// Do stuff repeatedly
digitalWrite(ledPin, LOW);
delay(100);
Wire.beginTransmission(0x90); // Address of DAC is hex 90

Wire.send(0x01); // Address of register 1 is hex 1
Wire.send(vol); // Value into register vol
Wire.send(0x02); // Address of register 2 is hex 2
Wire.send(vol); // Value into register vol
Wire.send(0x03); // Address of register 3 is hex 3
Wire.send(vol); // Value into register vol
Wire.send(0x04); // Address of register 4 is hex4
Wire.send(vol); // Value into register vol
Wire.send(0x05); // Address of register 5 is hex 5
Wire.send(vol); // Value into register vol
Wire.send(0x06); // Address of register 6 is hex 6
Wire.send(vol); // Value into register vol
Wire.send(0x07); // Address of register 7 is hex 3
Wire.send(vol); // Value into register vol
Wire.send(0x08); // Address of register 8 is hex4
Wire.send(vol); // Value into register vol

Wire.endTransmission();

digitalWrite(ledPin, HIGH);
delay(100);
vol=vol+8; // steps to 0.5db each. max attenuation=-127db
if(vol == 255) // if reached 256th position (max)
{
vol = 0; // start over from 0db
}
}
__________________
gebi
  Reply With Quote
Old 15th September 2010, 09:25 AM   #1569
Account disabled at member's request
 
Join Date: Sep 2007
Location: Multiple...
Quote:
Originally Posted by gebi View Post
just started playing with my arduino Duemilanove (I’m newbie with it).
sadly I cannot get the volume control via I2c running with my buffalo 1.
I known that is not a arduino list, but maybe I'm making here a stupid fundamental error. I'm using the wire lib.

A few questions:
about wiring from arduino to buffalo:
pin 4 to sda
pin 5 to scl
connect grounds.
Is it needed to connect Vdd on the buffalo too -- and do we need pull up resistors (I don't think so as the pull up res are in the buffalo 1 already ) ?
after that I tried the following test program to attenuate the vol.
but nothing happens — but the ‘build in LED’ from the arduino is flashing.
from the data sheet I2C addr. is 0x90 (addr pin is open). but what are the register addr starting from 1 to 8 ? (see page 9). (what means (default = 8’d0 - is that 8bit digital 0 ??).

it was strange that the datasheet was not on the ess website. google gives 202 results of the pdf...

thanks.


#include <Wire.h>

void setup()
{
Wire.begin(); // join i2c bus (address optional for master)
}

byte vol=0;
int ledPin = 13; // led on the arduino
void loop()
{
// Do stuff repeatedly
digitalWrite(ledPin, LOW);
delay(100);
Wire.beginTransmission(0x90); // Address of DAC is hex 90

Wire.send(0x01); // Address of register 1 is hex 1
Wire.send(vol); // Value into register vol
Wire.send(0x02); // Address of register 2 is hex 2
Wire.send(vol); // Value into register vol
Wire.send(0x03); // Address of register 3 is hex 3
Wire.send(vol); // Value into register vol
Wire.send(0x04); // Address of register 4 is hex4
Wire.send(vol); // Value into register vol
Wire.send(0x05); // Address of register 5 is hex 5
Wire.send(vol); // Value into register vol
Wire.send(0x06); // Address of register 6 is hex 6
Wire.send(vol); // Value into register vol
Wire.send(0x07); // Address of register 7 is hex 3
Wire.send(vol); // Value into register vol
Wire.send(0x08); // Address of register 8 is hex4
Wire.send(vol); // Value into register vol

Wire.endTransmission();

digitalWrite(ledPin, HIGH);
delay(100);
vol=vol+8; // steps to 0.5db each. max attenuation=-127db
if(vol == 255) // if reached 256th position (max)
{
vol = 0; // start over from 0db
}
}
I use the following:

#define SABRE_ADR 0x48 // I2C Hex address of the Sabre DAC

I have defined the following as references for my programming:

#define DEFAULTVOL 0x28 // -20 dB
#define MINVOL 0xc6 // -99dB - Dac adjustment is 0.5 db
#define MAXVOL 0x00 // -0 dB
#define DIMVOL 0xb4 // -90dB The volume level when dimming the volume

Then the code for increasing the volume by 0.5 dB are as follows
(As I stores all settings in EEPROM and reads back the stored values at powerup you can disregard the EEPROM programming):


// The following for volume up
case KEYVOLUP:
switch(volDimSTAT){
case 0:
if (currVol > MAXVOL) // Check if already at max numerical Volume
{
currVol=currVol-1; // Increase 0.5 dB
EEPROM.write(currVolAddr, currVol); // Write currVol value to EEPROM address
I2C_write(SABRE_ADR, 0x00, currVol); // Write new volume data (Register 0)
I2C_write(SABRE_ADR, 0x01, currVol); // Write new volume data (Register 1)
I2C_write(SABRE_ADR, 0x02, currVol); // Write new volume data (Register 2)
I2C_write(SABRE_ADR, 0x03, currVol); // Write new volume data (Register 3)
I2C_write(SABRE_ADR, 0x04, currVol); // Write new volume data (Register 4)
I2C_write(SABRE_ADR, 0x05, currVol); // Write new volume data (Register 5)
I2C_write(SABRE_ADR, 0x06, currVol); // Write new volume data (Register 6)
I2C_write(SABRE_ADR, 0x07, currVol); // Write new volume data (Register 7)
// setupSabre ();
delay(IRCdelay);
break;
}
break;
case 1:
break;
}



The code for decreasing the volume are as follows:


// The following for volume down
case KEYVOLDOWN:
switch(volDimSTAT){
case 0:
if (currVol < MINVOL) // Check if already at min Volume
{
currVol=currVol+1; // Decrease 0.5 dB
EEPROM.write(currVolAddr, currVol); // Write currVo value to EEPROM address
I2C_write(SABRE_ADR, 0x00, currVol); // Write new volume data (Register 0)
I2C_write(SABRE_ADR, 0x01, currVol); // Write new volume data (Register 1)
I2C_write(SABRE_ADR, 0x02, currVol); // Write new volume data (Register 2)
I2C_write(SABRE_ADR, 0x03, currVol); // Write new volume data (Register 3)
I2C_write(SABRE_ADR, 0x04, currVol); // Write new volume data (Register 4)
I2C_write(SABRE_ADR, 0x05, currVol); // Write new volume data (Register 5)
I2C_write(SABRE_ADR, 0x06, currVol); // Write new volume data (Register 6)
I2C_write(SABRE_ADR, 0x07, currVol); // Write new volume data (Register 7)
// setupSabre ();
delay(IRCdelay);
break;
}
break;
case 1:
break;
}

Last edited by RayCtech; 15th September 2010 at 09:45 AM.
  Reply With Quote
Old 15th September 2010, 02:50 PM   #1570
glt is offline glt  United States
diyAudio Member
 
Join Date: Oct 2004
Good to see you using Arduino

If I remember correctly, the I2C address is put in 7 bits so rather than 0x90 it is 0x48 (as indicated by RayCTech above). The rest seems to be fine.

You also need to share the ground with Buffalo. And I think the Buffalo is 5V tolerant (When I programmed the OPUS, I used a 5V to 3.3V level converter because the Wolfson parts are not 5V tolerant)

You can see an implementation of the code here: MY PROJECTS

You can see more Arduino programming for TPA boards here: H I F I D U I N O
__________________
www.hifiduino.wordpress.com
  Reply With Quote

Reply


Hide this!Advertise here!
Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off



New To Site? Need Help?

All times are GMT. The time now is 01:05 AM.


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