前言:
在使用IOT设备进行音频播放的时候有多种解决方案,简单可以归纳为三类:
|
技术方案 |
核心原理 |
音质表现 |
系统复杂度 |
典型应用场景 |
|---|---|---|---|---|
|
PWM/定时器直驱 |
利用STM32的PWM或定时器生成不同频率的方波,直接驱动蜂鸣器或通过简单功放驱动喇叭。 |
较差,仅能播放简单音阶或单音,有数码感。 |
低(硬件和软件都最简单) |
电子琴、八音盒、简单报警提示音。 |
|
外接专用音频解码芯片 |
STM32作为主控,通过SPI等接口将压缩音频数据(如MP3)发送给专业解码芯片(如VS1053),芯片完成高质量解码后输出模拟音频。 |
优秀,支持高保真立体声,可播放MP3、WAV等多种格式。 |
高(需配置解码芯片及文件系统) |
高品质MP3播放器、网络音乐播放器、语音播报设备。 |
|
片内DAC输出 |
利用STM32自带的DAC,将数字音频数据(如WAV格式的PCM数据)直接转换为模拟电压波形输出。 |
较好,音质受限于DAC性能(通常12位),优于PWM,但不如专业解码芯片。 |
中(需处理未压缩音频数据) |
对音质有一定要求但不需要复杂格式解码的场合,如播放简短的提示音或特定音效。 |
PWM/定时器直驱方案:
这个方案的核心是让STM32直接产生音频信号。
-
工作原理:STM32通过其定时器产生高频PWM波,或者直接控制GPIO口模拟出音频信号的频率。这个PWM波的本质是一串方波,经过简单的RC低通滤波器后,可以还原出大致的模拟电压波形。但这个信号非常微弱且质量一般,所以必须外接LM386或LM4871这类音频功率放大器进行放大,才能驱动喇叭。
-
优点:成本最低,电路简单,适合播放简单的提示音或对音质要求极低的场合。
-
缺点:音质差(底噪大、失真明显),无法处理复杂的音乐文件(如MP3),需要STM32的CPU持续参与信号生成,占用资源多。
片内DAC输出方案:
这个方案利用了STM32内部的一个专用硬件模块。
-
工作原理:STM32将数字音频数据(如WAV格式的PCM数据)发送给其内部的DAC模块。DAC会将数字值直接转换成对应电压的平滑模拟波形输出。同样,这个线路电平的信号也需要外接功放才能驱动喇叭。
-
优点:音质优于PWM方案,电路仍然相对简单。
-
缺点:音质受限于STM32片内DAC的性能(通常是12位),无法直接解码MP3等压缩格式(需要CPU先软件解码),同样需要外接功放。在你的组合中,这可以看作是一个介于PWM和外接Codec之间的选项。
外接专用音频解码芯片方案:
这是追求音质和功能完整性的方案,核心是引入了一颗专业的音频编解码芯片。
-
工作原理:STM32通过I2S数字音频接口,将压缩的(如MP3)或未压缩的(如WAV)数字音频数据流发送给ES8311。ES8311是一颗专业的音频Codec,它内部集成了高性能的DAC和ADC。它的DAC将数字信号高质量地转换为模拟信号后,再输出给后级的功放芯片(如LM4871)进行功率放大,最终驱动喇叭。
-
优点:
-
高音质:专用Codec的DAC性能远超STM32片内DAC。
-
功能全面:ES8311通常也包含ADC,因此可以实现录音功能。
-
减轻CPU负担:STM32只需传输数据,复杂的音频编解码由ES8311硬件完成。
-
-
缺点:电路最复杂,成本最高,软件配置也更繁琐。
简单场景分类如下

DAC方案:
这里我们首先已DAC方案进行分析,PWM脉冲的这个过于简单,作为警报这类方案还可以,作为语音音质还是太差,因此低成本采用DAC方案
DAC(数字模拟转换器),主要将数字信号0,1转换为模拟信号,STM32芯片中存在对应的引脚支持DAC数模转换,但是较少
这里我们介绍LM386和LM4871
LM386引脚图:

手册提供的不同增益的电路图:


LM386电路图大概如下,由于选用的LM386型号和使用场景不同,对应的电容电阻会存在调整
其中INPUT为音频输入接口,OUTPUT为喇叭接口

LM4871引脚图:

手册电路图如下:

LM4871的正负输入(+IN和-IN)确实都连接到了MCU,但这并不意味着MCU提供了两个独立的DAC信号。实际上,这是一个非常经典的单端转差分输入的设计。MCU的DAC只提供了一个单一的正向信号,而负输入端的信号是通过一个电阻网络从这个正向信号“衍生”出来的参考地。

为了低成本考虑,典型应用电路中,用到了 10K 20K 1UF 0.39UF 等器件,为了让电路更简洁,将电阻统一改为 10K,电容改为常用的 100nF(0.1UF) 和 22UF。实测没有问题。
Shutdown 是芯片掉电控制引脚,为高电平时功放停止工作实现低功耗;为低电平时功放正常工作。
项目原理图中的 R7 和 R8 电阻跟声音大小成线性关系,两个电阻越大,声音越小;两个电阻越小,声音越大。但是声音的大小始终不会超过喇叭的实际可输出声音大小。毕竟该芯片只有 3W 的功放输出。 W 数越大,功率越高,耗电越大,声音越响。
对应的麦克风电路:

外接专用音频解码芯片:
这里使用的是ES8311+NS4150B方案:
ES8311是一款由Everest Semi(顺芯半导体)推出的高性能、低功耗的单声道音频编解码器(CODEC)芯片。它集成了高精度的模数转换器(ADC)和数模转换器(DAC),专为需要高质量音频录制和播放的便携式及嵌入式设备而设计;
具体特性如下:
|
特性类别 |
具体规格与描述 |
|---|---|
|
核心架构 |
高性能、低功耗多位 Delta-Sigma ADC 和 DAC |
|
ADC 性能 |
24位分辨率,采样率 8 - 96 kHz,信噪比 (SNR) 100 dB,总谐波失真+噪声 (THD+N) -93 dB |
|
DAC 性能 |
24位分辨率,采样率 8 - 96 kHz,信噪比 (SNR) 110 dB,总谐波失真+噪声 (THD+N) -80 dB |
|
接口特性 |
支持 I2S/PCM 主从模式数字音频接口;配置接口为 I2C |
|
电源电压 |
1.8V - 3.3V,宽电压范围利于电池供电设计 |
|
功耗水平 |
播放和录制模式下功耗典型值仅为 14 mW,待机电流极低 |
|
封装形式 |
QFN-20,紧凑型封装节省电路板空间 |
|
工作温度 |
-40°C 至 +105°C,适应宽温工作环境 |
ES8311引脚如下:

手册推荐电路如下:

NS4150B引脚:

对应的手册推荐电路:

NS4150B和LM386都属于功放芯片,具体的区别如如下:
|
特性 |
NS4150B (D类功放) |
LM386 (AB类功放) |
|---|---|---|
|
工作原理 |
D类(开关型) |
AB类(线性) |
|
核心优势 |
高效率(通常85%-90%),低发热,功率密度高 |
电路简单经典,成本极低,电磁干扰(EMI)易处理 |
|
输出功率 |
较高(5V电压下,4Ω负载可达2.8W-3W) |
较低(6V电压下,8Ω负载典型值约325mW) |
|
效率 |
高(约88%-90%) |
较低(约30%-40%) |
|
静态电流 |
约4mA (3.6V, 空载) |
约4mA (6V) |
|
音质特点 |
理论THD+N较低,但可能有高频开关噪声 |
中规中矩,总谐波失真典型值0.2% (特定条件) |
|
外围电路 |
简单,通常无需输出滤波电感(免滤波设计) |
简单,但通常需要输出耦合电容 |
|
热管理 |
发热量小,可能无需散热片 |
发热量相对较大,可能需要考虑散热 |
|
EMI/噪声 |
需关注高频开关噪声和电磁兼容性(EMI)设计 |
电磁干扰较小,但易受电源噪声影响 |
|
成本 |
相对较高 |
极低 |
|
理想应用 |
对效率和体积要求高的便携设备(如蓝牙音箱、平板电脑) |
成本敏感、功率要求低的应用(如简易玩具、报警器) |

对应的麦克风使用的ZTS6216,对应的手册电路如下:

后记:
音频的硬件电路方案常用的就是上面两种,选用的芯片可能不同,但是原理是一样的
1426

被折叠的 条评论
为什么被折叠?



