I am working with a DSP that takes audio input from a digital microphone. For the sake of this discussion all input sounds are pure sinewaves.
The DSP receives microphone data as 24-bit numbers. Let's say the mic datasheet says its sensitivity is -37 dBFS at 94 dBSPL. This would mean, if there is a very loud sound input in the microphone such that the microphone gives out the maximum possible value that it can (this I am assuming is bit sequence that is all 1s), and we consider it to be 1.0, at a sound input of 94 dBSPL, the mic would be giving out a value equivalent to 10^(-37/20) = 0.014125375446228
If I was representing these fractional values using fixed point 24-bit numbers (with no integer bits), the very loud sound I mentioned earlier would be represented by 1111_1111 1111_1111 1111_1111 = 0xFFFFFF while the 94 dBSPL sound would be represented by 0x01CEDC. The microphone data that comes into DSP memory is sampled at 48000 Hz and 64 audio samples come in every cycle.
Would it be correct to say that this means if the mic input was the very loud sound, I would see audio samples with a peak at 0xFFFFFF in the DSP memory, and for the 94 dBSPL, I would see audio samples with a peak at 0x01CEDC? Or are the actual values seen in the DSP memory irrelevant to the microphone's specifications?
I have actually given a sinewave digital mic input using audio testing equipment to the DSP's digital mic input pins, where the equipment has the option to set the level of sound input in dBFS. I have seen that my assumption above is not really correct, but I don't know if I did something wrong in the experiment either. Hence I would like to hear some more professional opinions.