FPGA配置采集WM8731小白应用笔记 最近在调试一个项目,需要采集单路麦克风,板子主控为Kintex-7,音频芯片是WM8731,需求是接收串行的I2S协议的音频数据,做16位串并转换后输出,中间经历了一些坎坷,记录下来。 先来看看WM8731的数据手册,芯片狂徒如下: 很明显,红线表示麦克风输入到WM8731,然后输出串行的ADC数据,这个数据可以给到FPGA做传兵转换,然后FPGA将串并转换后的数据再串化,直接给到绿框的DAC,然后经过WM8731输出到耳机播放,这样一来,我们的数据也采集到了,同时也将音频播放出来,进行验证,完美方案。 下面是设计框图:
I2C配置模块负责 配置WM8731,这个其实才是这个工程最重要的地方,要根据数据手册来配置; 音频接收模块做串并转换,生成的16bit音频数据一路给到音频发送模块,音频发送模块再做并串转换,输出给WM8731将采集到的音频播放出来,已验证采集的正确性和完整性,如果耳机里听到的音频很完美,那就表明采集成功了,另一路直接输出给后端。。。 问题的关键是I2C的配置,I2C配置的关键是对数据手册的理解:
这个芯片的I2C从机有点骚气,不走常规路,别人一般都是“7bit器件地址+8bit/16bit寄存器地址+8bit数据”,这兄弟却是:“7bit器件地址+7bit寄存器地址+9bit数据”.。。。
还好,寄存器不多,一共就11个。 其中几个很重要:
这里还要注意一下I2S协议的细节:
最后,经过摸爬滚打,采集成功了,整个工程我已经打包了,可以直接拿去用,改改引脚啥的就行了; FPGA驱动WM8731实现音频环回工程源码获取链接:https://download.csdn.net/download/qq_41667729/87781868