打印
[LPC]

NXP LPC1768宝马开发板 第二十二章 宝马1768——MP3播放录音

[复制链接]
745|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
开发环境:集成开发环境μVision4 IDE版本4.60.0.0
主机系统:Microsoft Windows XP
开发平台:旺宝NXP LPC1768开发板
22.1 VS1003录音
22.2 程序说明
22.3  实验现象
1VS1003录音:
VS1003是一个单片MP3/WMA/MIDI音频解码器和ADPCM编码器,上一节我们介绍了VS1003MP3解码,本节我们将介绍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播放例程进行修改,添加了按键控制录音,停止播放等功能。其主函数如下:
程序开始初始化LCDVS1003DA转换、按键、和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)




相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:专业生产销售STM32开发板,仿真器,http://openmcu.taobao.com/

71

主题

283

帖子

11

粉丝