从0开始编写VS1053音频解码芯片的底层驱动代码(适用于任何单片机)

VS1053是一个高性能的音频解码器芯片,它是干什么的? 他有两个功能:()用来解码音频文件播放音乐的。(2)将麦克风听到的声音编码成音频文件数据,配合单片机可以保存到SD卡。

单片机加上一个VS1053就可以轻松做一个音乐播放器、一个录音机 等项目。

VS1053支持两种协议:SPI协议和IIS协议。 这篇文章是介绍采用软件模拟的SPI协议,完成对VS1053芯片的控制。完成音频播放、录音的功能。

写出的这份代码不依赖于任何单片机型号,不依赖单片机的硬件本身功能,属于纯粹的软件层逻辑代码。不管你是51单片机、STM32单片机、还是树莓派等等单片机。都可以使用,都可以驱动VS1053。
在这里插入图片描述

文章目录

  • 一、从0开始学习VS1053音频(编码/解码)芯片寄存器与时序
    • 1.1 VS1053B音频编解码器简介
      • 【1】VS1053B功能介绍
      • 【2】VS1053B原理图介绍
    • 1.2 VS1053B音频解码芯片控制
      • 【1】VS1053B SPI模式时序图
      • 【2】SPI传输模式介绍
      • 【3】VS1053 SCI寄存器列表
      • 【4】MODE 寄存器介绍
      • 【5】BASS 寄存器介绍
      • 【6】CLOCKF寄存器介绍
      • 【7】DECODE_TIME寄存器介绍
      • 【8】HDAT0 和 HDTA1寄存器
      • 【9】VOL输出音量寄存器介绍 (VS1053_SetVol)
    • 1.3 VS1053B解码播放音乐步骤说明(VS1053_PlayOneMusic)
      • 【1】播放音乐流程
      • 【2】硬件复位步骤
      • 【3】进行软件复位并设置SPI为新模式
      • 【4】向VS1053写寄存器数据
      • 【5】读取VS1053寄存器的数据
    • 1.4 VS1053录音功能
      • 【1】VS1053录音功能说明与插件加载
      • 【2】激活PCM录音模式 (VS1053_RecoderInit)
      • 【3】WAV音频文件结构
      • 【4】读取咪头采集的音频数据
      • 【5】录音的流程(RecoderPlay)
      • 【6】WAV文件频率设置说明
  • 二、完整的代码
    • 2.1 vs1053.c
    • 2.2 vs1053.h

一、从0开始学习VS1053音频(编码/解码)芯片寄存器与时序

1.1 VS1053B音频编解码器简介

【1】VS1053B功能介绍

VS1053b 是单片Ogg Vorbis/MP3/AAC/WMA/MIDI音频解码器,及IMA ADPCM 编码器和用户加载的Ogg Vorbis编码器。

支持:MP3/WMA/OGG/WAV/FLAC/MIDI/AAC 等音频格式的解码,并支持:OGG/WAV音频格式的录音,支持高低音调节设置,功能十分强大。

它包含了一个高性能、有专利的低功耗DSP 处理器内核VS_DSP4、工作数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/749010.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Visio文件编辑查看工具:Visio Viewer for Mac 激活版

Visio Viewer 软件通过该软件,用户可以在没有Visio软件的情况下查看使用Visio创建的绘图和图表,方便用户对复杂信息的可视化、分析和交流。Visio Viewer 2007是一个功能强大的软件,它可以帮助IT和商务专业人员轻松地可视化、分析和交流复杂信…

AI论文降重:一键操作,让你的论文查重率瞬间下降

高查重率是许多毕业生的困扰。通常,高查重率源于过度引用未经修改的参考资料和格式错误。传统的降重方法,如修改文本和增添原创内容,虽必要但耗时且成效不一。 鉴于此,应用AI工具进行AIGC降重成为了一个高效的解决方案。这些工具…

PyCharm 2024.1最新变化

PyCharm 2024.1 版本带来了一系列激动人心的新功能和改进,以下是一些主要的更新亮点: Hugging Face 模型和数据集文档预览:在 PyCharm 内部快速获取 Hugging Face 模型或数据集的详细信息,通过鼠标悬停或使用 F1 键打开文档工具窗口来预览。 …

基于springboot、logback的日志脱敏组件

Logback⽇志数据脱敏⼯具:隐私和安全的守护者 概述 在涉及敏感数据的⽇志记录环境中,数据保护和个⼈隐私⽆疑是⾄关重要的领域。确保敏感数据不被泄露,脱敏处理成为必不可少的⼀步。数据脱敏是⼀种技术⼿段,其将敏感信息转换为不…

注意!流量卡的禁区并不一样,请看清楚后再下单!

大家好,我是搜卡之家,今天我又来给大家科普了! 今天科普的内容是关于流量卡禁区! 首先要说一下,流量卡为什么会有禁区?运营商设立禁区主要是为了应对电信诈骗和违法使用电话卡的行为,确保网络…

Studying-代码随想录训练营day21| 669.修建二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树、二叉树总结

第21天,二叉树最后一篇,冲💪 目录 669.修建二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 二叉树总结 669.修建二叉搜索树 文档讲解:代码随想录修建二叉搜索树 视频讲解:手撕修建二叉…

NAT和内网穿透

NAT(Network Address Translation,网络地址转换)是一种广泛应用于计算机网络的技术,其主要目的是为了解决IPv4地址空间的短缺问题,并且增强网络安全。NAT技术允许一个私有网络内的多个设备共享一个或几个全局唯一的公共…

【Python实战因果推断】2_因果效应异质性2

目录 CATE with Regression Evaluating CATE Predictions CATE with Regression 我想你可能已经预料到了:与应用因果推理中的大多数情况一样,答案往往从线性回归开始。但在走这条路之前,让我们把事情变得更具体一些。假设你在一家遍布全国的…

nuxt3项目打包后获取.env设置的环境变量无效的解决办法

问题描述 在nuxt3项目开发过程中,设置了开发环境变量和生产环境变量,在本地开发时都能正常获取,但打包部署时获取不到,设置如下: //.env.development文件示例 SERVER_API_PATHhttp://192.168.25.100//.env.productio…

Shell (一)Ubuntu的网络配置及软件安装

Ubuntu的配置及软件安装 网络配置 虚拟机提供的网络类型 桥接模式 主机和虚拟机分别拥有不同的ip地址,可以实现和外界设备通信 NAT模式 也可以联网,但是和主机共用同一个ip地址,外界无法识别虚拟机和主机发送的信息 仅主机模式 虚拟机不可…

【Chapter9】设备与IO管理,计算机操作系统教程,第四版,左万利,王英

文章目录 [toc]零、设备管理的功能和目标0.1 设备管理的功能0.2 设备管理的目标 一、设备的分类1.1 输入输出型设备和存储型设备(用途)1.2 独占型设备和共享型设备 二、设备的物理特性2.1 IO设备的物理特性2.2 存储型设备的物理特性2.2.1 磁带的物理特性…

nest.js关键笔记

Nest.js 介绍核心功能设计模式:IOC 控制反转 DI 依赖注入前置知识:装饰器前置知识装饰器-实现一个GET请求 Nestjs脚手架Nestjs cli 常用命令 RESTful 风格设计Nestjs 控制器控制器中常见的参数装饰器 Session 实例Nestjs 提供者工厂模式异步模式 Nestjs …

高中数学:不等式-常用不等式知识点汇总

一、基本性质 比较大小的常用两种方法:作差法,作商法 等式性质 不等式性质 二、基本(均值)不等式 扩展 三、二次函数与一元二次方程不等式 定义 解的对应关系 一元二次不等式的求解过程 四、二元一次不等式(组)与线性规划 关键在于求多个不等…

vite-ts-cesium项目集成mars3d修改相关的包和配置参考

如果vite技术栈下使用原生cesium,请参考下面文件的包和配置修改,想用原生创建的viewer结合我们mars3d的功能的话。 1. package.json文件 "dependencies": {"cesium": "^1.103.0","mars3d": "^3.7.18&quo…

pytorch为自己的extension backend添加profiler功能

pytorch为自己的extension backend添加profiler功能 1.参考文档2.your-extension-for-pytorch需要增加的代码3.pytorch demo及如何调整chrome trace json文件4.[可视化](https://ui.perfetto.dev/) 本文演示了pytorch如何为自己的extension backend添加profiler功能 背景介绍 …

Verilog进行结构描述(二):Verilog基本单元(primitives)

目录 1.Verilog基本单元2.基本单元的引脚 (pin)的可扩展性3.带条件的基本单元4.基本单元实例化 微信公众号获取更多FPGA相关源码: 1.Verilog基本单元 Verilog基本单元提供基本的逻辑功能,也就是说这些逻辑功能是预定义的,用户不需要再定义…

后端之路第三站(Mybatis)——JDBC跟Mybatis、lombok

一、什么是JDBC JDBC就是sun公司研发的一套通过java来操控数据库的工具,对应不同的数据库系统有不同的JDBC,而他们统称【驱动】,这就是上一篇我们提到创建Mybatis项目时要引入的依赖、以及连接数据库四要素里的第一要素。 JDBC有自己一套原始…

应用案例 | 如何监测高价值货物在物流运输过程中受到的振动和冲击?全面保障货物安全

一、货物运输 不同种类的货物对运输的要求不同,钢铁、煤炭、矿石等大宗物资通常对运输要求较低,而电子产品、IT 产品、家电等高价值敏感类货物则更强调运输的安全性和时效性,往往希望能尽可能安全和快速送达这类货物,使之尽快进入…

使用nvm命令进行node和npm版本下载以及切换

下载以及安装nvm方式 https://blog.csdn.net/ppz8823/article/details/130862191 1.查看nvm版本 nvm -v2.查看node 和 npm版本 node -v npm -v3.使用nvm查看已下载的node版本 nvm ls4.使用nvm 查看可使用的在线node版本 nvm list available4.下载想要使用的node版本&#x…

探索 LLMs 在数据标注中的应用潜力:观察、思考与前景展望

编者按: 目前,LLMs 在机器翻译、文本生成、多轮问答等任务上已表现得非常出色了。人们开始思考它们是否也可以用于数据标注工作。数据标注是训练和评估各种机器学习模型的基础,一直是一项昂贵且耗时的工作。是否能够借助 LLMs 的强大能力来为…