I am processing an audio signal with CS4244 codec at 24 bits and 48kHz. Every 2048 samples the FFT is calculated and its amplitude. Without input signal I get FFT values close to 30dB. With maximum input values (overflow) I get values of 90dB, with a scale of 0 to 120dB. Why not get a dynamic range of 100-110dB as is logical in a 24bit process? Any ideas? Thanks.
Try using an input of a very pure sine wave at an exact multiple of 23.4375 Hz. A sinusoid that is integer periodic in the FFT length will show a maximum magnitude FFT result for a maximum (for the data type) amplitude input. Otherwise the energy of a non-saturating input will likely get spread into multiple FFT result bins, resulting in a lower peak magnitude.