我一直在玩一些带有I2S接口的数字麦克风。我设法让它工作(Arduino板与小I2S mems板)。至少,我想我做到了。
在阅读I2S规范或麦克风数据表时,我似乎无法找到以下简单问题的答案; 1.数字值代表什么? 2.如何将数字值转换为dbFS(后来又转换为dbSPL)?
SPH0645LM4H-B(Knowles)麦克风似乎输出所有负值(?)。我读到你需要的地方"减去中点"消除大的直流偏移?! 另一方面,Invensense的支持工程师向我解释说,ICS-43434输出正值和负值,它们代表信号相对于+/-满量程的幅度"
我希望I2S成为标准;不是这样的情况......?
答案 0 :(得分:2)
你必须保存数字化数据的每个样本,当转换为十进制时,这个24位的字会给你一个电压。此电压是您计算RMS值所需的电压,然后计算您的db SPL。
你使用哪个arduino板来使其工作?大多数arduino都没有I2S通信,我认为Arduiino Zero和MKR是可用于接听的。如果使用具有浮点,32位处理器,DMA等的STM32微控制器,您将获得更好的性能。