所需主要硬件:STC12L2K60S2
VS1003B(MP3解码器)
SD/SDHC卡
USB串口模块(用于输出打印信息)
作者 :振南
实验功能描述:此实验使用VS1003B的录音功能,VS1003B通过SPI接口输出IMA ADPCM编码的音频数据。STC51单片机创建WAV文件,将数据存入其中,最终形成波形音频文件。实验中,通过按键来控制录音的启停。可多次录音,每次都会创建新的WAV文件,如REC0.WAV REC1.WAV等。录制的WAV文件,可以在SD卡上看到,通过电脑上的播放软件直接进行回放。实验示意如图1。
图1 录音笔实验示意图
实验硬件平台如图2。
图2 录音笔实验硬件平台
此实验视频演示请见振南个人网站,实验效果如图3、4、5。
图3 录音笔实验串口信息
图4 实验中生成的WAV文件及其相关信息
图5 通过CoolEdit软件看到的音频波形图
振南评注:VS1003B在本书以及振南的实验中都占有较为重要的地位。一直以来我都只是在使用它的音频解码功能,而没有用到它的录音功能。虽然有过几次要作录音实验的想法,但都是浅尝辄止,并没有实质性的成果。还好最后终于完成了这个录音笔实验,现在感觉VS1003B的录音功能还是挺简单的。实现录音功能的最大问题在于数据的存储速度。对于音频数据采集来说,在给定一个采样频率与精度之后,它在单位时间内所产生的数据量就是一定的了。我们必须要在这段时间内完成数据接收与写入文件的操作,一点都不能慢,否则必然影响后面音频数据的处理,最终可能导致音频文件播放的卡顿或失真,或者根本放不出声音。比如对于8kHz、单通道的16位音频来说,它的数据速率为128Kbps(16KBps),这要求SPI接口以及znFAT向SD卡中写入数据的速度一定要能跟得上。所以,在此实验中振南使用了硬件SPI,并开启了znFAT的各种缓冲加速机制,这使得音频录制毫无压力。不过,像这种低质量的音频,就算使用IO模拟SPI,不开启加速机制,以现在振南的SD卡驱动与znFAT的性能水平来说也绝对没有问题。而对于高质量音频的录制,比如48kHz采样率、双通道立体声,也许数据读写速度的关键性就会突显了。(此实验的具体实现以及WAV文件格式相关内容请参见振南人个网站及相关发布平台)。 在线视频演示:
录音实验视频:
PC端WAV波形显示与音频回放
源代码:
vs1003 recorder.rar
(535.18 KB)
|