Good evening everyone,I have used open-source project called freeDSP ( https://github.com/freeDSP/freeDSP-CLASSIC ) to create my own freeDSP classic board, which uses ADAU1701.Unfortunately, after more than a month of tinkering why its not working I am posting here my question.After assembling the board, I have checked for short circuits on the ADAU1701 pins, the were none ( it was soldered using SMD soldering oven, as well as other components that are SMD on this PCB ).This board uses DSP uses self boot mode to read an EEPROM ( 24AA256 by Microchip ) via I2C bus. Basic way of programming the EEPROM here is with Arduino using a bit modified code for Elektor DSP based on ADAU1701 and Tera Term terminal. However, after many attempt to program EEPROM and to launch the board none of them succeeded. All of the voltages on the ADAU pins are okay, analog signal is reaching ADAU pins, however there is no output on DAC pins. I have checked I2C bus for communication, but since my portable oscilloscope only goes up to 200khz ( Velleman WFS210 ) I was only able to see 3.3V.Next, I have got a CH341A based I2C eeprom programmer. Read the eeproms that were programmed with Arduino and the code was different than the one generated in Sigmastudio. So I have used Sigmastudio to Intel Hex converter to later import converted hex file to HxDwhich exports ASCII bin file, which I can later import to AsProgrammer to upload it to EEPROM ( I understand that there are many convertions involved, but yet, final hex code seems okay). However, even after programming EEPROM that way, the ADAU does not seem to work. Only thing is that I can hear the music when my Iphone SE is playing on max volume as well as home cinema receiver that is connected to DAC 0 and DAC 1 via RCA. Receiver is also cranked on max volume and it outputs to earphones. When I press the reset switch, I hear a loud click on both ears. Have anyone had similar problems and might help me?
Picture 1. Hardware connections made in SigmaStudio
Picture 2. After clicking Write Latest Compilation to EEprom. E2prom.hex opened with SigmaStudio ( program is very basic Input - Output ).
Picture 3. E2prom.hex converted to Intel hex
Picture 4. Intel HEX imported to HXD ( it converts the code to HEX ).
Picture 5. Since I am unable to program just a part of an EEPROM ( I need to program it with empty space, program does not do that automatically). I add 7E00 lines of FF, to be equal to 7FF0 which is all the memory space in EEProm.
Picture 6. Final view of the code.
Picture 7. Fully emptied 24AA256.
Picture 8. Imported file to be programmed to EEPROM.
Picture 9. On the left hand corner visible command lines that programming is succesful.
Later I make sure that there is no power to the board. Insert the EEPROM. Power the board. Click reset button. Play the music from the source. Turn on the home cinema receiver.
Sorry about the difficulties you're experiencing. Here's a few ideas:
1. Check that the crystal oscillator and PLL are working by bringing the antenna of a portable radio tuned to FM 98.3 MHz (twice the MIPS frequency) near your board -- the radio should quiet or respond if the MIPS clock is running.
2. This Engineer Zone thread includes some info on E2PROM contents needed to enable the output. From your screenshots it appears that the active portion of your E2PROM code ends with the correct sequence, suggesting that your programming method is correct.
3. Try searching or asking for help on the Free DSP forum.
Have you tried to program the DSP using SigmaStudio directly? Not using the EEPROM?
Does it work when you do that?
Hello Dave,As it is more of a DIY cheap'o method I am not in the possession of USBi programmer, so I do not have ( or do not know ) any other option to program the DSP directly from the SigmaStudio.RJDSPS
Hello Bob,I have tested the crystal oscillator and I believe that it is working correctly, since when tuning to 98.3MHz ( it is a radio station in my country ) it generates some white noise in the music it in not drastic that the music is not heard, however easily noticeable.EEPROM code should be correct as it is the same as generated in SigmaStudio. Yet, when writing with TeraTerm before, it was not, however now as I have control of the data that is being written to E2prom I can basically guarantee that data is correct ( eeprom's ( have 2 ) are also okay, as can be read, written, erased and verified).I was thinking of asking in the FreeDSP forum, however this community seemed to me much more active, professional and responsive.It is a picture of all the component used, with marked components that are responsible for clock frequency.Schematic of FreeDSP Classic.
Maybe yours eyes of experience will see something troubling here...Thank you in advance.
Well, IMHO, you need to get a USBi and try programming the DSP directly from SigmaStudio. You are running blind and making the development process much more difficult. I can make a long list of things that could cause the program to not produce any output.
When using SigmaStudio you can start answering very basic questions.
Is the part alive at all? Can I communicate with it?
You can read the register settings and set them in real time.
You can split up the input and output to simplify and troubleshoot down to a section. For instance, no sound at all. Well is it a problem with the input to the DSP or the output? With SigmaStudio direct control you can place meters in your project and see if you have anything coming into the ADC. Then you can setup an oscillator in the DSP to output a known level out of the DACs. So you have now divided the signal path in half and can see where the issue is.
You can trace the signal within your schematic by using readbacks and meters to see where your audio processing might be going wrong.
If I have SigmaStudio running and you place the hardware in front of me I can get an idea of where the issue is within about 5 minutes. Then you can start down the path of why and find the root cause.
You can have one register set wrong and the DSP would not work.
So once you work out your program using SigmaStudio, you now have a KNOWN working code and you KNOW the hardware is good. Then you can start looking more closely as to why the DSP program is not properly loading from your controller. Then it is helpful to have a scope that can decode I2C so you can see exactly what your controller is sending out. I know what you think your program is sending out but is the computer actually doing it? "We" as a society have yet to develop a compiler that does exactly what you want verses exactly what you are telling it to do! I have certainly been guilty of writing code that does not do what I intended to do but does a great job of doing what I actually told it to do! LOL
So if you do not have an I2C monitor of some sort, again, you are running blind.
So right now you are trying to write a symphony in its entirety without ever looking at the individual parts to see if they are working together and sound good.
You must to be able to isolate the problem because there are a million things that could cause the DSP to not put out any sound when trying to program the DSP from a controller.