I have a question as how to best implement a realtime up/down volume control function with the ADAU1761. We are developing a battery-powered communications product using the ADAU1761 as the main audio DSP, and we have a microcontroller with on-board flash which will boot the ADAU1761. We have push-buttons going to the GPIO of the MCU, and the MCU connects to the DSP via the I2C bus and 4 available GPIO's. Considering that we need to store the last volume setting in flash before power-down, which scenario makes more sense?
1.) ADAU1761 Output Mixers - The button signals would be processed by the MCU, with an up/down volume function and lookup table. When a volume change was detected, the MCU would write to the appropriate DSP output mixer register, such as R31: Playback Line Output Left Volume Control, 16,421 (0x4025). It would also store the last volume setting in flash, so it could be recalled after power-down.
2.) ADAU1761 DSP Volume Block - The button signals would go to the DSP GPIO (either directly or passed on by the MCU), and an Up/Down Control w/ Lookup and Clickless SW Slew volume control would be put in the SigmaStudio schematic.
I read that audio clicks/pops can occur if the control registers are written to in real time, so would the first scenario cause audio artifacts? In the second scenario, the audio performance would be very good, but I do not know how store the DSP volume setting back in the MCU. Is there an addressable register for volume control done within the DSP? In the SigmaStudio help, there is mention of the 'interface registers' and the Interface Read/Write block, but I can't seem to find many design examples.