I recently received my ADAU1466 boards with Cirrus ADC and DACs. Today I had some time to evaluate them further.
I set up the hardware in sigma studio - mostly the serial ports- since the rest is similar to the evaluation board. In the schematic I set up the inputs and routed them directly to the outputs; I also set up a sine generator to test the outputs independently.
I downloaded the program to the DSP - no errors occurred.
However, none of the two setups worked. The DACs produced no output.
I checked the serial data lines; MCLK, LRCLK and BCLK were present. No signal on the SDATA lines.
I went on to check the hardware setup in sigma studio. In the "CORE_CONTROL" tap it said that the core is not running. When holding the curser over the "Start Core" button, it says "no bitfield information". It also says that the DSP is hibernating. These settings can be changed but have no effect when "Read the Page" is clicked.
Strangely, all the serial port settings that I have made earlier on, are also overwritten when the DSP is in this state; again, these settings can be changed but do not apply to the DSP.
Perhaps also worth mentioning; there is a clear difference in current draw between a reset state/ not booted state versus the booted state whereas the DSP puts out clock signals. So the DSP must be doing something, even though it says "Core not running"
I would highly appreciate if you could help me sort out this -hopefully minor- error !
I don't mean to be rude or too demanding, but I need an answer as soon as possible.
The boards manufacturer is waiting for feedback, so I need to know if the error could be linked to a production error.
First you need to determine if the core is running and that you are able to communicate with the DSP.
Step 1, check that the Selfboot switch is not turned on. It may be loading a default program which is why it appears to be running a program.
Step 2, In your program, insert a readback and a DC cell. Then when you click "Read" you should see the value of the DC cell. The only way this works is if the DSP program is actually running in the DSP and you are able to communicate with the DSP.
There are a couple of comments I want to make to help your understanding.
I am assuming you are using SPI communication to the DSP slave comms port? With SPI there is no handshaking so there is no way for SigmaStudio to actually know that the DSP is there and that it picked up the program. It is the way SPI works, nothing with our hardware. So the DSP could actually be powered down and SigmaStudio will say that the program was loaded and is active. So use the DC cell and readback trick to verify.
One other thing. use the "Read All" buttons very sparingly. Even the "Read this page" buttons on the Sigma350. If you do so make certain your project has been saved and then do not resave it. Because, it will read every register in the DSP and load it into the SigmaStudio GUI for display of the settings. When you are not communicating with the part properly then the USBi will read all zeros or all "FF" and that will change EVERY register in the part to "00" or "FF". This is why you see the core halted and other settings that you cannot change because you are not actually communicating with the part.
So if you did not save a copy of your program then you might be better to start with a new blank program so you get all the default register settings.
Let me know how this all goes and we will proceed from there. A copy of your hardware schematic will also be handy.
thank you for your answer and suggestions.
First I must admit that I screwed up the self boot part; I thought self boot would be disabled in a reset state anyways and permanently connected self boot to high.
I have broken this trace on one of the boards and shorted the selfboot pin to ground.
This was not successful. The read back cell showed zero. I have used a new sigma studio program just to be sure.
I have attached the schematic and board layout. This shows the top and bottom plane. If the power and ground planes are needed, I will upload those as well.
I am looking forward to hearing from you !
OK, so we need to step back and figure out why no communication. I am assuming you have checked all the power supplies? Is the DVDD OK?
Are you sending MCLK to the part? How does it look?
Unfortunately, I cannot read much of your schematic. The resolution is not fine enough.
It looks like you have the PLL filter components placed well on the layout. So no problem there.
Can you read any registers? Go to the configuration page, right click on the GUI for the DSP, and select "Read/Write Window". There you can read and write to registers to see if you are actually communicating with the part. If you are still not able to get this to work then it comes down to power, MCLK, ground and making certain that the reset pin is high.
Once you have this basic comms, Then check that the PLL is locked by reading the register. 0xF004
Is the clock output pin enabled? It looks like you are using it since I see a trace on the PCB to that pin. Do you have a clock on that pin and is it the correct frequency?
I will wait for your response.
I went back to check on the above questions.
DaveThib said:I am assuming you have checked all the power supplies? Is the DVDD OK?
Yes, I have checked all power rails. I have also checked that every pin on the DSP receives the according power.
DVDD is ok and present on all four pins.
DaveThib said:Are you sending MCLK to the part? How does it look?
Yes, the oscillator is right next to the DSP chip.
Looks good to me.
DaveThib said:Can you read any registers? Go to the configuration page, right click on the GUI for the DSP, and select "Read/Write Window"
I didn't really know what to do in this window, so I just entered random numbers in the byte taps, wrote them and then went to read.
It did read back numbers other than "0000" but not the ones I entered in the write section.
Rest was high.
DaveThib said:Once you have this basic comms, Then check that the PLL is locked by reading the register. 0xF004
It says PLL unlocked. I don't know if this is actually the case of if it is reading the default values because no communication is occurring - as you suggested in your first reply.
DaveThib said:Is the clock output pin enabled? It looks like you are using it since I see a trace on the PCB to that pin. Do you have a clock on that pin and is it the correct frequency?
Well, I want to use it - yes. However I still can't configure this pin.
I do have a clock on this pin at the same frequency than MCLK.
Lastly, i have attached a higher resolution version of the schematic.