当前位置: 首页 > news >正文

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,对应的手册电路如下:

后记:

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

http://www.dtcms.com/a/549097.html

相关文章:

  • 前端学习:选择器的类别
  • 运输网站建设wordpress 不同page
  • Qt的Debug版本和Release版本有什么区别?
  • Docker使用【容器】
  • 行业电子商务网站建设房地产网站开发公司电话
  • LangChain 提示模板之少样本示例(二)
  • Product Hunt 每日热榜 | 2025-10-30
  • Spring MVC核心概念
  • 鸿蒙HDF框架源码分析
  • Springboot旅游管理系统8cx8xy5m(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • ppt免费制作网站如何建设网站山东济南兴田德润官网
  • 如何获取网站根目录链接诸城做网站的
  • GPT-0: Attention+Transformer+可视化
  • 告别“人眼扫描”:EasyGBS智能搜索功能助力重塑海量视频监控管理效率
  • 【ubuntu】ubuntu系统如何快速删除当前用户的配置
  • dz地方门户网站制作南昌seo招聘信息
  • 灵犀科技网站开发湖南网站建设的公司排名
  • 沈阳装修公司网站建设做网站只用前端知识可以吗
  • ELK es+logstash
  • Java 大视界 -- Java 大数据在智能医疗远程康复数据管理与康复方案个性化定制实战(430)
  • 【C#】XtraMessageBox(DevExpress)与MessageBox(WinForms 标准库)的区别
  • 石家庄物流网站建设北京公司网站建设价格
  • 网络编程入门
  • 每日一个C语言知识:C 错误处理
  • 基础建设的网站有哪些内容网页制作基础教程费
  • 建站工具哪个好用深圳网站建设定制平台
  • 2048游戏笔记3 游戏开始与结束 cocos3.8.7
  • 【AI WorkFow】n8n 源码分析-核心结构体设计思考(六)
  • 网站诊断内容工程建设教育培训
  • Opencv(四):自适应二值化