GD32F3开发进阶教程 课件 ch14录音播放实验_第1页
GD32F3开发进阶教程 课件 ch14录音播放实验_第2页
GD32F3开发进阶教程 课件 ch14录音播放实验_第3页
GD32F3开发进阶教程 课件 ch14录音播放实验_第4页
GD32F3开发进阶教程 课件 ch14录音播放实验_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

录音播放实验“第十四章《GD32F3开发进阶教程——基于GD32F303ZET6》01实验内容本章实验的主要内容是进一步学习VS1053b芯片,包括该芯片录音部分寄存器的相关设置,了解录音生成的WAV文件格式,最后基于GD32F3苹果派开发板设计一个录音播放实验,通过咪头、麦克风等外设获取音频后,经过VS1053b芯片编码生成WAV文件并存储在SD卡中,然后通过耳机播放录制的音频。实验内容02实验原理WAV即WAVE文件,是计算机领域常用的数字化声音文件格式之一,符合RIFF(ResourcelnterchangeFileFormat)文件规范,是微软专门为Windows系统定义的波形文件格式(WaveformAudio)因此可用于保存Windows平台的音频信息资源该格式同时被Windows平台及其应用程序所广泛支持。WAV格式也支持MSADPCM、CCITTALAW等多种压缩运算法,支持多种音频数字,取样频率和声道,标准格式化的WAV文件使用44.1kHz的取样频率,16位量化数字。WAV文件格式WAV文件格式1.RIFF块:RIFF块在程序中的定义如程序清单14-1所示。WAV文件格式2.Format块:Format块在程序中的定义如程序清单14-2所示。WAV文件格式3.Fact块:Fact块在程序中的定义如程序清单14-3所示。WAV文件格式4.Data块:Data块在程序中的定义如程序清单14-4所示。VS1053b芯片录音功能VS1053b芯片激活PCM录音需要设置的存器和相应位的说明如表14-1所示。音频电路录音部分原理图1.咪头电路原理图咪头电路原理图如图14-1所示。音频电路录音部分原理图2.麦克风电路原理图麦克风电路原理图如图14-2所示。03实验代码解析1.Recorder.h文件在Recorderh文件的“举结构体”区,添加了WAV文件的RIFF和Format等块的结构体声明,并添加了结构体StructWavHeader的声明。Recorder文件对Recorder文件对Recorder文件对在“API函数声明”区,声明了5个API函数,如程序清单14-6所示。2.Recorder.c文件在Recorder.c文件的“包含头文件”区,包含了fh和Malloc.h等头文件,fc文件的代码包含了SD卡块读写函数,在Recorderc文件中需要通过调用这些函数将录音文件写入SD卡,因此需要包含fh头文件。由于内存的申请和释放需要调用MyMalloc和MyFree等函数因此,还需要包含Malloc.h头文件。在“宏定义”区,定义了录音数据缓冲区大小及录音文件名字缓冲区最大长度。Recorder文件对Recorder文件对Recorder文件对在“内部变量定义”区,进行了如程序清单14-8所示的内部变量定义。Recorder文件对在“内部函数声明”区声明了6个内部函数,如程序清单14-9所示。Recorder文件对在“内部函数实现”区,首先实现了EnterRecorderMode函数,如程序清单14-10所示。1RecordPlayer.h文件在RecordPlayerh文件的“API函数声明”区,声明了6个API函数。InitRecordPlayer函数用于初始化录音播放模块,RecordPlayerPoll函数用于录音播放轮询任务,SaveRecordName函数用于保存录音文件名称,StartRecordPlay函数用于播放录音,PauseRecordPlay函数用于暂停播放录音,IsRecordPlayerIdle函数用于判断录音播放器是否为空闲状态。RecordPlayer文件对2.RecordPlayer.c文件在RecordPlayerc文件的“包含头文件”区,包含了h和Malloc.h等头文件与Recorder.c文件相同,在RecordPlayerc文件中,需要调用相应函数完成对SD卡文件的读取以及内存的申请和释放,因此需要包含这两个头文件。在“枚举结构体”区,添加了如程序清单14-15所示的举声明代码,该枚举定义了录音播放器的5种状态。RecordPlayer文件对RecordPlayer文件对RecordPlayer文件对在“内部变量定义”区,添加了如程序清单14-16所示的内部变量定义代码。在“API函数实现”区,首先实现InitRecordPlayer函数,该函数通过将录音播放器的状态设置为空闲状态,来完成对录音播放器的初始化。在ImitRecordPlayer函数实现区后为RecordPlayerPoll函数的实现代码如程序清单14-17所示。RecordPlayerPoll函数用于实现录音播放器的轮询任务,根据录音播放器的当前状态执行不同的命令,该函数与Recorder.c文件中的录音机轮询任务函数RecorderPoll类似。RecordPlayer文件对在AudioTop.c文件的“包含头文件”区的最后添加了代码#include"Recorderh"和#include

RecordPlayer.h"在PlayCaliback、RecordCallback和PauseCallback函数中分别加入了不同的状态切换函数。最后,在音频顶层模块轮询函数AudioTopTask中添加了调用录音播放轮询任务函数RecordPlayerPol1和录音轮询函数RecorderPol1的代码。AudioTop.c文件AudioTop.c文件实验结果将SD卡插入开发板,下载程序并进行复位。可以观察到开发板上的LCD显示如图14-3所示的GUI界面。实验结果单击中间的录音按钮,开始录音,GUI界面如图14-4所示,串口助手显示“开始录音”再次单击录音按钮停止录音,串口助手显示“录音完成”。实验结果此时,单击左侧的播放按钮开始播放录音,GUI界面如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论