基于正点原子教程

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 变高,直到音频数据
发送完

基于STM32音频解码MP3——vs1053相关推荐

  1. 基于STM32的简易MP3音乐播放器

    设计简介 本设计硬件主要利用STM32单片机,SD卡.设计思路:本设计通过STM32单片机读取SD卡里的音频文件,再通过DAC进行输出,DAC输出后接一个运放模块,再接一个喇叭.利用STM32cube ...

  2. 基于STM32的多功能MP3设计 毕业设计(论文)开题报告

    中国计量学院 毕业设计(论文)开题报告 学生姓名:卢杰学 号:XXXXXXXXX 专    业:电子科学与技术 班    级:10电子1 设计(论文)题目: 基于STM32的多功能MP3设计 指导教师 ...

  3. STM32音频频谱分析设计方案(程序+原理图+PCB)

    本设计: 基于STM32音频频谱分析设计方案(程序+原理图+PCB) 原理图:Altium Designer 程序编译器:keil 5 编程语言:C语言 编号C0030 功能说明: 硬件系统组成=ST ...

  4. stm32 mp3软件音频解码案例分析流程(一)

    最近做了一个无人机的语音播放项目,查了一下网上大部分都是硬件解码,成本相对比较高,而为了节约成本, 我们采用了stm32f446 RET6作为主控+tas5720作为dac功放,实现mp3软件音频解码 ...

  5. 硬件课程设计:基于STM32的多功能播放器之MP3音乐播放

    3 MP3音乐播放 3.1 功能介绍 3.1.1 设计思路 音乐播放是手机等电子产品最常见的功能,也是最具娱乐性的功能,在该模块中,我先从SD卡中读取已存放的MP3音乐文件,然后将读取的字节流依次送人 ...

  6. 基于libmad库的MP3解码简析

    基于libmad库的MP3解码简析  MAD (libmad)是一个开源的高精度 MPEG 音频解码库,支持 MPEG-1(Layer I, Layer II 和 LayerIII(也就是 MP3). ...

  7. 基于 CoreAudio 的音频编解码(一):音频解码

    系列文章目录 基于 CoreAudio 的音频编解码(一):音频解码 基于 CoreAudio 的音频编解码(二):音频编码 前言 Core Audio 是iOS和MAC系统中的关于数字音频处理的基础 ...

  8. 基于Stm32的MP3播放器设计与实现

    原创博文,转载请注明出处 这是我高级电子技术试验课做的作业,拿来共享一下.项目在安福莱例程基础之上进行的功能完善,里面的部分内容可参考安福莱mp3例程.当然用的板子也是安福莱的板子,因为算起来总共做了 ...

  9. 基于STM32单片机实现多功能MP3播放器系统设计

    百度网盘下载地址(942):点击下载 本项目是基于STM32F103来制作一个多功能MP3,除了可以实现MP3播放的基本功能之外,同时拥有丰富并实用的外扩功能,整个系统的功能包括:MP3播放功能.收音 ...

最新文章

  1. windows server系统,登录系统提示按下 ctrl+alt+delete
  2. 中国开封菊花花会照片1
  3. tf rnn layer
  4. 发行版迁移及二进制兼容性注意事项
  5. master分支 合并到main_10 月 1 日后,GitHub 默认分支不再叫master!
  6. 读书笔记_量化交易如何建立自己的算法交易01
  7. OC与Swift混编
  8. linux下sqlite3的使用
  9. 电脑 手机 模拟器IP地址怎么更换
  10. 国内硕士申请加拿大计算机博士难度,【经验分享】如何申请加拿大硕士研究生或者博士?...
  11. TFT液晶屏显示中英文
  12. 揭开智慧校园的神秘面纱
  13. 计算机网络地址块例题,计算机网络习题计算机络习题.ppt
  14. 海外自媒体多账号运营注意事项看这里!
  15. 新西兰.net和java_使用Linux容器分析气候变化和土壤对新西兰农作物的影响
  16. D-Link DIR645 1.03绕过认证查看配置文件漏洞复现与分析
  17. user.has_perm(perm) 中参数 perm 的格式问题 - Django
  18. Alternate Realities大赛作品引发的思考(二)——如何完全按照自己的思路制作一个toon shader
  19. 网络舆情信息传播动态监测查询方法
  20. CVPR2019中关于超分辨率算法的16篇论文

热门文章

  1. 【TS】546- 掌握 TS 这些工具类型,让你开发事半功倍
  2. 高NA镜头系统中的高级PSF计算
  3. DOM系列——001-DOM基础
  4. 解决iPhone手机音乐不能自动播放问题
  5. IDM下载神器全新详解教程:如何安装以及不限速下载某网盘资源
  6. tcp协议的三次握手
  7. ios12计算机丢失,苹果ios12拟我表情怎么找不到_苹果拟我表情使用教程
  8. 网页股票期货历史数据(API)
  9. SD销售订单退货,冲销,拆分开票,借贷凭证操作笔记
  10. ijkplayer Android 端简要使用流程