接前一篇文章:WM8978 —— 带扬声器驱动程序的立体声编解码器(3)
九、寄存器概览与详解
1. 整体概览
WM8978芯片共有58个寄存器,整体总表如下:
2. 详细说明
在此,只介绍WM8978较为常用的那些寄存器。
(1)寄存器0 —— Software Reset
此寄存器功能用于控制WM8978的软件复位,写任意值到该寄存器地址,即可实现WM8978 的软件复位。
ADDR B[15:9] | REGISTER NEME | B8 | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | DEF'T VAL | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
DEC | HEX | (HEX) | ||||||||||
0 | 00 | Software Reset | Software Reset |
示例代码:
//软复位WM8978
WM8978_Write_Reg(0, 0x00);
(2)寄存器1 —— Power manage’t 1
此寄存器需要使能BIASEN(Bit3)位,该位置 1,模拟部分的放大器才会工作,只有使能了该位才可以听到声音。
示例代码:
//MICEN设置为1(MIC使能),BIASEN设置为1(模拟器工作),VMIDSEL[1:0]设置为11(5K)
WM8978_Write_Reg(1, 0x1B);
(3)寄存器2 —— Power manage’t 2
此寄存器需要设置ROUT1EN(Bit8)位、LOUT1EN(Bit7)和 SLEEP(Bit6)这三个位, ROUT1EN和LOUT1EN位设置为1,使能耳机输出。SLEEP设置为 0,进入正常工作模式。
示例代码:
//ROUT1、LOUT1输出使能(耳机可以工作),BOOSTENR、BOOSTENL使能
WM8978_Write_Reg(2, 0x1B0);
(4)寄存器3 —— Power manage’t 3
此存器需要要设置LOUT2EN(Bit6)、ROUT2EN (Bit5)、RMIXER(Bit3)、LMIXER(Bit2)、DACENR(Bit1)和 DACENL(Bit0)这6个位。其中,LOUT2EN和ROUT2EN位设置为1,使能喇叭输出;LMIXER和RMIXER位设置为1,使能左右声道混合器;DACENL和DACENR 位设置为1,使能左右声道的DAC。
示例代码:
//LOUT2、ROUT2输出使能(喇叭工作),RMIX、LMIX使能
WM8978_Write_Reg(3, 0x6C);
(5)寄存器4 —— Audio Interface
此寄存器需要要设置WL(Bit6:5)和FMT(Bit4:3)这4个位。WL(Bit6:5)用于设置字长,即音频数据有效位数。00表示16位音频,10表示24位音频;FMT(Bit4:3)位用于设置IIS音频数据模式,这里设置为10,表示使用飞利浦模式(IIS)。
示例代码:
WM8978_Write_Reg(4, 0x50);
注:
- 此(Audio Interface)寄存器的默认值为0x050,也即默认的WL(Bit6:5)为10,表示字长为24位;默认的FMT(Bit4:3)为10,表示使用I2S(飞利浦)模式。
- 示例代码中由于设置的值为0x50,与默认值相同,因此可以不必写这一句代码。如果要设置的值并非默认值,则需要写此一句代码(当然值就不是0x50了)。
更多寄存器说明请看下回。