I want to implement a volume control in a ADAU1452-project which shall be controlled by an Auxiliary ADC input.
In combination with a SIGMA100 and SIGMA200 DSO this is very easy, as I simply have to connect the ADC input cell to the control input of a "single slew ext vol" cell.
But with the new Sigma300 this does not work. The volume control cell expects a control signal in 8.24 format but it seems that the ADC input delivers values between 0 and 1023 in 32.0 format.
Is it now necessary to convert the ADC input signal before it can be used with the volume control cell? If so,why has this be changed?
Yes, the Sigma300's Aux ADC ranges from 0 to integer 1023 (32.0 format). Also the external control volume blocks expect a 8.24 format, where an input of 1.0 delivers unity gain. In integer terms, this needed input is 2^24. Thus we need to convert integers from 0 to 1023 (nearly 2^10) to the 8.24 format,where the number 1.0 (corresponding to unity gain in a volume control) equals 2^24 in the integer format. Two of the several conversion methods are described here:
Multiplying the Aux ADC value by 2^14 (16384) brings it to the 8.24 format value of 1.0 max. This needs to be split into two multiplies of nearly 2^7 (128), as shown below:
Lookup table method:
This method is more flexible, allowing for a dB-calibrated or "log taper" volume control. The Aux ADC's 0-1023 integer value is multiplied by 1/16 (for example), in this case producing an integer from 0 to 63. This drives a lookup table to provide suitable control values in the 8.24 format:
I tried to do the same (SigmaStudio 4.1, ADAU1452) using a shift register. Unfortunately the volume controlled channel keeps silent. I also tried to feed the volume control with a DC of 1.0 but the result is the same. Any idea what I did wrong?
What are your register settings for the serial port? Are you using an evaluation board? If so, which one?
Also, you can try sending an oscillator to the volume control and place a meter on the output of the volume control to see if you have signals and if it is working. The problem might be the codec setup or all the serial ports.
Thanks for your reply!
I'm using an ADAU1452-MINIZ eval board. The serial port seems fine. On the channel without volume control I get an output signal. I also get a signal on the "non-volume-controlled" channel if I interchange inputs/outputs 0 and 1.
Thanks for the hint with the meter. The meter indicated a signal at the output. Finally I got it working using output channels 16 and 17. I don't know what happened to output 0 but meanwhile I have a solution!