基于PT2314的4通道数字音频处理器
DSPs,但早在2005年时代,它们就已拥有自己独特的老派风格。说实话,我并不感到惊讶,因为我们(创作者)几乎曾推出过一系列相关作品,从PT2258、PT2315开始,现在我的摄像头配备了PT2314的固件和硬件。PT系列非常有名,我们希望涵盖所有型号,因为资源十分有限,有些商家在出售自己的库文件,而这个型号则附带了一个单一的Arduino代码。第二个我发现的问题是,大多数在线资源的前端电路设计过于复杂,因此我将所有内容转移到了HTML脚本中。我通过Web服务器来处理控制功能,而不是使用不同的音量旋钮来实现不同操作,这将大大降低前端电子设备的运行成本。
你打开网页,调整音量、低音、高音,切换输入源,改变增益,所有操作都可以通过手机完成。设置保存在EEPROM中,因此即使断电重启后,上一次的配置依然保持不变。我基于这一理念设计了一个专用PCB,并内置了ESP8266模块。本项目的所有文件均为开源,可直接从GitHub下载。我使用JLCPCB的PCB制造服务制作了这款产品,仅花费2美元。所有设计文件已随附在此,下方还提供了代码和音频测试教程。
PT2314是什么?
PT2314 是普林斯顿科技公司推出的一款四通道音频处理器IC,其引脚与意法半导体的TDA7314兼容。该IC通过I2C总线在内部完成所有音频处理功能,包括音量、低音、高音、扬声器衰减、输入选择以及响度调节。与PT2315相比,它具有以下特点使其更具吸引力:
•4个立体声输入通道
•输入增益控制:4级(0、+3.75、+7.5、+11.25 dB)
•音量范围:0 至 -78.75 分贝,细步长为 1.25 分贝,粗步长为 10 分贝
•低音和高音:-14 至 +14 分贝,每 2 分贝为一个步长
•独立扬声器衰减器:左右声道衰减范围为0至-38.75 dB
IC 采用 7.5V 至 9V 电源供电,通过 I2C 总线以地址 0x44(7 位)进行通信。它需要极少的外部元件,仅需在音频路径上添加几个耦合电容,并在 I2C 线路上加拉电阻即可。更多详细信息请参见原理图部分。
所需部件
以下是本次构建所使用的元件列表。所有标识符均与我的EasyEDA原理图一致:
•PT2314E 音频处理器IC(DIP-28)
•ESP-12E(ESP8266 模块)
AMS1117-3.3 电压调节器
•2.2 uF电解电容(音频输入耦合)
•10uF电解电容(输入滤波、参考、输出耦合)
•100 nF 陶瓷电容(低音/音量网络,去耦)
•2.2 nF 陶瓷电容(三倍频滤波器)
•2.2K(音频输入系列电阻)
•5.6K(低频反馈网络)
•10K(ESP-12E 拉力测试)
•6针编程接口(RX、TX、RST、IO0、3V3、GND)
•2针电源接口(5V + GND)
•三针输出接口(LOUT、ROUT、GND)
•三针输入接口(LIN、RIN、GND)
电路图与原理图:
电路由一个9V直流电源供电,而ESP8266 2e需要3.3V电压,因此内置的LDO将电压转换为所需值。电源线上有若干去耦电容。PT2314E有两个地线引脚:第2号引脚(AGND)用于模拟部分,第25号引脚(DGND),两者通过单个连接器相连。
在PCB布局中,我仔细地进行布线,以避免数字噪声耦合到模拟音频路径。为了保持ESP处于编程模式,使用上拉电阻将引脚拉至高电平。关于使用外部控制器编程ESP8266的完整教程,可参考相关资料。在输入输出部分,通过电阻和电容的组合实现了适当的滤波。我采用了数据手册中推荐的相同应用电路,并额外添加了一些用于Web服务器的功能,整体设计并不复杂。
音调控制网络
PT2314E 的低频和高频处理部分均采用外部滤波元件。在高频网络中,我们使用两个 2.2 nF 的陶瓷电容(TREB_L 和 TREB_R),两者均接地,用于设定高频切比耳滤波器的频率。对于低频部分,则采用反馈网络:每个通道在 BIN 和 BOUT 引脚之间连接一个 5.6K 欧姆电阻和一个 100 nF 电容,这些元件决定了低频增强/衰减的频率响应。在音量选项中,一个 100 nF 电容从 LOUD_R 连接到地。该电容是芯片内部音量补偿网络的一部分。
PCB设计:
我希望将系统设计得尽量简洁,原因在于模拟和数字部分共用同一块电路板。数字数据通过 SCL 和 SDA 线传输,这可能会影响音频信号,因此应遵循正确的规范。最佳做法是将这些数字信号与任何模拟信号分开布线,并用接地平面将其包围。
由于我主要使用了可手工焊接的THT元件,而且只有ESP8266、3V3稳压器和PT2314采用了SMD焊盘,可能会遇到一些问题。不过,我始终建议先焊接SMD元件,再进行THT元件的焊接,最后是连接引脚部分。这样操作,可以最大限度地节省时间和精力,轻松完成电路板的焊接。
设计中也采用了相同的方法:我在两层上都使用了接地填充,可以通过过孔和接地焊点进行连接。此外,LDO位于中间位置,为ESP8266供电,而其他所有系统均以5V运行。如果使用的电源是开关电源(SMPS),信号可能会受到干扰,因此建议使用电池或带有电磁干扰屏蔽的优质电源适配器,以降低整体噪声。我从JLCPCB订购了5个,因为它们与EasyEDA的集成良好,整个过程从未遇到任何问题。
PT2314 I2C 寄存器映射
PT2314 通过 I2C 总线写入单字节来控制。我们需要将数值发送到寄存器中以设置音调,该数值由 ESP8266 的 I2C 总线提供。以下是一个音量寄存器的示例,字节为:00 BBB AAA,其中两个最高有效位(MSB)始终为 0。
接下来的3位(B)设置10 dB级的衰减量(范围为0至-70 dB),最后3位(A)设置1.25 dB级的衰减量(范围为0至-8.75 dB)。总衰减量由公式 = B × 10 + A × 1.25 给出。发送0x3F可获得最大衰减,相当于完全静音。同样的过程也适用于其他寄存器;下面我们来了解代码的工作原理,并通过Arduino内置的Wire库如何发送这些字节。若想更深入理解寄存器映射,请查阅相应功能的datasheet。
代码正在运行
固件基于四个库构建:
•Wire.h
•EEPROM.h
•ESP8266WebServer.h
•WiFiManager.h
这些库是免费且开源的,你可以在Arduino IDE的库部分找到它们。以下是数据通过I2C线路传输的方式。我们使用的是wire库的功能:
I2C 地址为 0x44(7 位)。Wire 库会自动处理读写位,因此写入操作时总线上实际的字节变为 0x88。
音量可接受 0 到 63 的值。0 表示最大音量(0 dB 抑制),63 表示最小音量(-78.75 dB)。
对于静音模式,我只需发送0x3F,即可设置最大衰减。PCB底部设有编程引脚,所有连接均指向另一个ESP8266,从而实现编程操作。
Web 服务器接口
首次启动时,ESP8266会创建一个名为PT2314_AudioAP的Wi-Fi接入点,密码为12345678。请通过手机Wi-Fi连接该网络,并输入密码。
然后会打开一个 captive portal,你选择自己的家庭WiFi网络。连接后,串行监视器会显示IP地址,并在任意浏览器中打开该地址。
网页界面采用深色主题,点击此处查看:
某些预设模式会选择固定的低音和表格值。您可以在用户界面中查看这些值,预设值的排列方式如下:
•人声:低音0,高音+3
•低音增强:低音+5,高音-1
•音量:低音+1,高音+2
•音色:低音+3,高音+3
•舞动:低音+4,高音+4
所有控件实时更新,只需移动滑块,音频便会立即变化。滑块和切换按钮无需重新加载页面即可使用。预设和输入按钮会快速刷新以更新UI状态。界面功能强大,但在ESP8266网页服务器上操作也十分简便。
系统噪音
如果在切换输入或调节音量时听到“咔哒”声或“点击”声,这是此类IC的正常现象。这种声音来自模拟信号路径的内部切换。如果你将此信号输入功率放大器,请确保放大器具备适当的输入滤波功能或开机静音电路。避免直接连接高音单元,因为它们对瞬态尖峰非常敏感。使用干净的电源能显著减少该声音。电池供电效果最佳。如必须使用开关电源(SMPS),请在电源线上增加额外的滤波措施。
使用D类放大器和蓝牙进行测试
现在,为了测试PT2314,我将两个小型扬声器与一块小型D类放大板连接。音频信号来自一个外接的蓝牙模块,该模块连接到立体声1输入端口,再通过手机进行音频流传输。我可以通过蓝牙从手机播放音乐,并在同一个移动设备上的独立浏览器标签页中控制音量、低音、高音以及输入增益。由于蓝牙模块输出的信号比直接AUX连接略弱,因此将增益调至+7.5 dB后,音量效果非常理想。
音频质量清晰,正常聆听音量下无明显噪音。即使在极高音量且低音增强至最大时,D类放大器也能完美处理,不会出现削波现象。唯一需要注意的是开机时的“POP”噪声。建议确保放大器具备开机静音功能,或在扬声器输出端加装一个小型延时继电器。此外,我们也可以额外使用一个扬声器保护电路。我已将完整视频录制下来,作为音频测试的一部分。
本文编译自hackster.io





