Several adau1701 and E2prom in the same SigmaStudio project
Hi
I am working on a 1701 project and i would like a confirmation that my concept is doable.
Lets say that i have an I2C bus with two 1701 , two E2prom and an MCU, all in different addresses .
Can i configure them all from the same project of SigmaStudio and download the code for DSP 1 at E2prom 1 and the code for DSP 2 at E2prom 2 ?
The idea is , during boot time, the MCU simply read from E2prom 1 and write to DSP 1 and then read from E2prom 2 and write to DSP 2 ?
Thank you in advance
Audio Signal Processors
SigmaDSP Audio Processors
adau1701
hello,
I am using one MCU, one DSP and one e2prom. The DSP is in self boot mode and so load is own code from the e2prom. then after the boot (less than few seconds) the MCU can communicate with the DSP without trouble. I think it can be a solution with 2 DSP and 2 e2prom also.
Hello Norman , thanks for the reply
When you use only one DSP everything is easy and Straightforward ....
But in the selfboot mode, the adau1701 always listens at 0x68 address (ADDRx pins ignored ) and looking for boot E2prom at 0xA1 ... so you can't have two or more ADAU1701 in selfboot mode, hooked in the same I2C bus because of address conflict ...
SigmaStudio seems to supports multi DSP and multi E2prom configurations but i didn't find a way to associate a specific DSP with a specific E2prom
so i wondering if that is doable and how ...
P.S. i am not very proud for my English :-)
hello,
indeed, i didn't thought of the 0x61 i2c address story... Maybe, with self boot mode, depending on your MCU, you can have 2 separated i2c bus on the MCU to control each dsp, but sound a little complicated.
I don't really know how, but it must be possible to do what you first want to do when the DSPs are not in self boot mode and get their software from the MCU. but I didn't see lot of information in the datasheet.
Hello,
When you have your micro read the DSP code from an E2PROM and then load it into the -1701, you're not really self-booting each -1701 -- thus let your uC boot the -1701s, and the fixed self-boot address doesn't apply.
Perhaps the best way to boot your -1701's is to store their code in huge byte constants within your uC's C source, then have the uC boot them directly. Many modern uC's have more than enough internal flash for this. It's not hard to get the needed -1701 / 1401 boot code from the Sigmastudio export files (this is more difficult for the more advanced SigmaDSPs}. Please see Updating SigmaDSP Parameter with a Microcontroller for a description of the two possible methods.
Where I work we designed a device with a PIC micro and six -1701s, three on each of its two I2C buses.
BTW -- Your English is way better than my Greek!
Kai' me' yeia sas
Bob
Hello Mkatsaragakis,
Bob is exactly right. It would be best to not have any of the 1701's in selfboot mode. Just have the MCU boot then up one at a time. However, let me explain a few things for you and for others who may read this in the future.
In Selfboot mode it is really designed for one DSP and one EEPROM. This is why when you are in selfboot mode the address of the part becomes fixed, (the address pins are ignored), and there is only one address for the EEPROM.
So with the part NOT in Selfboot mode, in I2C mode, you can set four unique addresses for the DSP. So the MCU can directly talk to four different DSPs with your MCU. So you then could individually address each DSP and boot them up one at a time.
For SigmaStudio you should still place an EEPROM in the design even if you actually do not have one in hardware. This is because if it is there in the SigmaStudio project, then when you compile the project it will generate a hex file for the EEPROM. If you do not have one in the project then the file is never generated. You can then take that file, along with other files when you create the system files, to create the code for your MCU.
Above you will see an example of what your configuration will look like in SigmaStudio.
See the app note for details: http://www.analog.com/media/en/technical-documentation/application-notes/AN-1006.pdf
You have to manually set the address of each part using the pull-down boxes.
If you have more than four parts then you will have to create more I2C busses and gate them using I2C bus repeaters. This is what Bob did to program six parts. Well, I am not sure if he used repeaters but he used two I2C busses.
Now, if you are using SPI, then some of this is easier. For instance, you could pull down all the SS lines and write to all the DSPs at one time. So you would boot them all up at once. The down side is that you have to deal with the extra slave select lines. The USBi has to be modified. This is mentioned in the AN-1006 in the link I gave earlier.
Our SPI implementation is a bit more complicated than just a SS line. There is actually a chip address and so you can have two DSPs on one slave select and still be able to individually "talk" to them. Then you would not be able to do the trick of booting them all at one time.
If the programs are exactly the same then you could write to the same control in all DSPs at one time. Might be handy for emergency mutes etc.
Now back to I2C, The downside to this common buss is that you cannot use the Interface Write and Interface Read functionality. Because they would all be trying to read and write to the same EEPROM at the same addresses. There is no work around for that.
Enough for now...
Dave T
Hello and thank you all for your replies.
it's clear for me how the 1701 reacts in self boot mode ...
its also clear for me (i think ) how to boot the 1701 with an external MCU . To do so , i have to create the SigmaStudio Project , compile it , then i have to take the DSP code from SigmaStudio and inserted to my MCU code , and then compile and download the new code to my MCU ....
that means , every time i change the SigmaStudio Project , i have to compile and download new program for MCU . That is what i want to avoid.
so my idea is this
hook up in the I2C bus two 1701 (NOT in selfboot mode), DSP1 at 0X68 and DSP2 at 0X6A.
also hook up two E2proms, E2prom1 at 0XA0 and E2prom2 at 0XA4 , and of course my MCU
My MCU will contains a program that simply take the data from E2prom1 and put it to DSP1 and then take the data from E2prom2 and put it to DSP2 .
in order to do that , AND HERE IS MY QUESTION , i must be able , in a SigmaStudio project that contains two DSPs and two E2Proms , to tell the SigmaStudio
for DSP1 "Write the latest compilation to E2prom" at E2prom1
and for the DSP2 "Write the latest compilation to E2prom" at E2prom2
Is that possible for SigmaStudio? In a multi DSP, multi E2prom, SigmaStudio project can i download the code for any individual DSP to an individual E2prom?
If that is possible , the advantage of the concept is that you don't need to recompile and download the MCU code every time you change the SigmaStudio Project ... simply download the code of each DSP το corresponding E2prom as easy as in the self boot mode.
Thank again for your time ...
Please log in to reply.

