Change parameter before selfboot is enabling audio output - ADAU1452
Hello,
we use selfboot to run the DSP program and at the moment we have the problem that the volume and mute are written by the uC over I2C which works fine but at boot-time the selfboot loads the parameters from the selfboot-programm and is only updated by the uC later on.
We have the situation that our products are fine-tuned at the consumer site and therefore we flash at the last moment the final Sigma Studio program to the DSP. To setup the correct volume at flash-time would be very inconvenient and error-prone.
Our boot sequence is:
we boot the uC
wait untill the DSP is booted (DSP is setting a pin when booted)
correct the Volume and Mute parameter from uC via I2C
Now we have the issue that generally the volume is flashed with a high level (caused by the setup scenario at the consumer site) and we want to boot the system with a low level (this causes the Volume to be high for a short time and then is setup to the correct volume).
Is there a way to force the DSP to unmute and/or set volume only after a specific I2C message has been received or to read the volume and mute from a predefined value at selfboot-time (e.g. store volume/mute value in EEPROM and the volume/mute read it from there)? How would you solve the issue?
Kind regards
Audio Signal Processors
adau1452
i2c
mute
SigmaDSP Audio Processors
volume control
selfboot
Show More
Hello logoho,
The default settings are the settings that are current when the project is compiled and then that is what is stored in the EEPROM. I understand that you will not be able to ensure that the customer/installer will remember to set the volume down before compiling. So you are looking for more of a fool-proof solution.
I have two strategies. One is really simple but It might not be the best solution but that depends on your software, the other relies on a hardware change that might not be possible at this time.
So I setup a project with both methods shown. I hope this is not too complicated of a project. It also shows how to do a look-ahead mute and look ahead compressor so you can ignore those features of this project and is not needed for your issue. (it was a project I built a while back)
The easy method uses an externally controlled volume control. External means external to the cell not the DSP, but it can be connected to an external source. So the control pin for the volume control is connected to the output of a DC cell. So this is set to 0. This means that it will power up with the volume control off. Then all you need to do is write to the DC cell with the uC and set it to "1" in 8.24 format and the volume will slew up.
I foresee an issue if the installer is recompiling and the controller is unaware of it then they will lose the audio until the uC changes the DC cell. You do not want to have the installer change this cell. In fact, you should either place this circuit into a hidden hierarchy board or just disable the control so they would need a password to make changes. Right click on the control to pull up the menu and select "Disable Control". It will still be able to be changed by the uC.
The second method uses a GPIO pin. I set it up so that it inverts. Usually it is easier to have a pin float high at power-up and most GPIO outputs of controllers also float high before they boot up so this should ensure it comes up muted until everything wakes up. Then pull the GPIO pin low and the volume control will unmute. See my notes in the project for more details.
Let me know if this works for your application.
Dave T
ADAU1452 GPIO Controlled Look-Ahead Mute-GPIO Inverted.zip
Please log in to reply.