现在在用DE2板子测试我自己写的一个I2S控制器,需要用到DE2上的WM8731。遇到的问题是,波形按照预期输出但是没有声音。问题可能出现在下面几个地方:
1 所采用的音频数据文件是PCM格式的,16bit 双声道 48KHZ采样率。但是由于我的I2S模块内部都是32bit宽的,所以就先将16位数复制扩展成32位之后串行输出到WM8731了。例:pcm左声道数据 0xabcd 扩展后 0xabcdabcd
pcm右声道数据 0xcdef 扩展后 0xcdefcdef
同时,将wm8731的接收端位宽设置成了16bit的。
2 采样率。由于de2的PLL不能产生12.288MHZ的时钟,只能产生12.234MHZ时钟。将其作为MCLK,分别给I2S模块和Wm8731。I2S经过4分频,为输出每一位的时钟BCLK,在经过64分频,为输出一组左右声道数据的选择信号WS。之后将WS和BCLK以及串行数据输出给WM8731。另一方面,将WM8731的寄存器按照12.288MHZ时的MCLK输入配置成ADC和DAC采样率均为48KHZ。
总的来说,还是对WM8731寄存器及采样率概念不清晰。请大侠们指点一下。
|