ADAU1701 - custom design with selfboot + ext uC i2C control and WB
Hi. I'm starting a new design for a battery operated device, using ADAU1701 in selfboot mode + uC to manage display/touchscreen/bluetooth/... maybe later, if I have time, I will not assemble the eep and boot ADAU1701 directly from my uC (but that will be another story...)
The main idea is to control ADAU1701 from my uC after selfboot (controling pins: reset/selfboot/WP/WB/i2C). At startup ADAU is reseted from uC, after uC startUP it will release ADAU reset, selfboot high + WP high to allow selfboot operation. After SelfBoot operation, SelfBoot pin goes low to allow uC to control volume from ADAU (only volume level as a start...).
now thge questions:
1 - how to calculate selfboot time (after eep capacity is known) - or will it be better to pull a GPIO high from ADAU so uC can assume selfboot is finished?
2 - how to control volume level after selfboot sequence from uC?
3 - if I want to store the volume level in eep, to reload it next time, what's the sequence? I'm only planning to do so before the uC enters sleep mode (either by low bat, or user pushbutton). not from any power failure -> before entering sleep mode the uC controls pins selfboot high again, WP low + WB high? is this correct?
4 - is it possible to do some kind of "debug" from ADAU to uC, so uC can "know" some more info from what ADAU is doing?
Thanks to all.
Audio Signal Processors
SigmaDSP Audio Processors
adau1701
Hello aMartins,
Question 1:
It is best to use a GPIO that is pulled low in the DSP program. This is because when the DSP is held in reset all the pins are set to high impedance inputs so they will float high. Then when the DSP program starts up it will pull the pin low.
Note, you do not have to change the selfboot pin. You can talk to the part with the pin set high, you just have to wait for it to finish booting.
2) The volume control is just a gain factor number. ! will be full gain and 0 will be muted. 0.5 will be 6dB down. The Wiki help file is actually handy for this topic.
https://wiki.analog.com/resources/tools-software/sigmastudio/toolbox/volumecontrols/singlevolume
3) You should not have to use the Writeback feature. Just keep the current volume stored in your micro and restore it when you boot up again. I guess since it is only before sleep mode or when the user initiates the shutdown, then just read the level, mute the audio and go to sleep.
Suggestion. The Capture window in SigmaStudio shows you how SigmaStudio communicates with the DSP when the DSP program is running. This is exactly how your controller will do it. There is a lot about this part on the forum so search around and you will find a lot.
4) Yes, there is a lot you can do but it depends on what is important to you? You can setup an oscillator going to a GPIO pin to output a heartbeat so if it goes away there is an issue.
You can read back audio levels to monitor the level. If you have compressors that have a Gain output pin, You can send that pin to a readback cell and read it to see how much gain reduction is going on. You can have meters. You can use the signal presence block to give you a GPIO to know if there is a signal present. You can also send it to a readback cell and read the output of the signal presence block. So it is almost up to your imagination as to what you want to do. You may run into limitations for MIPS usage or for the amount of communication you want to do.
Dave T
Thanks once again Dave.
Your answer were very helpfull: also I we just received our devboard and will start playing with it and get a more clear picture...
Another point I did not yet find on the forum is about ADAU1701 power supply type... as we're designing a battery powered device, energy consumption is a very big concern: so is it ok to use a switched power supply for 3,3V on ADAU1701 instead of LDO? as there are a uC + BLE module on this device I've planned to add a separate PSU to the 1701...
Please log in to reply.