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

2024-03-23 07:28

本文主要是介绍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

此寄存器默认无需设置。

示例代码:

WM8978_Write_Reg(5, 0x00);

注:

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

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

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

示例代码:

//MCLK由外部提供
WM8978_Write_Reg(6, 0x00);

(8)寄存器10 —— DAC Control

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

示例代码:

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

(9)寄存器14 —— ADC Control

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

示例代码:

//128x采样(最佳SNR)
WM8978_Write_Reg(14, 1<<3);

(10)寄存器43 ——  Beep Control

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

示例代码:

//INVROUT2反向,驱动喇叭
WM8978_Write_Reg(43, 1<<4);

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

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

示例代码:

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

注:

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

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

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

示例代码:

//设置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即可。

示例代码:

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

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

这篇关于WM8978 —— 带扬声器驱动程序的立体声编解码器(5)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/837577

相关文章

手机扬声器音量总是不够大?试试“扬声器助推器”吧

手机的扬声器音量总是不够大,尤其是在嘈杂的环境中,音乐和视频的声音总是不太清晰。直到我发现了这款“扬声器助推器”,我的手机音质瞬间提升了好几个档次。 软件简介: “扬声器助推器”利用先进的音频处理技术,能够提高手机扬声器的音量,让声音更加清晰响亮。此外,还可以设置最大允许增强量,避免音量过大损坏扬声器。 版本特点: 提升音量效果显著,音质清晰。可以自定义最大增强量,保护扬声器。 使用体

C#通过ACE OLEDB驱动程序访问 Access和 Excel

ACE 代表 Access Connectivity Engine。它是 Microsoft 提供的一组组件,用于访问和操作 Microsoft Access 数据库以及其他类似的文件格式,如 Excel 工作簿。ACE 主要包括以下几部分: ACE OLEDB 驱动程序:用于通过 OLE DB 提供程序访问 Access 数据库和 Excel 文件。例如,Microsoft.ACE.OLED

ubuntu24.04 为什么扬声器没有声音,但是戴上耳机有声音

扬声器在 Ubuntu 24.04 下没有声音,但耳机有声音,可能是由于以下几个原因造成的: 1. 输出设备设置问题 系统可能将默认输出设备设置为耳机,而非扬声器。你可以检查或更改音频输出设备: 打开“设置” -> “声音”。在“输出”部分,查看默认输出设备是否是扬声器。如果不是,请手动选择扬声器作为输出设备。 2. 静音或音量设置问题 扬声器的音量可能被设置为静音或过低: 在“声音”

随手记(2)-java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序

问题描述: 在使用Java连接access数据的.mdb文件时候程序报如下错误 java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序     错误原因: 在win7 office2013下报错 解决方法:  查看Java桥连程序连接字符串是否写成{Microsoft Access Driver (*.m

如何检查电脑驱动程序

PC电脑有很多选择,从键盘到硬盘,还有众多的内部和外围组件,使您的PC。每个硬件需要驱动程序。驱动程序帮助与硬件上的软件进行通信。如果没有驱动程序时,Windows不会告发' T是能够发送和接收命令到新的打印机你有,这是很容易被发现他们在你的系统设置来检查这些驱动程序。找到他们,并找出如果你需要任何更新。微动力电脑教程 说明 一 在您的桌面菜单左下角选择“开

HT97230 具有3D环绕和低音增强功能的125mW免输出耦合电容的立体声线路驱动器1耳机放大器

特点 可调节的3D环绕功能 可调节的低音增强功能 输出无需隔直流电容 卓越的低音效果! 无咔嗒/噼噗声 低THD+N:最低0.001% 低噪声,VN:7μV 支持单端输入和全差分输入 2.5V至5.2V较宽的电源工作范围 输出功率: 125mW(fIN =1kHz,VDD=5V,RL=32Ω THD+N=0.1%) 输出摆幅: 3Vrms (fIN = 1kHz, VDD=5V, RL=1kΩ,

[iOS]iOS AudioSession详解 Category选择 听筒扬声器切换

在你读这篇文章之前,如果你不嫌读英文太累,推荐阅读下苹果iOS Human Interface Guidelines中Sound这一章。 选择一个Category AVAudioSessionCategoryAmbient 或 kAudioSessionCategory_AmbientSound ——用于非以语音为主的应用,使用这个category的应用会随着静音键和屏幕关

DMA驱动程序编写

一.  DMA的引入     假设我们让2440来拷贝一段数据, 从内存的src拷贝到dst,拷贝的长度为size. char *src = AAA; char *dst = BBB; int i; for (i = 0; i <size; i++)     dst[i] = src[i];     这写出来的代码是让cpu来执行数据的拷贝工作, 显然,cpu在执行这个过程中,同一

虹科技术|全新Linux环境PCAN驱动程序发布!CAN/CAN FD通信体验全面升级!

全新8.17.0版本的PCAN-Linux驱动程序正式发布,专为CAN和CAN FD接口量身打造。无论是CAN 2.0 a/b还是CAN FD的PCAN硬件产品,都能在我们的新驱动下“驰骋自如”。想要体验字符模式设备驱动接口(chardev)的便捷,还是SocketCAN设备驱动接口(netdev)的高效?都由您说了算! 新版本驱动包概览 1、设备驱动程序模块源代码及Makefil

Linux串口驱动程序(5)-串口接收分析

1、tty数据接收流程分析 在用户调用read函数来读取设备的文件的数据时,首先得到响应的是tty_read,这个函数又是由n_tty_read来实现的   /*** n_tty_read - read function for tty* @tty: tty device* @file: file object* @buf: userspace buffer pointer* @nr: