Hi3521音频调试技巧.pdf

Hi3521音频调试技巧.pdf

ID:48021442

大小:259.42 KB

页数:4页

时间:2020-01-20

Hi3521音频调试技巧.pdf_第1页
Hi3521音频调试技巧.pdf_第2页
Hi3521音频调试技巧.pdf_第3页
Hi3521音频调试技巧.pdf_第4页
资源描述:

《Hi3521音频调试技巧.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Hi3521音频调试技巧Hi3521音频调试技巧noWorriesBlog:blog.csdn.net/noworries摘要本文主要总结了如何在海思Hi3521芯片上调试音频的方法以及技巧关键词Hi3521、音频、方法、技巧一、Hi3521与解码芯片框图不管是Hi3521芯片还是其他CPU芯片与音频解码芯片连接的信号主要包括了以下两类:音频数据信号,主要用于CPU和解码芯片(codec)之间音频数据传输,通过I2S、DSP、SSP传输;解码控制信号,主要用于CPU配置解码芯片(codec)的工作模式,一般通过I2C、SPI传输。如:此处的Hi3521+NVP1118B芯片框图如下所示:I2

2、SHi3521NVP1118BI2CHi3521和NVP1118B之间的数据传输又分为了Playback(回放)和Record(录音)两种数据模式,因此,更为详细的框图如下所示(其中上面三根为Playback信号线,中间三根为Record信号线):Hi3521NVP1118BI2C二、Hi3521芯片I2S和I2C工作原理Hi3521管理I2S的模块称为SIO或者AIO,即海思将音频输出输出模块在软件上进行了封装处理,将其划分成了输入模块和输出模块。其I2C可以采用硬件I2C和也可以采用gpio模拟I2C,在linux中采用Hi3521音频调试技巧gpio模拟i2c时需要注意采用自旋锁、信号

3、量等机制进行保护,以保证一个自己读写的完整性,一般采用自旋锁进行。此处主要介绍Hi3521的Linux解码g.711u音频的时候需要注意的问题。经过几天的测试发现Hi3521在通过I2S传输数据的时候封装了一层协议,也就是说如果直接将g.711u的音频数据发送给音频解码部分,则会出现音频解码无法识别数据帧错误。三、g.711u音频解码协议1、Hi3521芯片Hi3521芯片音频解码协议格式(一帧)如下所示:帧头数据字节4320内容0x000x100xA00x00音频数据因此,在将音频数据发送给解码器之前,进行如上协议封装以后再发给解码器即可以完成g.711u音频数据的解码工作。四、协议的封装

4、与解封1、Hi3521g.711u解码协议的封装Hi3521g.711u协议的封装即使将纯粹的g.711u的音频数据加上帧头,符合解码格式的帧数据这样一个过程。代码:#include#includeintmain(intargc,char*argv[]){FILE*pInFile=fopen(argv[1],"rb");FILE*pOutFile=fopen("encode_out.g711u","wb");if(NULL==pInFile

5、

6、NULL==pOutFile){printf("openfilefailed");return0;}inti

7、Ret=0;intiRead=0;unsignedcharucInBuff[640]={0x00,0x01,0xA0,0x00};unsignedcharucOutBuff[328]={0x00,0x01,0xA0,0x00};while(1){iRead=fread(&ucInBuff[4],1,320,pInFile);if(iRead>0){printf("iRead=%d",iRead);fwrite(ucInBuff,1,324,pOutFile);Hi3521音频调试技巧}else{printf("readtheend");break;}}fclose(pInFile);

8、fclose(pOutFile);}2、Hi3521g.711u协议的解封解封过程既是将其中的Header去掉即可,代码如下:#include#includeintmain(intargc,char*argv[]){FILE*pInFile=fopen(argv[1],"rb");FILE*pOutFile=fopen("encode_out.g711u","wb");if(NULL==pInFile

9、

10、NULL==pOutFile){printf("openfilefailed");return0;}intiRet=0;intiRead=0;uns

11、ignedcharucInBuff[640]={0x00,0x01,0xA0,0x00};unsignedcharucOutBuff[328]={0x00,0x01,0xA0,0x00};while(1){iRead=fread(ucInBuff,1,324,pInFile);if(iRead>0){printf("iRead=%d",iRead);fwrite(&ucInBuff[4],1,320,pO

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。