F4驱动WM8978“前奏

记录使用F4开发板驱动功放WM8978前备内容

目录

(1)WAV格式

(2)WM8978

 (3)飞利浦IIS标准

(4)WM8978相关寄存器配置

(1)WAV格式

WAV文件(WaveForm)是在PC机平台上常用的存储声音波形数字音频格式,支持多种音频数字,取样频率和声道,WAV格式文件能记录各种单声道或立体声的声音信息,并能保证声音不失真,但所占磁盘空间较大。WAV文件还原而成的声音的音质取决于采样样本的尺寸,采样频率越高,音质就越好,同时存储开销就越大。WAV文件,标识(WAVE)采用的是RIFF格式结构。至少是由3个块构成,分别是RIFF、fmt 和Data。

音频存储过程:声源发出的声波通过话筒被转换成连续变化的电信号,经过放大、抗混叠滤波后,按固定的频率进行采样(电信号幅值),接下来将其由模拟电信号量化为由二进制数表示的积分值,最后编码并存储为音频流数据。

FileSize = HeadSize(文件头部长度) + TimeInSecond(相对时间)* SampleRate(采样率) * Channels(声道数) * BitsPerSample(采样位深) / 8

WAV由若干Chunk组成,文件包括:①RIFF WAV Chunk;②Format Chunk;③Fact Chunk(不一定有);④Data Chunk。Chunk由块标识(4Bytes)、size(4Bytes)和数据组成。

(更多参考WAV_百度百科 (baidu.com)

RIFF块:

 Format块:Chunk段为16字节或另加2字节附加信息

 Fact块(线性PCM格式),可选块,一般存在于Format结构后

 data块,保存wav数据,Chunksize记录音频数据大小:

(2)WM8978

WM8978是低功耗,高质量的立体声编解码器,集成了立体声差分麦克风的前置放大器,并包括扬声器、耳机和差分或立体声线输出驱动器。片上数字信号处理包括一个5波段均衡器,通过ADC输入麦克风或线路的混合信号自动电平控制,以及一个纯数字限制功能的记录或回放。

WM8978数字音频接口具有主从两用功能。其内部锁相环可从常见的参考时钟频率(如12MHz和13MHz)为编解码器生成所有所需的音频时钟。通过IIS接口同MCU进行音频数据传输,通过两线(mode = 0 iic)或者三线(mode =1)接口配置。WM8978IIS支持多种不同的音频数据模式:MSB,LSB,飞利浦标准等。

特性:

①DAC SNR 98dB, THD -84dB;②ADC SNR 95dB, THD -84dB;

③Stereo speaker drive configuration立体声扬声器驱动

④On-chip PLL supporting 12, 13, 19.2MHz and other clocks,Support for 8, 11.025, 12, 16, 22.05, 24, 32, 44.1 and 48kHz sample rates

  上图位WM8978(D类功放)内部框图,红框为模拟开关和调节器,我们通过相关寄存器的改写可来配置增益和音量。当然,WM8978也需搭配其必要的外围电路实现目标功能。

 (3)飞利浦IIS标准

STM32通过设置 SPI_I2SCFGR 寄存器的 I2SMOD 位即可 开启 I2S 功能。

 IIS引脚:①SD串行数据,用于发送和接收两个时分复用通道数据,映射到MOSI引脚;②WS字选择,IIS左右时钟(LRCK),用于切换左右声道数据,映射到NSS引脚;③CK串行位时钟(BCK),主模式下作为串行时钟输出及从模式下输入,Fck=Fs(采样频率)x2x16(位宽);④MCK主时钟输出,时钟频率=Fsx256。

 数据跟随 LRC 传输的 BCLK 的第二个上升沿时传输 MSB,其他位一直到LSB按顺序传输。传输依赖于字长、BCLK 频率和采样率。

 F4对于IIS主时钟的配置:

MCK 输出使能时,fs 频率计算公式如下: fs=I2SxCLK/[256(2I2SDIV+ODD)] Khz,I2SxCLK=(HSE/pllm)*PLLI2SN/PLLI2SR,已知条件HSE=8M,pllm默认为8,可得Fs= (1000xPLLI2SN/PLLI2SR )/[256x(2xI2SDIV+ODD)]。PLL2SN 取值范围:192~432;PLLI2SR 取值范围:2~7;I2SDIV 取值范围:2~255;ODD 取值范围:0/1。

(4)WM8978相关寄存器配置

WM8978在1.5倍的升压级下,上电初始化顺序:

1. Turn on external power supplies. Wait for supply voltage to settle.
2.  Mute all analogue outputs.  
3. Enable unused output chosen from L/ROUT2, OUT3 or OUT4. If unused output not available,  chose one of these outputs not required at power up.  
4. Set BUFDCOPEN(专用缓冲器的直流电平转移输出阶段)= 1 and BUFIOEN = 1 in register R1. 设置模拟放大器
5. Set SPKBOOST = 1 in register R49.  (1 = speaker gain = +1.5;  DC = 1.5 x AVDD / 2)
6. Set VMIDSEL[1:0] to required value in register R1(电流消耗最小化,使能锁相环). Wait for the VMID supply to settle.   
7. Set L/RMIXEN = 1 and DACENL/R = 1 in register R3.  使能左右声道混合器
8. Set BIASEN = 1 in register R1.模拟放大器偏置控制
9. Set L/ROUT2EN = 1 in register R3.  使能声道输出
10. Enable other mixers as required.  
11. Enable other outputs as required.  
12. Set remaining registers. 配置其他剩余寄存器

寄存器相关应用配置总结:

R0寄存器(00H)控制 WM8978 的软复位,写任意值到该寄存器地址
R1寄存器(01H)设置 BIASEN(bit3),模拟放大器打开
R2寄存器(02H)设置 ROUT1EN(bit8),LOUT1EN(bit7)和 SLEEP(bit6)使能耳机输出
R3寄存器(03H)设置 LOUT2EN(bit6),ROUT2EN(bit5),RMIXER(bit3)等使能左右声道混合器
R3寄存器(04H)设置 WL(bit6:5)和 FMT(bit4:3),IIS飞利浦模式
R6寄存器(06H)设置0,即 MCLK 和 BCLK 都由外部提供
R10寄存器(0AH)设置 SOFTMUTE(bit6)和 DACOSR128(bit3)等,配置SNR,关闭软件静音
R43寄存器(2BH)设置 INVROUT2 为 1 即可,反转 ROUT2 输出,优化驱动喇叭
R49寄存器(31H)设置 SPKBOOST(bit2)和 TSDEN(bit1),配置喇叭增益
R50(32H)和 R51(33H)配置左右DAC接入左右声道混合器
R52(34H)和 R53(35H)更新设置耳机音量
R54(36H)和 R55(37H)更新设置喇叭音量


版权声明:本文为m0_63741844原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。