DimDim's ES 9028/9038 DAC Shield For Arduino DUE

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
Physical Wiring

I'd say that the hardest (or better, more tedious) part in building such a controller is making the cable that connects the TFT to the DUE. The shield is pretty easy to put together, even though it has smd components. They are very large components, for SMDs.

Hi DimDim,

I have been reading and trying to understand how to put this TFT HiFiduino together. I do have a few questions if you dont mind, I cant seems to find a guide in how to wire the TFT to the DUE or to the shield? I already have the shield, but I could not find any documentation as to where those pin connectors on the board are going? Would you be so kind to direct me to where I can find some documentation pertaining to the physical wiring?

Thanks,
Alex
 
Hi DimDim,

I am trying to make a simple controller. Would you happen to have an old code that uses the regular LCD 20x4 display? I can start with that. I tried to modify your TFT code, but I could not get it to work. I appreciate your help or anyone. My needs are very simple, my input just the SPDIF(Toslink) and 12S/DSD/PCM, thats it. If I can only at least get it to play from Toslink, that would be great. Please help, anyone.

Alex
 
Hi there Alex,

I've never used a 20x4 display in my controllers, I just went straight to TFTs.

The original code that I adapted to my use was from hifiduino's site: CODE | H i F i D U I N O look for the "B11f" version.

But this code was for the 9018 chips, not for the 9028/9038.

My current code includes support for input switching. However, not all s/pdif inputs are supported, just the ones connected to the DATA1 - DATA4 pins of the chip. To support other DATA pins you would need to change a few registers. If you know which DATA pin you'll be using for your toslink receiver I could give you more information on what registers to change.
 
Hi there Alex,
I've never used a 20x4 display in my controllers, I just went straight to TFTs.
The original code that I adapted to my use was from hifiduino's site: CODE | H i F i D U I N O look for the "B11f" version.
But this code was for the 9018 chips, not for the 9028/9038.
My current code includes support for input switching. However, not all s/pdif inputs are supported, just the ones connected to the DATA1 - DATA4 pins of the chip. To support other DATA pins you would need to change a few registers. If you know which DATA pin you'll be using for your toslink receiver I could give you more information on what registers to change.

Thank you very much for your reply. I have to admit, I am not that quite familiar with these data pins, can you give me some links or info about these. I guess as long as I can get sound from the spdif, at least for now. I am not sure what the significance of using one from another. Please, just for testing, in the setup section, I call this function with all the settings I could find from your code in which I think should work for spdif input. but when it goes to the loop, it could not detect the right input. Please take a look

void test(){

SRExact = true;

// set up the registers in the DAC at startup
bitSet(reg10,0); // Set bit zero for reg 10: Mute DACs
writeSabreReg(0x0A,reg10); // Mute DACs.
setSabreVolume(currAttnu); // Reg 0 to Reg 7 startup volume level
writeSabreReg(0x0D,0x00); // DAC in-phase
writeSabreReg(0x13,0x00); // DACB anti-phase
writeSabreReg(0x25,0x00); // Use built in filter for stage 1 and stage 2
writeSabreReg(0x0E,reg14); // Reg 14: BuffII input map

// SPDIF input
writeSabreReg(0x08,0xE8); // Reg 8: Enable SPDIF input format
bitSet(reg17L,3); // Reg 17: auto spdif detection ON -Set bit 3
writeSabreReg(0x11,reg17L); // Reg 17: write value into register

// Slow filter
bitClear(reg14,0); // Clear bit 0 of reg 14 for slow fir
writeSabreReg(0x0E,reg14);

// | | | | | |0|0| | IIR Bandwidth: Normal (for PCM)
bitClear(reg14,1); // Clear bit 1
bitClear(reg14,2); // Clear bit 2
writeSabreReg(0x0E,reg14);

// DPLL Lowest
bitClear(reg25,1); // Reg 25: Clear bit 1 for "use all settings"
writeSabreReg(0x19,reg25); // Write value into reg 25 for all settings
writeSabreReg(0x0B,0x85); // Reg 11: Set DPLL bandwidth

// DPLL Mode x1
bitSet(reg10,2); // Set bit 2 of reg 10: jitter reduction ON
writeSabreReg(0x0A,reg10);
bitClear(reg25,0); // Clear bit 0 of reg 25 for x1 DPLL bandwidth
writeSabreReg(0x19,reg25);
bitClear(reg17L,1); // Reg 17: Clear bit 1 to NOT invert DPLL phase
writeSabreReg(0x11,reg17L);

// Quantizer 6-bit true diff
bitSet(reg14,3); // True differential
writeSabreReg(0x0E,reg14);
writeSabreReg(0x0F,0x00); // 6-bit quantizer

// No notch delay
writeSabreReg(0x0C,0x20);

// No oversampling
bypassOSF=true; // This is to bypass oversampling
bitSet(reg17L,6); // Reg 17: set bypass oversampling bit
bitSet (reg17L,5); // Reg 17: set Jitter lock bit, normal operation
writeSabreReg(0x11,reg17L); // Reg 17: bypass OSF on, force relock
delay(50);
bitClear(reg17L,5); // Reg 17: clear relock jitter for normal operation
writeSabreReg(0x11,reg17L); // Reg 17: Jitter eliminator Normal oper


bitClear(reg10,0); // Clear bit zero of reg 10: unmute DACs
writeSabreReg(0x0A,reg10); // Unmute DACs
}

Essentially, I needed to have two switches, spdif and I2S/DSD/PCM, and of course, the code should detect whats coming in. I think my volume control should also work, but I need to get music in first.

Thank you much in advance, I hope I can get my code to run.
Alex
 
Didn't you say that you had an 9028Pro/9038Pro based dac?

The above code is for the 9018 chips.

Oh Sorry, I thought I got it from your latest code. Anyway, yes I do have a BufalloIIISE Pro, ES9038. Would you be so kind to correct what I have done so far for the ES9038? I would really appreciate it. BTW, you think you can guide me where I can find information on these registers for the 9038? So that I could better understand.

Thanks again,
Alex
 
I'm sorry Alex, I simply do not have the time these days to be much help to anybody.

All I can say is that you should have a look at my "TFT HiFiDuino Pro" code and look for the function that changes inputs (setInput()).

You'll definitely need a copy of the datasheet to make sense of the registers that are involved. I see that you've gotten help with that.

Let us know how it goes. :)
 
I'm sorry Alex, I simply do not have the time these days to be much help to anybody.

All I can say is that you should have a look at my "TFT HiFiDuino Pro" code and look for the function that changes inputs (setInput()).

You'll definitely need a copy of the datasheet to make sense of the registers that are involved. I see that you've gotten help with that.

Let us know how it goes. :)

Hi Dimdim,

Thanks for your reply. Thats ok, I understand, I did get a big help from Possum64, he got this set of codes to call in your program that will do the settings for you. I got my program to work, exactly the way I wanted it to work. Its simple, I only got 2 inputs, one spdif and I2S/DSD, and a volume, of course, but that was it. I only have three configurable settings, Filter, IIR and Dpll. I think these are the only once that can have a big change in SQ. So, with only these, the program can all fit on an arduino Uno, and a simple LCD display. However, having said that, these requirements may be simple and that you are the greatest programmer that ever lived, but without information and data, theres not much you can do, that is why, you are still going to need big helps. Big thanks to our community of Music lovers and DIY'er, with special mention to Possum64. Excellent guy with lots of experience to share.

Thanks,
Alex

Ales
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.