【DE2-115录音实验搭建】----对wm8731芯片的进一步理解
- 实验目的
- WM8731
- 核心寄存器配置
- BCLK与LRC(遇到的大坑)
- 总结
实验目的
在DE2-115板子实现录音程序:按下KEY0按键时开始录音,松开时结束录音;按下KEY1按键时开始播放录音(录音文件用SRAM存储)
WM8731
核心寄存器配置
在配置的过程中,一定要详细看芯片手册,基本了解每一个寄存器的功能,其中体会最深的是 R4、R7、R8这三个寄存器。
R4用来选择输入的信号,注意1、不要使能BYPASS SIDETONE 2、不要忘记使能DAC
R7用来选择传输模式、数据位宽、主从模式。
最初配置寄存器的时候没有看手册,稀里糊涂跟demo一样使能了第七位,造成了bclk反转,血泪教训QAQ
R8:配置采样频率
需要注意5:2bit位,用来配置不同的ADC,DAC采样频率,具体的配置如下图,再次告诉我们看芯片手册的重要性!
其实不太理解最后一列滤波器类型是什么意思。
BCLK与LRC(遇到的大坑)
之前查资料有说看到过BCLK= 2x采样频率x采样位宽,芯片手册也提供了相关的时序图
非常地清晰明了对不对,但是当我兴致满满去写接受和发送模块的时候发现耳机出来的声音总是有噪音,用signal Tap抓取的波形张这个鬼样子
1个LRC竟然有32个BCLK,跟时序图完全对不上,于是更改各种SR的配置,结果得到的波形越来越离谱,出现了1个LRC 64个BCLK的情况。还尝试了修改位宽,但是LRC和BCLK的对应关系没有半点改变。
在对比16bit和32bit采样位宽的图发现,16bit只在前一半的LRC进行传世,32bit在整个LRC都有传输(忘记截图)
总结
刚开始做这个项目直接用正电原子的demo进行修改的,但是耳机端的声音总有杂音,中途一度怀疑芯片坏了,耳机坏了,事实证明,应该怀疑自己的脑子坏了…
在项目中最后采用48KHz的ADC和DAC采样频率,也就是说将SR的四个值保持默认值0000。取一个LRC前一半的数据,也就是16bit,写入SRAM中,并且在前一半的LRC将数据输出,最终得到录音机的效果,没有杂音。
但其实还是没能了解BCLK LRC是按照什么规律输出的,先挖个坑。