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

后记:

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

相关推荐
Zw-awa7 小时前
反馈:让系统知道自己做得对不对
stm32
女神下凡10 小时前
芯参谋(38):NAND_MCP_电路设计指南
arm开发·单片机·嵌入式硬件·设计规范
嵌入式学习菌10 小时前
FreeRTOS 中断管理实战:BASEPRI 寄存器实验
单片机·嵌入式硬件
UrSpecial13 小时前
GPIO 是什么?
单片机·嵌入式硬件
剑指offer.14 小时前
ARM裸机开发-SPI
arm开发·嵌入式硬件·嵌入式·arm
归秋14216 小时前
多轨音频智能混音软件怎么选:从 demo 到更完整作品的 AI 后期工具思路
人工智能·音视频
搁浅小泽17 小时前
二极管选型技术规范
单片机·嵌入式硬件·汽车
搁浅小泽17 小时前
电感选型技术规范
单片机·嵌入式硬件·汽车
..Dauntless..18 小时前
【stm32】串口——在MCU内部的工作过程
stm32·单片机·嵌入式硬件
小猴子爱上树18 小时前
跨马翻译:批量图片翻译与视频字幕、智能抠图一站式在线图片翻译工具
大数据·人工智能·python·音视频