完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
VS1003录音到FlashROM WAV文件播放[简易Flash录音笔]
录音是VS1003的另一个大的功能,但据我了解,很多人都没有真正把录音功能调试出来! 主要原因有几点: 1、VS1003对于SPI的速度是有一定限制的,SPI速度不能太快,一般SPI时钟要低于500kbps。这一点是导致VS1003驱动失败,尤其是录音数据读取失败最主要的原因(播放的时候,向VS1003送数时SPI速度快点似乎还影响不大,但是读取录音数据时,SPI高一些则直接导致读取错误,这一点振南经过实验已经得到验证!!)。 2、VS1003录音向外输出的不是简单的原始音频PCM数据,而是经过了简单的编码的ADPCM数据(自适应差分脉码调制,是不是感觉很高深,没什么,很简单,振南会在后面详细讲解!!)。这些数据是不能直接用来播放的,而是需要解码的。要把他们存为WAV文件,不需要给它配上一个RIFF数据头,RIFF数据头里对音频数据的信息进行了描述,比如采样率多少、双声道还是单声道、位数多少、编码算法是哪种、音频数据有多长。。。等等。这样WAV就可以用常用的播放器来直接播放了!!很多人并不知道这一点,或者RIFF数据头写错了,从而导致录音后的WAV文件播放不正常。 在前面的测试实验中,振南只是使用LOOPBACK录音回放来对VS1003的音频采集通道进行了简单的测试。并没有真正实现录音数据的存储以及回放。这似乎有些牵强,不能算是真正的录音!! 这里振南将把录音实验作得更加深入,读取VS1003的录音数据,并真正把它打包封装为WAV文件,可以使用常用的播放器(暴风、WMP等)进行播放。 这里我们将遇到两个问题: 1、把录音音频数据读出后,存在哪里?(录音数据量是比较大的,而且数据速率是很快的,我们不光需要一个大容量的存储器,同时数据写入速率也要快!) 2、最终产生的WAV数据应该如何上传到PC,使用播放器来播放? 振南ZN-X开发板(51版)上使用的单片机为STC15L2K60S2,它虽然是一种增强型的51单片机,但是它的内存资源仍然是极为有限的,只有2KB(其实这已经算是比较大的了!)。所以录音数据想放在内存里暂存,是不可能的!我们唯一的选择是把它存在AT45DB161中(我们的好几个实验中都使用到AT45DB161,可见FlashROM是很有用的),它的容量为2MB(2048KB)。如果按录音采样率8KHz、采样位数16位计算,每秒我们从VS1003中读取的音频数据量大约为4KB(似乎不对吧,应该是16KB吧?!前面我已经说了,VS1003输出的不是纯音频数据,而是经过ADPCM编码后的压缩数据,ADPCM的压缩率为1:4!!) 既然音频数据被存到AT45DB161中,那我们就可以使用上传命令很方便地完成数据的上传 命令:at45db161test up 0xaddres len ,通过超级终端存为WAV文件,即可直接进行播放!! 振南设计了专门的命令来测试这个录音功能: mp3test record 0xaddres (0xaddres是AT45DB161的开始地址(字节地址)) SHELL命令实验截图: 还记得在前面AT45DB161的测试中,使用的数据上传命令吗? at45db161test up 0xaddres len 通过超级终端的XMODEM传输,把数据存为WAV文件,即可直接播放! 实际录音效果实例(大家可以下载试听):【百度云盘】 【腾讯微云】 |
|
相关推荐
1 个讨论
|
|
726 浏览 0 评论
777 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
680 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1149 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1120 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11800 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 09:39 , Processed in 0.507848 second(s), Total 34, Slave 28 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号