基于STM32音频解码MP3——vs1053

article/2025/10/23 5:20:05

基于正点原子教程

VS1053简介
1.该模块采用VS1053B 作为主芯片
2.支持:MP3/WMA/OGG/WAV/FLAC/MIDI/AAC 等音频格式的解码
3.支持:OGG/WAV 音频格式的录音,支持高低音调节以及 EarSpeaker 空间效果设置
模块如图所示正点原子
在这里插入图片描述
ALIENTEK ATK-VS1053 MP3 模块板载资源如下:
◆ 高性能编解码芯片:VS1053B
◆ 1 个 LINE IN/MIC 选择接口
◆ 1 个咪头
◆ 1 个电源指示灯(蓝色) ◆ 1 个 1.8V 稳压芯片
◆ 1 个 3.3V 稳压芯片
◆ 1 路 IIS 输出接口
◆ 1 路电源及 SPI 控制接口
◆ 1 路 3.5mm LINE IN 接口,支持双声道输入录音
◆ 1 路 3.5mm 音频输出接口,可直接插耳机
 板载咪头(MIC),无需外部麦克风,即可实现录音;
P1 排针为模块的供电与通信接口,采用 1*10P 排针,各引脚详细描述如表 2.2.1 所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
二.模块使用
1.模块通过SPI接口来接受输入的音频数据流
我们通过SPI口向VS1053不停的输入音频数据,它就会自动帮我解码了,然后从输出通道输出音乐,这时我们接上耳机就能听到所播放的歌曲了

2.模块(VS1053)通过7根信号线同主控芯片连接
RST是VS1053的复位信号线,低电平有效。
DREQ是一个数据 请求信号,用来通知主机,VS1053可以接收数据与否。
SCK、SI(MOSI)和SO(MISO)则是VS1053的SPI接口,他们
在XCS和XDCS的控制下面来执行不同的数据通信
如图所示
在这里插入图片描述
VS1053 的 SPI 数据传送,分为 SDI 和 SCI,SDI 用来传输数据SCI 用于传输命令
SDI:
VS1053 的数据传输都是通过 DREQ 控制到 ,主机必须在判断 DREQ 有效(高电平有效)后,才可以发送数据,每次可以发送 32 字节
SCI:
SCI 串行总线命令接口包含了一个指令字节一个地址字节一个16 位的数据字
SCI 的字节数据总是高位在前低位在后的
指令字节:读指令为:0X03,写指令为:0X02
SCI读时序
指令,地址都是由主机即STM32发送,接着从机就自动发送数据给STM32,这就是32读数据过程
在这里插入图片描述
向VS1053读取数据,通过先拉低XCS,然后发送读指令(0X03),再发送一个地址,最后,我们在SO 线(MISO)上就可以读到输出的数据了

SCI写时序
指令,地址,数据都是由主机即STM32发送,接着从机就自动接收数据,这就是32写数据过程
在这里插入图片描述
在读时序和写时序中,DREQ 信号上都产生了一个短暂的低脉冲,也就是执行时间。这个不难理解,我们在写入和读出 VS1053 的数据之后,它需要一些时间来处理内部的事情,这段时间,是不允许外部打断的,所以,我们在 SCI 操作之前,最好判断下 DREQ 是否为高电平,如果不是,则等待 DREQ 变为高

SCI 寄存器:
总共有 16 个 SCI 寄存器
如图所示:
在这里插入图片描述
a.MODE 寄存器
在这里插入图片描述
在这里插入图片描述
SM_RESET,可以提供一次软复位,建议在每播放一首歌曲之后,软复位一次
SM_SDINEW 为模式设置位,这里我们选择的是新模式,所以设置该位为 1(默认的设置)。

b.BASS 寄存器
该寄存器可以用于设置 VS1053 的高低音效
在这里插入图片描述
c.CLOCKF 寄存器
这个寄存器用来设置时钟频率、倍频等相关
在这里插入图片描述
重点说明 SC_FREQ,SC_FREQ 是以 4Khz 为步进的一个时钟寄存器,当外部时钟不是 12.288M 的时候,其计算公式为:

										SC_FREQ=(XTALI-8000000)/4000

XTALI 的单位为 Hz,CLKI 是内部时钟频率,XTALI 是外部晶 振的时钟频率
我们使用的是 12.288M 的晶振,在这里设置此寄存器的值为 0X9800,也就是设置内部时钟频率为输入时钟频率的 3 倍,倍频增量为 1.0 倍

d.DECODE_TIME寄存器
用于存放解码时间,以秒钟为单位,我们通过读取该寄存器的值,就可以得到解码时间了
不过它是一个累计时间,所以我们需要在每首歌播放之前把它清空一下,以得到这首歌的准确解码时间

HDAT0 和 HDTA1 是两个数据流头寄存器,不同的音频文件,读出来的值意义不一样
通过这两个寄存器来获取音频文件的码率,从而可以计算音频文件的总长度

VOL 个寄存器
该寄存器用于控制 VS1053 的输出音量
比如设置为 0X0000 则音量最大,而设置为 0XFEFE 则音量最小。注意:如果设置 VOL 的值为 0XFFFF,将使芯片进入掉电模式!

三.硬件连接在这里插入图片描述

四.软件实现
1)复位 VS1053
这里包括了硬复位和软复位,是为了让 VS1053 的状态回到原始状态,准备解码下一首
歌曲。这里建议大家在每首歌曲播放之前都执行一次硬件复位和软件复位,以便更好的播放音乐。

2)配置 VS1053 的相关寄存器
这里我们配置的寄存器包括 VS1053 的模式寄存器(MODE)、时钟寄存器(CLOCKF)、音调寄存器(BASS)、音量寄存器(VOL)等。

3)发送音频数据
当经过以上两步配置以后,我们剩下来要做的事情,就是往VS1053里面扔音频数据了,只要是 VS1053 支持的音频格式,直接往里面丢就可以了,VS1053 会自动识别,并进行播放。不过发送数据要在 DREQ 信号的控制下有序的进行,不能乱发。这个规则很简单:只要 DREQ 变高,就向 VS1053 发送 32 个字节。然后继续等待 DREQ 变高,直到音频数据
发送完


http://chatgpt.dhexx.cn/article/B7D7qCnM.shtml

相关文章

ijkplayer音频解码播放架构分析

ijkplayer是一款跨平台播放器,支持Android与iOS播放,音频解码默认使用FFmpeg的avcodec软解。Android端播放音频可以用OpenSL ES和AudioTrack,而iOS端播放音频默认使用AudioQueue。 一、iOS音频解码播放 采用pipeline形式创建音频播放组件&a…

HIFI音频解码芯片ES9023

现在的HiFi播放器、解码耳放设备越来越多,推陈出新的速度也越来越快。各家厂商也都对产品进行了卖点细分,把新款旗舰级解码芯片拎出来宣传。美国ESS公司推出的ES9038Pro芯片大家都早已耳熟能详。 美国ESS系列芯片拥有行业高标准的信噪比 DNR(…

DP7398:国产兼容替代CS4398立体声24位/192kHz音频解码芯片

目录 DP7398简介结构框图芯片特性 应用领域 DP7398简介 DP7398是立体声 24 位/192kHz 数模转换芯片。该D/A系统包括数字去加重、半分贝步长音量控制、ATAPI 通道混频、可选择的快速和慢速数字插补滤波器和过采样多位增量 Sigma-Delta 调制器;该调制器采用失调整形技…

ijkplayer 音频解码线程

在ijkplayer 读线程中提到,函数stream_component_open()中的decoder_start()会创建音频解码线程,来看解码线程audio_thread()的主要代码 static int audio_thread(void *arg) {...do {...if ((got_frame decoder_decode_frame(ffp, &is->auddec…

ES9023音频解码芯片原理及应用简介

一般来说,音频解码器分为两类,一类是用于Hi-Fi听音的纯音频解码器,即指把CD机等数字音源器材一分为二后,去掉转盘(驱动光碟旋转读盘)的部分。 纯音频解码器的主要作用是把读取的数字音频信息转…

iOS的音频解码详解

在iOS平台上,所有的音频框架底层都是基于AudioUnit实现的,较高层次的音频框架包括: Media Player、 AV Foundation、OpenAL和Audio Toolbox,这些框架都封装了AudioUnit,然后提供了更高层次的API(功能更少,职责更单一的接口)。 当开发者在开发音视频相关产品的时候,如果…

FFmpeg音频解码流程详解及简单demo参考

本文主要讲解FFmpeg的音频解码具体流程,API使用。最后再以一个非常简单的demo演示将一个mp3格式的音频文件解码为原始数据pcm文件。 本文主要基于FFmpeg音频解码新接口。 一、FFmpeg音频解码API调用流程图 API接口简单大体讲解如下: av_register…

ffmpeg 音频解码一

1. ffmpeg 视频解码一 2. ffmpeg 视频解码二 3. ffmpeg 音频解码一 4. ffmpeg 音频解码二 5. ffmpeg 音视频解码 6. ffmpeg 视频编码一 7. ffmpeg 视频编码一(精简版) 8. ffmpeg 视频编码二(基于 libswscale 转换视频) 9. ffmpeg …

MP3音频解码详细过程(二)

最近做了无人机的音频解码,二周内从无任何音频基础到输出PCM数据码流到无人机上可以实现播报功能,其中遇到了许多莫名的坑,谨以此篇记录心得。也算交个作业。 架构设计思路:由usart 实时传输mp3音频码流,STM32F446 将…

低延迟音频中的音频解码优化策略

文章目录 前言音频播放举个例子:PortAudio回调函数解码与播放 优化策略1. 一次性读取音频到内存中2. MMAP3. 音频转码,再接 MMAP4. 解码缓冲 总结参考资料 前言 延迟是指信号在系统中传输所需的时间。下面是常见类型的音频应用相关延迟时间:…

音频编解码基础

1. PCM PCM 脉冲编码调制是Pulse Code Modulation的缩写。脉冲编码调制是数字通信的编码方式之一。主要过程是将话音、图像等模拟信号每隔一定时间进行取样,使其离散化,同时将抽样值按分层单位四舍五入取整量化,同时将抽样值按一组二进制码来…

音视频解码流程详解

1、解码整体流程 (1) 音频解码整体流程 (2)视频解码整体流程 2、FFmpeg音视频解码详细流程 3、关键数据结构 AVCodecParser:⽤于解析输⼊的数据流并把它分成⼀帧⼀帧的压缩编码数据。⽐较形象 的说法就是把⻓⻓的⼀…

FFmpeg 音频解码(秒懂)

1.简介 解码音频数据,如下图所示,把MP3或者AAC数据解码成原始的数据pcm。 2.流程 2.1在使用FFmpeg API之前,需要先注册API,然后才能使用API。当然,新版本的库不需要再调用下面的方法。 av_register_all() 2.2 构建输…

语音编解码技术演进和应用选型

本文来自现网易云音乐音视频实验室负责人刘华平在LiveVideoStackCon 2017大会上的分享,并由LiveVideoStack整理而成。分享中刘华平以时间为主线,讲述了语音编解码技术的演进路线及实际应用中的技术选型。 文 / 刘华平 整理 / LiveVideoStack 大家好&…

回访。

wyx 过来,还 sxt ,拿走了几张碟。为此,特意收拾了房间。还是被说没地方坐。 由于事先约了 zhmm 吃饭,没调开时间,所以,五点多,大家就一起吃了。大青花,东北风味儿。餐厅在二楼&…

客户信息管理软件系统

拟实现一个基于文本界面的《客户信息管理软件》 进一步掌握编程技巧和调试技巧,熟悉面向对象编程 主要涉及以下知识点: ▶类结构的使用: ▶对象的创建与使用 ▶类的封装性 ▶声明和使用数组 ▶数组的插入、删除和替换 ▶关键字的使用&#xf…

企业如何通过CRM系统有效触达客户,获取潜在商机

“守株待兔”式坐等客户上门的时代了已经过去了,尤其是在存量时代,企业想要提高销售,扩大客源,就要不断的通过各种渠道来去拓展自己的客户和销路,而互联网时代,获客的渠道也丰富多样,企业选择好…

呼叫中心系统接入CRM客户管理系统

呼叫中心是企业与客户建立联系的桥梁,企业想要发展必须要有统一的客户管理系统,呼叫中心与客户管理系统对接到一起能够更高效管理客户,档案数据更准确。 在以前企业都是通过纸质的客户档案管理客户的,寻找某个客户时特别不方便&am…

CRM管理系统、教育后台、赠品管理、优惠管理、预约管理、试听课、教师、学生、客户、学员、商品管理、科目、优惠券、完课回访、客户管理系统、收费、退费、回访、账号权限、订单流水、Axure原型、rp原型

CRM管理系统、教育后台、赠品管理、优惠管理、预约管理、试听课、教师、学生、客户、学员、商品管理、科目、优惠券、完课回访、客户管理系统、收费、退费、回访、账号权限、订单流水、Axure原型、rp原型 Axure原型演示及下载地址:https://www.pmdaniu.com/storage…

在线云客服管理系统、会话管理、访客管理、客户管理、工单管理、会话记录、考勤统计、数据报表、工单设置、全局设置、转人工服务、自动回复、客户标签、客服监控、客服系统、前端会话、客服管理、在线客服、人工客服

在线云客服管理系统、会话管理、访客管理、客户管理、工单管理、会话记录、考勤统计、数据报表、工单设置、全局设置、转人工服务、自动回复、客户标签、客服监控、客服系统、前端会话、客服管理、在线客服 、人工客服 Axure原型演示及下载地址:Untitled Documenth…