Integrating both self-boot mode and uC control?
I currently have a system running in self-boot mode with ADAU1446 with a number of GPIO ADCs controlled by external switches and pots. I would like to control a few of these SigmaStudio parameters with a PIC microcontroller via I2C. Is it possible to have the ADAU1446 self boot and then after loading be controllable from the uC?
Audio Signal Processors
adau1446
SigmaDSP Audio Processors
Yes, once self-boot is complete, the I2C control port will be accessible from the microcontroller. You just have to make sure to have the microcontroller wait long enough (and leave the I2C bus alone) so that the self-boot operation can successfully complete.
Jerad wrote a nice application note that describes this basic system setup using the ADAU1701. It is available here: http://www.analog.com/static/imported-files/application_notes/AN-923.pdf
That application note is applicable to the ADAU144x family as well, since the self-boot and I2C port designs are practically identical.
Thanks Brett! One more question. If I have a system with two Sigma DSPs that I am going to control from a single microcontroller and each of them are self booting from their own code/eeprom, how can I distinguish between the two on the I2C bus? Is it simply a matter of naming one of the DSPs as IC_2 when setting up the code, or is something else required.
The different SigmaDSPs cannot be independently accessed unless they have unique addresses. However, they have to have the same address when self-booting. This creates a bit of an issue if you want to access them from the microcontroller after booting is complete.
One way to do this might be to have one of the SigmaDSP's GPIO pins set to output logic high in its program code. The pin could have a pull-down resistor in hardware. This means that when the system powers on, and self-boot is executing, the pin is held low, but after self-boot is complete, the pin goes high. If that pin is connected to on of the I2C address pins, then this means that the SigmaDSP will have the correct I2C address during self-boot, and its address will change after self-boot is complete, giving it a unique address for the microcontroller to address it.
A further complication is that the I2C buses to each SigmaDSP needs to be separated during self-boot, like I mentioned in my previous post. So, you might need to put some normally open silicon switches on the I2C bus that separate the SigmaDSPs from each other during self-boot, but perhaps the microcontroller can then close the switches after self-boot is complete, putting the micro and both SigmaDSPs all on the same bus (after the system has booted).
Hopefully this makes sense. It's pretty complicated. It might be easier just to buy a microcontroller with a bigger memory and have the micro boot the SigmaDSPs (thus eliminating the need for the EEPROMs and silicon switches).
Please log in to reply.