ADAU1442 - parameter ram position and Selfboot EEprom?
Hello!
I have build an ADAU1442 AudioSystem, the hardware is working fine with SigmaStudio and Selboot from a EEPROM.
In my structure i have 5 IIR Filter in series for every channel of audiodata. I have to change the coefficents of every IIR Filter with an external Microcontroller.
The coefficents have to be generated with SigmaStudio or Matlab. And store it in the MCU. That isn't a problem...
I want to make the Bootsequence like this
on power up
-> ADAU Selfboot from EEPROM
to change the parameters
-> MCU stores new parameters to EEPROM
-> MCU stores new parameters to the ADAU's Parameter RAM (adresses of the coefficents are known)
is this the best way?
I think about it,
- because of an powerloss the system boots with his last parameter
- The MCU can get the actual state of the filters from the EEprom.
- There is no Writebackfeature on the ADAU1442 so the MCU have to do the job
My Problem is to define the parameter position in the EEPROM Data. Is there any Information about it? Any change in SigmaStudio like delete a trace and put it on THE SAME position will change the position of the parameter's in EEPROM.hex!
I don't know how i will solve the Problem to find the correct position of the parameter data in the EEPROM.
Anywhere is there any Information about the position in the P-Ram to the Filter number. Is this variable? I see in Sigma Studio that for example filter0 has sometimes adresses in RAM from 0x08 to 0x12 and on any change and new compile they can be on an other adressrange?!
Thank you for your help.
Greets Moritz Bente
Audio Signal Processors
adau1446
eeprom
microcontroller
adau1442
parameters
SigmaDSP Audio Processors
parameter
ram
selfboot
self-boot
Show More
In general, I'd recommend that if you have a microcontroller in your system, you use that for booting and controlling the SigmaDSP rather than selfbooting from an EEPROM. Please see this thread for a further discussion about this question. What you're describing can be done, but your system design will likely be much easier and more straightforward if you just use the microcontroller rather than try to have multiple masters living on the same I2C bus. Any data that you're thinking of writing to the selfboot EEPROM is already in the microcontroller, so wouldn't it be easier just to save the data there rather than trying to change the data in the EEPROM?
Hei !
Thank you very much for the intention! I did it and it work fine. But,...
In my Case i havent enough space on the micro so i have to save all the data in the external EEPROM. So let's have a look on the coefficents. How will i know where in the RAM i have to place the the coefficent's for the filter. In Example, i want to change the parameters of gen filter1_0.
I think about to make a struct for every filter like this:
struct filter{
4 Byte b0;
4 Byte b1;
4 Byte b2;
4 Byte a1;
4 Byte a2;
2 Byte ram_adress;
}
Now i could make an filter array for every channel. And realize a flexible Filterstructure. Nearly the structure in SigmaStudio you see in the attachment
Is this correct?
What is the Adress in Parameter RAM?
Anywhere when i change the Structure in Sigma Studio there is another RAM adress, i think..
I have to design a system that will be robust and flexible so i have to understand how the relation between parameter ram and filters are. Now there are only IIR Filters but maybe in future there have to be a volume control in series to every channel. I want design a system that can make this changes easily happens.
Thank you very much!!!
Greets
Hello!
I still have problems to boot up the DSP from the MCU.
Is it possible to load the parameter ram data and programm data not in a standalone datastream? I have to copy the data from the external eeprom into the MCU and then write it in the dsp. But i can't save 2700 bytes in the MCU's Ram.
So can i write it 8 Bytewise, for example?
If i compile a simple programm with SigmaStudio and write the data complete from the MCU's RAM in one datastream it works fine.
Thank you very much for your help.
Moritz Bente
You can write any number of words to the SigmaDSP at one time. Each write you do must write a full word to the target address, which means that register controls will be a 2-byte write/word, program words are a 6-byte write/word, and parameters are a 4-byte write/word. You can use the burst write feature to write data to continuous address locations without re-writing the register or RAM address bytes.
Hello JeradL!
Thank you very much for this helpfull information. It was a little bit counfusing me that on adress 0x0000 are 4 bytes of data. And the next 4 byte have to on 0x0001! So on with 6 Bytes in program ram... That's it!!
Excellent and competent support thank you!
Greets Moritz Bente
Please log in to reply.