开发环境:集成开发环境μVision4 IDE版本4.60.0.0 主机系统:Microsoft Windows XP 开发平台:旺宝NXP LPC1768开发板 22.1 VS1003录音 22.2 程序说明 22.3 实验现象 1、VS1003录音:VS1003是一个单片MP3/WMA/MIDI音频解码器和ADPCM编码器,上一节我们介绍了VS1003的MP3解码,本节我们将介绍ADPCM编码,即录音功能。其配置主要需要使用到如下几个寄存器: AICTRL0用户控制寄存器0:配置采样频率Fs=8KHz 这里外部晶振为12.268M Fc=12.268*3 Fs=Fc/(256*AICTRL0) 即AICTRL0=0x12=18 AICTRL1用户控制寄存器1:设置线性增益 AICTRL1=0表示自动增益 AICTRL1=1024表示增益为1 MODE:模式设置 当设置为录音模式时SM_ADPCM=1 若SM_LINE=0录音源为麦克风,否则为线路输入 HDAT1:采样缓冲区长度,VS1003拥有一个1024*16bit长度的采样缓冲区,缓冲区每块128*16bit长度,因此在程序中判断当HDAT1大于128时开始读取数据,当缓冲区溢出后HDAT1寄存器将自动清零。 HDAT0:当VS1003被配置为录音模式时,该寄存器存放录音数据,即相当于采样缓冲区的出口数据(两个八位数据),高八位为前一条记录,如果把低八位作为前一条记录存储起来时,播放时会出现噪音。 单片机将从HDAT0中读到的数据存放在wav文件下面,用户需要另行添加wav文件头,这里VS1003芯片官方已经为我们提供了wav头: 2、程序说明:本例程根据MP3播放例程进行修改,添加了按键控制录音,停止播放等功能。其主函数如下: 程序开始初始化LCD、VS1003、DA转换、按键、和SD卡文件系统,这里按键配置为外部中断,当按键按下时改变status值,从而进入到while循环里面的if else语句里面执行相应的代码,当按键INT0按下时status=1进入到录音子函数里面开始录音,当按键Key1按下时status=2开始播放录音文件,当按键Key2按下时开始播放1.mp3文件。在播放文件时循环查询滑动变阻器值来改变播放音量。 当INT0按下时进入到录音模式,开始配置VS1003为录音模式,创建wav文件并写入临时的头信息,循环读取VS1003录取到的数据,每次512字节后写入到wav文件,当有其他按键按下时跳出while循环将VS1003复位,更新头信息。这里每次写入512字节,因此对应官方提供的文件头“data”和后面的四个字节对应的写入到文件的504字节处。 上图是将VS1003配置为录音模式,其中寄存器可以参考VS1003。当录音的数据存放在SD卡后,其播放与mp3播放相同,这里就不在重复了。 3、实验现象: 将1.mp3文件拷入到2G SD中并插入到开发板SD卡座上面,插上3.2寸彩屏模块,下载程序到开发板,才显示按键功能信息,SD卡初始化成功,按下INT0开始录音,按下Key1键录音结束并开始播放录音文件,按下Key2键播放1.mp3文件。 注:宝马1768开发板默认配置没有安装mic头,需要用户另行购买焊接
【22】宝马1768_mp3播放录音(2014.05.10).rar
(924.28 KB, 下载次数: 6)
|