I'm using Basys3 board and two pomdMic3 devices to read and analyze sound data. I played sound source of specific frequencies (generated by Matlab) to these two pmodMic3. The SCLK of pmodMic3 were set as 5MHz, and one sample(for each mic) of data would be sent to PC every 400ns. Then I exported the captured data and converted to decimal, and I got the following results:
Test 0: In this test, I played a sound source of 1kHz, first 75dB for 4s, then 110dB for 4s, then 75dB for 10s, and I got the result (simply converted binary data captured from pmodMic3 directly to decimal):
Test 1: In this test, I was still playing a sound source of 1kHz, first at 110 dB, then 75dB, then 110dB again, then 75dB:
Test 2: In this test, I played sound source at 90dB, first 500 Hz, then 1KHz, then 3KHz:
So basically my questions are:
1. Why do these two pmodMic3 devices give such different results? I already adjusted the potentiometer to the same position, and I did notice one of them was not responding properly (while the other one performed as expected) when I test on board.
2. When I tried different volume of the sound source, the absolute decimal value does not change accordingly. Since I referred the following transfer characteristic of the ADC used for pmodMic3:
I was expecting higher volume would result in higher analog input, and therefore larger ADC code. So how do I supposed to tell the volume information from the exported ADC code?
3. Can I also get the frequency information of the sound source from the ADC code or do I have to do FFT (or such) to further process the data?
4. I'm just using PC as the power supply of the board for now, and I'm not too sure how stable is it, would using external power supply help getting more accurate results?
Thanks in advance!!