complement. We design a speech recorder which stores e.g. 30 secs then calls a
number and plays back using the DAC. We use a Cortex-M3 uC and its internal
12-bit DAC. When we receive the data we convert it. Now we have a problem that
when the signal level is normal at the microphone, we get a low level signal
via the digital output after the conversion. We have to shift this 24-bit
output to the right by 12 bits to match their DAC -> after this we get the
following values : 805 809 813 804 7FB 7F4 FFA 7FD 803 7F5 FF9 etc. How
could we get FFA FF9 values when these values are infact 7FA and 7F9……?
The ADMP441’s I2S port will output data close to full scale when the input
level is near the maximum acoustic input, or 120 dB SPL. This SPL is very loud,
so the sound that the microphone is picking up is probably well below this
maximum level. If you need to add some gain to match the signal’s full-scale
level to that of your DAC, then that’s not really a problem, and is somewhat
expected for speech signals. Speech won’t commonly be near 120 dB SPL at the
microphone, so the captured sound is going to be less than full-scale.
This Analog Dialogue article may help to explain how to use the output of a
digital microphone like the ADMP441.