STM32-音频播放

前言:

在使用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,它内部集成了高性能的DACADC​。它的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,对应的手册电路如下:

后记:

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

相关推荐
Black蜡笔小新11 小时前
赋能智慧货运:视频汇聚平台EasyCVR打造货运汽车安全互联网视频监控与管理方案
网络·汽车·音视频
撬动未来的支点11 小时前
【音视频】DASH 和 SRT协议与传统协议对比
音视频
音视频牛哥12 小时前
狂飙与重构:机器人IPO浪潮背后的系统焦虑与感知进化
人工智能·计算机视觉·机器人·音视频·多智能体协同·rtsp播放器rtmp播放器·视频感知低延迟音视频
千語萬言-12 小时前
硬件岗位基础知识
单片机·嵌入式硬件
Z22ZHaoGGGG14 小时前
verilog中数据跨时钟处理方法
单片机·嵌入式硬件·fpga开发·自动化
撬动未来的支点15 小时前
【音视频】SDP与SIP协议的区别与联系
音视频
EasyGBS15 小时前
EasyGBS在智慧仓储物流场景下视频实时监控系统应用方案
网络·音视频
FanXing_zl15 小时前
基于整数MCU的FOC控制定标策略深度解析
单片机·嵌入式硬件·mcu·算法·定点运算·q15
【云轩】16 小时前
AIoT项目芯片选型指南:在性能、功耗与成本的十字路口
嵌入式硬件