|
在之前的博客(blog.csdn.net/chengdong1314/article/details/54099694)我们已经实现了分部分传输wav数据到开发板然后进行音乐播放了,但是这样传输数据太麻烦,既要把数据弄出一段段32768字节的数据还要多次发送,这种办法太笨,所以这里将实现通过网络调试助手发送整个wav文件。
这里网络调试助手界面和串口助手截图如下:
我再第一次运行程序的时候发现当发送完成的时候开发板上并没有播放音乐,查看串口打印发现最后的总大小竟然小于文件的大小,最后检查代码找到了一个bug,如下:
os_printf("total_size:%x sector:%x per_residue:%x\n",file_total_size100,sector100,per_residue);
if(sector100 > AUDIO_FLASH_STOP_SECTOR){
file_total_size100 += per_residue;
}
if(file_total_size100 >= file_size) //下载完成
{
if(file_size > AUDIO_FLASH_LEN) //文件总长度打印flash长度,只播放音频的flash长度
file_total_size100 = AUDIO_FLASH_LEN;
printf("down load file end . file_total_size:%x\n",file_total_size);
sector100 = AUDIO_FLASH_START_SECTOR;
audio_voice_data100 = 1; //to inform interrupt of voice data coming
}
上图中红色的代码就是填上的bug,这里主要是因为当当前扇区大于音频的数据扇区的时候以后会拷贝出生于的字节,但是这时候却不会加上上面的剩余字节了,所以这里要填上上面的代码,保证接收到的数据不会出现遗漏。
最后这里测试发现一个很奇怪的现象:最后喇叭播放出来的声音十分的难听,不知道为什么,以后在慢慢调试吧。
难听的声音请看:download.csdn.net/detail/chengdong1314/9735309
这里上传上本博客的源代码:download.csdn.net/detail/chengdong1314/9735295
并且上传上本博客测试用到的wav文件和录音录到的wav文件:download.csdn.net/detail/chengdong1314/9735309
其中的《擦肩而过.wav》是最原本的音频文件,但是这个音频文件的格式是44.1Khz的采样率的,所以这里我通过《艾奇音频转换器全能大师》这个工具转出了8K采样率的文件,因为我们的工程目前是8K的采样率,转出的文件如下:《擦肩而过 _8K采样率.wav》
但是这里我发现即是改了采样率最终在喇叭上听到的声音还是很难听,不知道为什么!
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|