第三篇终于来了。前两篇把SI4732和ESP32S3 Zero的I2C通信打通、TFT_LCD的频率显示跑起来之后,整机算是“能响”,但问题也堆了一堆:耳机口音量开到头还是觉得闷,接3W小喇叭更是像蚊子叫;USB供电的时候背景里有说不清的沙沙声,换成电池又好一些;屏幕一刷新,耳机里就跟着“嗒嗒”响。这些问题全都指向两个主题——音频放大和电源优化。这篇就把我的选型过程、外围电路细节、电源树设计、干扰排查链路一次性整理出来。如果你现在正卡在收音机功放底噪、供电纹波或者数字电路干扰这几个问题上,这篇内容应该能帮你省下不少弯路。
1. 音频放大选型:TDA2030、PAM8403与TDA2822M的取舍
1.1 先摸清SI4732的音频输出底细
SI4732作为DSP收音机芯片,音频输出并不像传统AM/FM中放芯片那样,给一个“适合直接推耳机”的电平。它的LDOUT/RDOUT引脚输出的是模拟音频信号,内部带一定直流偏置,数据手册明确要求通过耦合电容接入后级。我实测耳机阻抗32Ω时直推能听清,但低频发虚,动态一大就发糊;换4Ω喇叭,声音小到只能贴着耳朵听。原因很简单:SI4732的输出级不是功率级,它能提供的电流非常有限,带高阻耳机勉强凑合,带低阻喇叭就是强人所难。
这个输出级还有个特点:音量由内部数字音量寄存器控制,如果把数字音量调高,输出电平大概能到几百毫伏到接近1V。问题是电平一高,耳机里容易出现“发硬”的感觉,说明失真已经上去了。我当时用示波器看输出波形,数字音量调到63时波形顶部明显削顶。所以在功放选型上,我首先关注的是输入灵敏度和增益适配,而不是一味追求后级功率。
这里还有一个关键点,SI4732输出脚是两路立体声,但很多便携收音机只需要单声道。我第一版只取了左声道LDOUT,RDOUT悬空,没有出问题;但保险起见,悬空脚最好对地接一个100kΩ电阻,避免它像天线一样把环境噪声感应进去,干扰另一个声道的参考地。
1.2 三款功放芯片的实机对比
选功放之前,我先在桌面上摆了三款常见芯片做对比:TDA2030、PAM8403、TDA2822M。它们的定位差异非常大,直接决定适合做成台式还是便携式。
| 项目 | TDA2030 | PAM8403 | TDA2822M |
|---|---|---|---|
| 放大类型 | AB类 | D类 | AB类 |
| 供电电压 | 6-36V单电源,或±6-±22V双电源 | 2.5-5.5V | 3-15V |
| 最大输出功率 | 约20W(4Ω,±18V时) | 3W×2(5V,4Ω) | 约1W×2(9V,4Ω) |
| 外围复杂度 | 高,需要散热片和较大滤波电容 | 低,阻容极简 | 中等,输出需要自举电容 |
| 音质风格 | 干净、功率余量大 | 高音略干,开关底噪要处理 | 暖、柔和,但功率小 |
| 对收音机干扰 | 很小 | 输出是方波,不处理会干扰天线 | 很小 |
| 适合场景 | 桌面台式收音机或桌面音箱 | 便携锂电池收音机 | 简易桌面或学生作品 |
TDA2030是我第一反应想用的,因为网上搜“tda2030音频放大电路”能出来一大堆成熟方案,资料多,不容易翻车。它的输入级是高阻抗场效应管,输出电流最大能到3.5A,20W功率足够带动书架箱。但问题也明显:要达到20W需要较高的供电电压,散热片必须安排,静态电流也比较大,用3.7V锂电池根本推不动。所以它更适合做成台式收音机的外置功放,而不是便携机的一部分。
PAM8403则完全是另一个方向。5V供电就能输出3W×2,D类效率超过80%,一颗小芯片加几个阻容就能跑,非常适合用18650或单节锂电供电的便携机。但它有一个天生的缺点:内部功率管输出的是高频开关方波,如果输出端不加滤波,或者喇叭线太长,方波就会辐射出来干扰收音机天线。我在便携版上吃过这个亏,后面会专门讲对策。
TDA2822M是很多老收音机里用过的经典功放,3V就能工作,驱动小喇叭声音很“温暖”,而且不会像D类那样产生明显开关噪声。缺点是功率太小,9V供电输出约1W,想听大动态音乐就不够从容。如果你做的是复古风格小台式,它反而比TDA2030更合适。
1.3 我的最终方案:一台桌面机、一台便携机
既然三种芯片各有优劣,我干脆做了两套。桌面机用TDA2030单电源接法,配12V开关电源加一级线性滤波;便携机用PAM8403,配3.7V锂电池,用一节18650供电。这样两台设备既回应了“TDA2030音频放大电路”的经典方案,又满足了随身携带的场景。
两套方案在调试时的侧重点完全不一样。桌面版重点处理TDA2030单电源接法的中点偏置和散热,便携版重点处理D类功放的输出滤波和电源去耦。TDA2822M作为备选我也搭了,但最终装机里只保留了一个用来对比听感。
这里有个选型经验:先定供电再选功放,不要先定功放再凑电源。很多新人喜欢看芯片功率大就上,结果发现手头没有双电源,被迫改电路,浪费一堆时间。TDA2030能不能单电源用?能,但要在输出端加一个Vcc/2偏置,喇叭还要串大电容,低频响应会受影响,调试成本翻倍。选PAM8403就简单得多,几乎不会在供电上卡壳。
2. 功放外围电路:耦合、增益和防自激的细节
2.1 输入耦合电容:先把直流偏置问题解决
SI4732的LDOUT引脚不是理想电压源,它输出的音频信号叠加在内部基准电压上。如果直接接功放输入,这个直流分量会被放大,导致喇叭线圈一直偏置在某一侧,轻则声音不对称,重则烧喇叭。所以第一件事就是在信号链上串耦合电容。
耦合电容容值不是随便选的。电容和功放输入阻抗构成高通滤波器,截止频率f=1/(2πRC)。以TDA2030电路为例,输入阻抗主要由输入电阻决定,官方电路通常配到20kΩ级别;PAM8403输入阻抗一般也在20kΩ级别。按20kΩ计算,如果想截止频率低于10Hz,电容至少是0.8uF。我在两套机器里都用了10uF电解电容,低频表现足够,而且体积不大。
还有个容易被忽略的点:耦合电容在焊入之前最好测一下容值和漏电流,尤其拆机电容。我遇到过用失效电解电容导致低音几乎没有的情况,换了新电容立马正常。安装时注意极性方向,正极接SI4732输出,负极接功放输入,反接轻则容量下降,重则电解液泄漏。另外,为了给功放输入端一个稳定的直流工作点,耦合电容后面要对地接一个偏置电阻。TDA2030数据手册用的是100kΩ,PAM8403输入脚本身有偏置,不用额外加。这里不要省,否则输入悬空时容易感应50Hz交流噪声。
2.2 增益与音量电位器的匹配
功放增益不是越大越好,关键在于和信号源电平的匹配。TDA2030经典应用电路里,反馈电阻Rf=22kΩ、接地电阻Ri=680Ω,闭环增益约1+22000/680≈33倍,换算成dB大约是30dB。这个增益对CD播放器这类1V左右的音源合适,但对SI4732输出可能偏大,数字音量开到一半就会削波。
我的做法是在功放输入端前加一级10kΩ对数型电位器做音量调节,信号先经过电位器分压再进功放。这样功放增益可以保持官方推荐值,保证稳定性和音质,音量大小交给电位器控制。桌面版测试时,SI4732数字音量在40左右,电位器拧到9点钟位置就已经有足够响度,11点钟开始削波,说明余量充足。
PAM8403的增益不是靠外部电阻设置的,而是通过GAIN引脚的电平组合选择。不同版本引脚定义略有差异,我按数据手册设置的增益档位大约在21dB。为什么不用最高的32dB档?很简单,SI4732输出能力有限,用高增益档会把本底噪声也一起放大,弱信号时耳朵贴在喇叭上能明显听到“嘘”声。21dB听起来中规中矩,实际音量完全够用。
2.3 输出网络的防自激处理
功放最怕的不是发热,而是自激。TDA2030输出接长喇叭线时,喇叭线分布电感和电容容易形成LC振荡,表现出来就是高频嘶嘶声,甚至不输入信号也发热。官方电路在输出端加了一个RC网络,我用了10Ω电阻串0.1uF电容并接在输出端对地,再加一个1uH左右的电感串在输出回路里,实测无论喇叭线怎么甩都没再自激。
PAM8403这类D类功放正好相反,它的开关输出自带高频成分,输出端反而要加LC低通滤波器。很多成品模块为了省成本用贴片磁珠替代,但磁珠的截止特性不如LC滤波器干净。我自己搭的时候在输出端放了22uH电感加0.47uF电容组成的二阶低通,截止频率大约在30kHz以上,既能滤掉开关频率,又不损失音频范围内的高频。加了滤波之后,便携版对收音机天线的干扰明显降低。
防开关机冲击也是功放外围的一个必修课。TDA2030单电源上电瞬间,Vcc/2偏置会通过大电容对输出产生一个瞬态电压,喇叭里会“砰”的一声。处理办法有两种:一是给偏置电路加RC慢启动,让Vcc/2缓慢建立;二是在输出端加继电器延时接通,等稳定了再带喇叭。桌面版我用了第一种,把偏置电容从47uF加大到220uF,启动时间拉长到约半秒,冲击声小了很多。
3. 电源树与地线重排:LDO对比、去耦电容和单点接地
3.1 供电树设计:谁和谁绝不能共用
收音机的电源优化比一般单片机项目苛刻,因为射频前端对电源噪声极其敏感。原则只有一个:大电流、高频开关的负载,必须和小信号模拟电路分离。
便携版的供电树是这样的:18650电池直接给PAM8403供电,电池再经过防反接和分压后,分成两路,一路给SI4732供电,一路给ESP32S3 Zero和TFT_LCD供电。SI4732那一路用低压差低噪声LDO单独稳压,ESP32那一路用大电流LDO。为什么这么分?因为ESP32开启WiFi时电流会瞬间跳变几十到几百毫安,如果和SI4732共用一颗LDO,公共内阻上的电压波动会直接调制到射频芯片电源上,现象就是FM弱台的背景噪声跟着WiFi发包节奏一抽一抽。
桌面版的供电树要更小心。TDA2030需要12V以上电压,我用12V开关电源供电,但开关电源本身有几十到几百毫伏的纹波,直接给收音机其他部分用会非常脏。我的做法是12V先经过一级LC滤波,再给TDA2030供电;同时把12V经DC-DC降压到5V,5V再经低噪声LDO降到3.3V给SI4732和数字电路。这样功放、射频、逻辑三层电源互相隔开,实测底噪比之前直接并联低了几个数量级。
很多DIY爱好者容易踩一个坑:把USB的5V直接拿来给SI4732供电。USB口的5V来自电脑或充电头,纹波和噪声情况千差万别,我在电脑USB口上就测到过接近200mV的高频毛刺,这种电源给收音机用,灵敏度直接下降。所以只要条件允许,我都是电池供电,或者至少经过LDO再进射频电路。
3.2 低噪声LDO的实测对比
为了给SI4732选合适电源,我用示波器交流档对比了三种LDO:AMS1117-3.3、ME6211、LP5907。AMS1117是通用器件,压差低、电流大,但输出噪声明显,在AC耦合下能看到几十毫伏的高频毛刺,用在数字部分没问题,用在射频部分就不太够。ME6211的噪声比AMS1117小一些,是很多ESP32模块板载LDO,但也不是专门为射频设计的。LP5907属于专用超低噪声LDO,输出噪声典型值在10uVrms以内,给SI4732供电后,弱信号台的背景“沙沙”声小了一大截。
实际操作中,在LDO后面补一颗10uF低ESR陶瓷电容是必须的,LDO对输出电容有要求。电容不要离SI4732太远,我把它放在芯片电源引脚3mm以内。输入侧我放了一颗100uF电解加一颗1uF陶瓷,用来吸收来自电池或DC-DC的低频波动。
还有一点容易被忽略:LDO的静态功耗。便携版整机待机电流大约30mA,如果LDO选型不当,它的自身功耗可能占到一半。LP5907静态电流只有几十微安,非常合适;ME6211稍高一点但也能接受;AMS1117静态电流偏大,便携场景就不推荐了。
3.3 地线布局与去耦电容摆放
电源优化的另一半是地线。模拟电路地、数字电路地、功放大电流地在PCB上如果胡乱连,输入信号再干净也会被地线噪声重新污染。我用的办法是单点接地:把模拟地、数字地、电源地在板子电源入口处汇聚成一点,模拟地的走线像一条主干,各个模拟芯片就近入地,不在功放回路上串接。
功放地和喇叭线更要注意。喇叭电流是脉冲性的,如果喇叭负极和SI4732的地共用一段走线,这段走线上的地弹会直接调制到天线输入端。我处理时让喇叭负极走独立的线直接回到电池负极,并且把两根喇叭线绞在一起,和信号地完全分开。改完以后,音量开大时那种“哼”的声音基本消失了。
去耦电容布局的原则是“小电容靠近引脚,大电容管大局”。每个IC电源脚旁边放0.1uF陶瓷电容;SI4732的VDD脚额外放1uF和0.1uF各一颗,两颗都贴着芯片;TFT背光供电并联100uF电解和0.1uF,因为背光电流突变非常容易出现尖峰。实测这个电容组合能有效吸收大部分瞬态电流,音频输出端的毛刺小了很多。
4. 数字电路干扰定位:从TFT刷新啸叫到WiFi底噪
4.1 症状:屏幕一刷新就“嗒嗒”响,WiFi一开就“嘘嘘”吵
做到第三篇,音频链路和电源树都优化到位了,但整机联调又冒出新的问题:TFT_LCD刷新时,耳机和喇叭里跟着出现“嗒嗒”声;WiFi连接后,FM弱台开始出现明显的“嘘嘘”噪声,短波波段更严重。这种干扰来自系统自身,属于数字电路通过传导和辐射两条路径污染了模拟前端。
我用示波器同时勾住功放输出和TFT背光电源,发现每次屏幕刷新,背光电源上都会出现一个幅度不小的尖峰,功放输出同时出现对应的脉冲。另一个表现是ESP32天线启动WiFi传输时,SI4732的RSSI寄存器读数会周期性跌落,这和WiFi的帧间隔完全同步。这说明干扰是可以定位的,不是玄学。
干扰的本质有两个:一是SPI时钟、数据和背光PWM的快速边沿产生高频谐波,通过地线或空间耦合到音频和射频通路;二是ESP32工作时天线发射的2.4GHz信号,虽然不在FM频段,但会和SI4732前端的非线性形成互调,落到中频或音频范围。理解这两个本质,后面设对策就有方向了。
4.2 硬件对策:串阻、屏蔽、分地
先处理TFT的快速边沿。SPI的SCLK和MOSI线上我串了33Ω电阻,降低边沿翻转速度,让过冲变小,实测经天线感受到的干扰强度下降明显。代价是屏幕刷新时有一点拖影,但对于显示频率、电台名这种静态文字完全够用。背光PWM频率从1kHz调到22kHz,避开了人耳最灵敏的频段,“吱吱”的差频噪声消失;同时在背光供电串了一颗磁珠,再用100uF电容稳住瞬态电流。
再给SI4732做局部屏蔽。我用一块薄铜箔把SI4732和它的外围电路罩起来,铜箔用导电胶带接地,和PCB地焊在一起。屏蔽罩不接地是没用甚至更糟的,这一点一定要牢记。因为天线走的是板子另一侧,屏蔽之后FM和短波接收都稳定了不少。
第三是地线分离。TFT的排线、ESP32的数字地集中铺在板子一侧,SI4732模拟地集中在另一侧,在电池负极处单点汇合。如果板子空间实在不允许,至少要保证功放的喇叭回流不走模拟地。这一条在前面电源优化里已经做了,这里再强调一次,因为没有它,前面的屏蔽和串阻效果都会打折扣。
4.3 软件策略:改刷新方式和射频调度
硬件能解决大部分干扰,但我也在软件上做了一些配合。一是把TFT刷新改成DMA方式。过去用轮询逐像素写SPI,CPU长时间被占用,背光电流波动频繁;改成DMA整帧刷新后,刷新周期变成连续的脉冲群,总时间缩短,干扰平均能量下降,更重要的是CPU可以继续处理SI4732寄存器读取,不会把瞬时电流脉冲全部挤在一起。
二是降低SPI时钟。我的TFT最高支持40MHz,但实际用20MHz刷新就肉眼无感,干扰却小很多。如果你也遇到屏幕刷新伴随噪声,可以先试着把SPI时钟降到一半看有没有改善,这是最省事的验证手段。
三是WiFi调度策略。便携式收音机在听广播时,我默认关闭WiFi,只保留基本功能。如果必须联网,我会把WiFi设置为省电模式,并降低发射功率;同时让WiFi工作在每包间隔拉长的状态,避免持续高速收发。对于只能保留WiFi的场景,可以做一个简单的时间片轮转:WiFi传输一秒,然后停一秒,听感上比持续发噪好很多。
5. 整机装调与数据记录:示波器底噪、听感对应和RSSI验收
5.1 底噪测量:没有专业音频分析仪怎么量化
很多人调收音机全凭耳朵,调着调着就失去参照。其实条件有限也可以量化底噪:用示波器交流档测功放输出,音量电位器拧到最小记录残留噪声;再把输入信号短路,记录噪声电平。没有示波器的话,数字万用表的交流mV档也能做相对比较,虽然不是真RMS值,但在同一个系统的调试前后,可以作为可靠参照。
我的实测记录:桌面版TDA2030在优化前,输出端残留噪声约8mV,主要是100Hz纹波;优化电源树并调整地线后降到2mV。便携版PAM8403在优化前端输入滤波前,残留噪声4mV,加了输入RC滤波和高频输出滤波后降到1.5mV。这里说的都是音量电位器拧到中位的值,结果非常能说明问题。
5.2 主观听感与示波器波形的对应
当示波器上看到100Hz纹波时,听感是“嗡嗡”的交流声,这种多半来自电源地线公共阻抗或开关电源纹波;看到几十kHz的高频毛刺,听感是“丝丝”的沙沙声,多半来自LDO输出噪声或D类功放串扰;看到间歇的脉冲群,听感是“嗒嗒”或“噼啪”声,多半来自TFT刷新或WiFi突发。波形特征和听感一一对应,排查时就不要再瞎猜了。
我按这个方法把前面每项改动前后的波形都拍了下来,对比听感:桌面版把12V开关电源带来的100Hz纹波滤掉后,“嗡嗡”感消失;便携版把PAM8403输出端滤波加上后,“丝丝”声下降非常明显;TFT改DMA刷新后,“嗒嗒”声基本不可闻。这一步的收获是:以后再做任何音频相关项目,都必须先勾波形再调电路,效率比纯耳朵好太多。
5.3 最终效果:用SI4732的RSSI做客观验收
主观听感之外,SI4732的RSSI寄存器是个免费的好工具。读RSSI和SNR时,需要让收音机停在同一个弱台上,保持天线位置不变,分别记录优化前后的数值。我在本地一个87.5MHz的弱台上测到,优化前RSSI显示35dBuV、SNR约21dB;优化后RSSI没有明显变化,但SNR提高到27dB,意味着同样电平下噪声被压下去一大截,信号“可用性”完全不同。AM 630kHz的生命信号也清晰了不少,夜间台底的交流声明显减弱。
客观数据加主观听感都通过后,我再提一个装调顺序上的建议:先电源、后音频、再射频干扰。很多人一上来就换功放芯片,结果底噪还是大;其实只要电源树和地线设计正确,一颗普通的功放也能出好声。反过来,电源问题没解决,换多贵的功放都白搭。这个顺序在我这次实践中被反复验证。
最后分享一个调试小技巧:当整机所有声道都响了之后,不要急着装壳。先把线路板和喇叭、天线用跳线连起来,裸奔状态下用示波器测底噪、测RSSI,确认没问题再装壳;装壳后再复测一遍,因为机壳、电池、螺丝的位置会影响分布电容和天线负载,很多“装好就变差”的问题都出在这个环节。