WM8978 —— 带扬声器驱动程序的立体声编解码器(5)

接前一篇文章:WM8978 ------ 带扬声器驱动程序的立体声编解码器(4)

九、寄存器概览与详解

1. 整体概览

WM8978芯片共有58个寄存器,整体总表如下:

2. 详细说明

在此,只介绍WM8978较为常用的那些寄存器。

(1)寄存器0 ------ Software Reset

(2)寄存器1 ------ Power manage't 1

(3)寄存器2 ------ Power manage't 2

(4)寄存器3 ------ Power manage't 3

(5)寄存器4 ------ Audio Interface

(6)寄存器5 ------ Companding ctrl

此寄存器默认无需设置。

示例代码:

cpp 复制代码
WM8978_Write_Reg(5, 0x00);

注:

示例代码中由于设置的值为0x00,与默认值相同,因此可以不必写这一句代码。

(7)寄存器6 ------ Clock Gen ctrl

此寄存器全部设置为0,即设置MCLK和BCLK时钟源都来源于外部。本例时钟源来自于STM32F4 芯片。

示例代码:

cpp 复制代码
//MCLK由外部提供
WM8978_Write_Reg(6, 0x00);

(8)寄存器10 ------ DAC Control

此寄存器需要设置SOFTMUTE(Bit6)和DACOSR128(Bit3)这两个位,其中SOFTMUTE位设置为0,即关闭软件静音;DACOSR128位设置为1,即DAC得到最好的SNR。

示例代码:

cpp 复制代码
//SOFTMUTE关闭,128x采样(最佳SNR)
WM8978_Write_Reg(10, 1<<3); 

(9)寄存器14 ------ ADC Control

此寄存器需要设置ADCOSR128(Bit3)这个位,ADCOSR128位设置为1,即ADC得到最好的SNR。

示例代码:

cpp 复制代码
//128x采样(最佳SNR)
WM8978_Write_Reg(14, 1<<3);

(10)寄存器43 ------ Beep Control

此寄存器需要把INVROUT2位置1,即反转ROUT2输出,这样以使于更好地驱动喇叭。

示例代码:

cpp 复制代码
//INVROUT2反向,驱动喇叭
WM8978_Write_Reg(43, 1<<4);

(11)寄存器47 ------ Left ADC Boost ctrl

此寄存器可以把PGABOOSTL位置1,以使左通道MIC获得额外20dB增益。

示例代码:

cpp 复制代码
//设置PGABOOSTL,左通道MIC获得20dB增益
WM8978_Write_Reg(47, 1<<8);

注:

由于PGABOOSTL默认值为1,因此可以不用写这一句。如果要设置的值并非默认值,则需要写此一句代码(当然值就不是0x100了)。

(12)寄存器48 ------ Right ADC Boost ctrl

此寄存器可以把PGABOOSTR位置1,以使右通道MIC获得额外20dB增益。

示例代码:

cpp 复制代码
//设置PGABOOSTR,右通道MIC获得20倍增益
WM8978_Write_Reg(48, 1<<8);

注:

由于PGABOOSTR默认值为1,因此可以不用写这一句。如果要设置的值并非默认值,则需要写此一句代码(当然值就不是0x100了)。

(13)寄存器49 ------ Output ctrl

此寄存器需要设置SPKBOOST(Bit2)和TSDEN(Bit1)这两个位。SPKBOOST位用于设置喇叭的增益,可以设置为0 ,如果想获得更大的声音,则设置为1;TSDEN位用于设置过热保护,

如果需要开启过热保护,则设置为1,不开启设置为0即可。

示例代码:

cpp 复制代码
//设置TSDEN,开启过热保护,SPEAKER BOOST,1.5x 
WM8978_Write_Reg(49, 0x03<<1);

更多寄存器说明请看下回。

相关推荐
Jason_zhao_MR12 小时前
如何板端编译OpenCV并搭建应用--基于瑞芯微米尔RK3576开发板
人工智能·嵌入式硬件·mcu·opencv·物联网·计算机视觉·嵌入式
优信电子19 小时前
基于STM32F103驱动SI5351 3通道时钟信号发生器输出不同频率信号
单片机·嵌入式
DIY机器人工房20 小时前
开发板RK3568和stm32的异同:
嵌入式硬件·嵌入式·diy机器人工房
Skylar_.2 天前
嵌入式 - 数据结构:哈希表和排序与查找算法
数据结构·算法·嵌入式·哈希算法·散列表
DIY机器人工房2 天前
一个程序通过 HTTP 协议调用天气 API,解析 JSON 格式的天气数据,提取关键信息并格式化输出:日期、天气状况、温度范围、风向、湿度等核心气象数据。
嵌入式硬件·嵌入式·diy机器人工房
DIY机器人工房2 天前
一个基于 epoll 实现的多路复用 TCP 服务器程序,相比 select 和 poll 具有更高的效率
开发语言·嵌入式硬件·php·嵌入式·diy机器人工房
酷飞飞3 天前
ADC常用库函数(STC8系列)
单片机·嵌入式硬件·51单片机·嵌入式·stc8
HW-BASE3 天前
C语言的结构体与联合体
c语言·单片机·嵌入式·编程·c
HW-BASE3 天前
C语言控制语句练习题1
c语言·开发语言·单片机·算法·嵌入式·c
思绪漂移4 天前
从博客到播客:文本转音频的全流程技术点
人工智能·音频·腾讯云·信息传播