版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Good is good, but better carries it.精益求精,善益求善。DSP技术及应用实习报告DSP实习报告课程实习报告DSP技术及应用图像处理实习报告实习项目:语音信号的数字滤波器设计班级:信息11-2姓名:龙启金学号:20111605010226指导教师:刘柏生实验日期:2014.06.032014.05.13北华大学电气信息工程学院目录TOCo1-3hzuHYPERLINKl_Toc308360981一实习题目.PAGEREF_Toc308360981h2HYPERLINKl_Toc308360982二实习目的.PAGEREF_Toc308360982h2HYPER
2、LINKl_Toc308360983三实习要求.PAGEREF_Toc308360983h2HYPERLINKl_Toc308360984四系统原理描述.PAGEREF_Toc308360984h2HYPERLINKl_Toc308360985五方案论证及系统设计.PAGEREF_Toc308360985h3HYPERLINKl_Toc308360992六硬件电路设计图.7HYPERLINKl_Toc308360993七实习体会.7HYPERLINKl_Toc308360994八参考文献.8实习题目:语音信号采集、分析与处理系统设计实习目的:1、熟练掌握数字信号处理的典型设计方法与技术手段;2
3、、熟悉电子CAD制图与PCB板的制作方法;3、掌握常用电子仪器设备的使用方法;4、亲自动手完成一个DSP系统的设计与实现。实习步骤与要求:选择设计题目(第一天);1.1验收实习任务的预习情况。1.2熟悉实习硬件设备、软件环境平台。1.3组织学生选题与分组,每组最多不超过4人。2完成所设计电子系统的方案论证、原理论述与算法仿真(第2天);3.选择恰当的系统开发平台,绘制设计图样(第35天);4.编制系统程序,完成程序在线调试与仿真(第67天);5.验收设计成果(第8、9天);6.整理设计资料,撰写实习报告,(第10天)。系统原理描述1.DSP简介TIDSP系列中文手册:TMS320C55x系列D
4、SP指令系统、开发工具与编程指南主要内容:TMS320C55xDSP是美国德州仪器(TI)公司C500016位定点DSP系列里最新的一代产品。其拥有的资源与性能较目前使用最为广泛的C54x系列DSP有成数倍的提升,并进一步弘扬了低功耗、低成本、高速度的特征,是当前数字信号处理领域和各种便携式应用场合最具潜力的可选高性能DSP之一。TIDSP系列中文手册:TMS320C55x系列DSP指令系统、开发工具与编程指南以C55xDSP为对象,介绍其指令系统、开发工具和编程指南。全书共分为5章,其巾第1章介绍CCSDSP的基本结构和编程的基本过程;第2章详细介绍C55x的汇编语言指令系统;第3章介绍C5
5、5x的汇编语言开发工具;第4章则对C55x的软件开发工具及C/C+语言进行详细阐述;第5章详细介绍C55x的C/C+代码和汇编语言代码的优化。全书涉及几乎所有在C5000的硬件平台上开发一个完整的软件程序所必需的知识,由于其中的实例全部取自C55x,因此对开发C55x的本科生、研究生和丁程师具有更加重要的参考价值。数字信号处理(DigitalSignalProcessing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。数字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现
6、实信号的方法,这些信号由数字序列表示。在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为广泛的应用。德州仪器、Freescale等半导体厂商在这一领域拥有很强的实力。2.CCS简介英文全称:CodeComposerStudio中文译名:代码调试器,代码设计套件。CCS的全称是CodeComposerStudio,它是美国德州仪器公司(TexasInstrument,TI)出品的代码开发和调试套件。TI公司的产品线中有一大块业务是数字信号处理器(DSP)和微处理器(MCU),CCS便是供用户开发和调试DSP和MCU程序的集成开发软件。经典的版本号是CCS3.1、CCS3.3,最新版本号
7、已经更新到了4.x。4.x不仅界面上与3.x迥异,内核也大为不同,用户体验并不出色,故迁移至4.x的用户仍很少。CodeComposerStudioIDE提供强健、成熟的核心功能与简便易用的配置和图形HYPERLINK/view/3982458.htmt_blank可视化工具,使系统设计更快。开发周期中的功能:应用设计-包括DSPBIOS、参考框架和更新顾问编码与编译-包括C/C+和汇编语言以及CodeWright集成HYPERLINK/view/499644.htmt_blank编辑器调试-RTDX快速模拟和连接/断开连接分析与调优-包括实时分析、HYPERLINK/view/487018.
8、htmt_blank编译器分析和回卷。图像处理,是对图像进行分析、加工、和处理,使其满足视觉、心理以及其他要求的技术。图像处理是信号处理在图像域上的一个应用。目前大多数的图像是以数字形式存储,因而图像处理很多情况下指数字图像处理。此外,基于光学理论的处理方法依然占有重要的地位。方案论证及系统设计音频滤波实验有限冲击响应数字滤波器(FIR)的基础理论FIR数字滤波器是一种非递归系统,其冲激响应h(n)是有限长序列,其差分方程表达式为:SKIPIF10N为FIR滤波器的阶数。在数字信号处理应用中往往需要设计线性相位的滤波器,FIR滤波器在保证幅度特性满足技术要求的同时,很容易做到严格的线性相位特性
9、。为了使滤波器满足线性相位条件,要求其单位脉冲响应h(n)为实序列,且满足偶对称或奇对称条件,即h(n)=h(N-1-n)或h(n)=-h(N-1-n)。这样,当N为偶数时,偶对称线性相位FIR滤波器的差分方程表达式为SKIPIF10由上可见,FIR滤波器不断地对输入样本x(n)延时后,再做乘法累加算法,将滤波器结果y(n)输出。因此,FIR实际上是一种乘法累加运算。而对于线性相位FIR而言,利用线性相位FIR滤波器系数的对称特性,可以采用结构精简的FIR结构将乘法器数目减少一半。音频滤波实验,包含文件:DEC5502_Filter.c:这是实验的主程序,包含了系统初始化,系统时钟设置,初始化
10、DSP的外部EMIF。AIC.c:实现CODEC控制寄存器配置及AIC23设置功能;E2PROM_Function.c:实现E2PROM读写操作;I2C.c:进行I2C初始化;mcbsp.c:配置mcbsp;SEED_DEC5502.cmd:声明了系统的存储器配置与程序各段的连接关系。程序流程图CSL初始化系统时钟设置初始化DSP的外部EMIFI2C初始化设置并启动AIC23音频信号采集数据采集音频信号输出FIR滤波实验准备首先将光盘下03.ExamplesofProgram实验程序目录下的AudioPCM的文件夹拷贝到D:盘根目录下。将DSP仿真器与计算机连接好;将DSP仿真器的JTAG插头
11、与SEED-DEC5502单元的J1相连接;在测试之前,必须对SEED-DEC5502模板上的JP8、JP9进行配置。如果用跳线将JP8、JP9的1、2插针相连,则选择立体声音频输出(音响);若用跳线将JP8、JP9的2、3插针相连,则选择耳机音频输出;打开SEED-DEC5502的电源。观察SEED-DEC-MBoard单元的5V,3.3V,15V,15V的电源指示灯以及SEED_DEC5502的电源指示灯D2、D4是否均亮;若有不亮的,请断开电源,检查电源。将耳麦接口插入J6,音频线连接计算机的音频输出接口与SEED-DEC5502单元的J5接口。实验步骤打开CCS,进入CCS的操作环境;
12、装入DEC5502_Filter.pjt工程文件,添加SEED_DEC5502.gel文件;装载程序DEC5502_Filter.out,进行调试;如果选择Linein输入,在AIC.c程序第38行处,将AAPC_INSEL(x)设为AAPC_INSEL(1);然后只要将音频头插入SEED-DEC5502的J7口即可,本实验默认是Linin输入;DSP程序运行之前,应在PC机上播放一段音乐作为Codec的输入;运行程序。观看DataRig频域和时域下的波形:观察滤波后的DDataBuffer,其频域和时域下的波形为:注:本实验只对右声道的声音进行了滤波处理,用户可通过耳机对比左右声道的声音。系
13、统主程序:/*/*Copyright2004bySEEDElectronicTechnologyLTD.*/*Allrightsreserved.SEEDElectronicTechnologyLTD.*/*Restrictedrightstouse,duplicateordisclosethiscodeare*/*grantedthroughcontract.*/*/*MODULENAME.IICandMcbsp*/*FILENAME5502_CODEC.c*/*DESCRIPTION:*/*ThisisanaudiosignalsampleandplayexampleforCODECofC
14、5502*/*ThisexampleisthatthecodeciscontroledbytheIICandMcbsp*/*/*/#include#include#include#include#include#include#include#includeE2PROM_Function.h#includeCODEC.h#undefCODEC_ADDR#defineCODEC_ADDR0 x1AshortDataRig1280=0;shortDataLef1280=0;shortDDataBuffer1280=0;shortR_in1024;shorttemp;#defineSAMPLELON
15、G3Uint16SampleLong;/定义McBSP的句柄MCBSP_HandlehMcbsp;shortfir_filter(short);/*/FUNCTION:MAIN/*/voidmain(void)Uint16num=0;/InitializeCSLlibrary-ThisisREQUIRED!CSL_init();/为保证数据采集准确,多采集256个值#ifSAMPLELONG=1SampleLong=256+256;#endif#ifSAMPLELONG=2SampleLong=512+256;#endif#ifSAMPLELONG=3SampleLong=1024+256;#
16、endif/Themainfrequencyofsystemis240MHz/该频率是为了设置IIC模块的需要设置的,为了使用I2C_setup函数PLL_setFreq(1,0 xC,0,1,3,3,0);/InitializeI2C,UsingparametersinI2C_SetupstructureI2c_Setup();/OpenMcBSPport1andgetaMcBSPtypehandlehMcbsp=MCBSP_open(MCBSP_PORT1,MCBSP_OPEN_RESET);/ConfigMcBSPport1byusepreviouslydefinedstructureM
17、cbsp_Config(hMcbsp);/StartMcBSP1MCBSP_start(hMcbsp,MCBSP_RCV_START|MCBSP_XMIT_START,0);inti_AIC();/*/ReceivetheADCoutputdataofCODEC/ThenoutputthereceiveddatatoDACofCODEC/*/while(1)while(!MCBSP_rrdy(hMcbsp);DataLef0=MCBSP_read16(hMcbsp);while(!MCBSP_rrdy(hMcbsp);temp=MCBSP_read16(hMcbsp);if(numSample
18、Long)DataRignum=temp;temp=fir_filter(DataRignum);/*左声道耳机输出*/while(!MCBSP_xrdy(hMcbsp);MCBSP_write16(hMcbsp,DataLef0);/*右声道耳机输出*/while(!MCBSP_xrdy(hMcbsp);MCBSP_write16(hMcbsp,temp);if(numSampleLong)DDataBuffernum=temp;elsenum=0;num+;shortfir_filter(shortinput)shorth52=0 x003F,0 x0045,0 x0051,0 x0064
19、,0 x007E,0 x00A0,0 x00CA,0 x00FB,0 x0133,0 x0171,0 x01B5,0 x01FE,0 x024A,0 x0299,0 x02E9,0 x0338,0 x0386,0 x03D0,0 x0415,0 x0454,0 x048C,0 x04BB,0 x04E1,0 x04FD,0 x050E,0 x0513,0 x050E,0 x04FD,0 x04E1,0 x04BB,0 x04BC,0 x0454,0 x0415,0 x03D0,0 x0386,0 x0338,0 x02E9,0 x0299,0 x024A,0 x01FE,0 x01B5,0 x
20、0171,0 x0133,0 x00FB,0 x00CA,0 x00A0,0 x007E,0 x0064,0 x0051,0 x0045,0 x003F,0 x0000;Int32i;Int32acc=0;Int32prod;Int32y;shortoutput=0;R_in0=input;for(i=0;i6;acc=acc+prod;y=(acc16);for(i=51;i0;i-)R_ini=R_ini-1;returnoutput;其他程序:E2PROM_Function.c:/*/*/*Filename:E2PROM_Function.c*/*Function:RealizeE2PR
21、OMswritingandreadingoperation*/*/*/#include/*/*MODULE.NAME.I2C*/*FUNCTIONNAMEI2C_Write()*/*DATECREATED.Sun08/20/2004*/*/voidMyI2C_setup(I2C_Setup*Init)intold_intm;Uint16IPSC_calc;old_intm=IRQ_globalDisable();/*将下面的IRS域作了修改,让IIC模块处于复位状态,然后进行时钟的配置*/I2C_RSET(I2CMDR,I2C_I2CMDR_RMK(Init-free,0,0,0,1,1,In
22、it-addrmode,0,Init-dlb,0,0,0,Init-bitbyte);/*setownaddress*/I2C_RSET(I2COAR,Init-ownaddr);/*ifslave,needtospecifyownaddress*/*calculatingtheIPSCvalue*/IPSC_calc=(Init-sysinclock)/12;/*mustcorrectroundingissue*/I2C_RSET(I2CPSC,IPSC_calc);/*calculatingtheICCLKLandICCLKHregistervalues*/I2C_RSET(I2CCLKL
23、,15);I2C_RSET(I2CCLKH,15);/*使能IIC模块*/I2C_FSET(I2CMDR,IRS,1);IRQ_globalRestore(old_intm);/*endofinit*/intMyI2C_Write(Uint16*data,intlength,intmaster,Uint16slaveaddress,inttransfermode,inttimeout)inti,j,k,l,m;intold_intm;Uint16temp=1;/old_intm=IRQ_globalDisable();/*setintransmitmode*/I2C_FSET(I2CMDR,T
24、RX,1);/*setthecountregister*/I2C_RSET(I2CCNT,length);if(master=1)I2C_RSET(I2CSAR,slaveaddress);/*specifyslaveaddress*/I2C_FSET(I2CMDR,MST,1);/*turnmastermodeon*/*settingthetransfermode*/if(transfermode=1)/*S-A-D.(n).D-Pmode*/I2C_FSET(I2CMDR,RM,0);I2C_FSET(I2CMDR,STP,1);elseif(transfermode=2)/*S-A-D.
25、(n).Dmode(repeatntimes)*/I2C_FSET(I2CMDR,RM,0);I2C_FSET(I2CMDR,STP,0);elseif(transfermode=3)/*S-A-D-D-D.(repeatcontinuous)mode*/I2C_FSET(I2CMDR,RM,1);I2C_FSET(I2CMDR,STP,0);else/*ifuserspecifiessomethingelse,gotoidlemode*/I2C_FSET(I2CMDR,RM,0);I2C_FSET(I2CMDR,STP,0);/*endifmaster*/elseI2C_FSET(I2CMD
26、R,MST,0);/*ifnotmaster,settoslave*/*endsetup*/old_intm=IRQ_globalDisable();for(i=0;i=timeout)/*busbusytimeouterror*/IRQ_globalRestore(old_intm);return1;for(m=0;m=timeout)/IRQ_globalRestore(old_intm);return2;/*timeoutfortransmitDXRready*/I2C_RSET(I2CDXR,*data+);/*putfirstdatavalueinDXR*/I2C_FSET(I2CM
27、DR,STT,1);/*generatestartcondition*/for(k=1;klength;k+)/*entermainloopfortransmittingdata*/for(i=0;i2000;i+)for(j=0;j1000;j+)/*delayloop*/asm(NOP);for(l=0;l=timeout)/IRQ_globalRestore(old_intm);return3;/*Noacknowledgebitisset,NACKerror*/for(m=0;m=timeout)/IRQ_globalRestore(old_intm);return4;/*timeou
28、tfortransmitDXRready*/I2C_RSET(I2CDXR,*data+);/*putnextdatavalueinDXR*/*endofforloop*/for(j=0;j10;j+)/*lastdelayloopforlastdatatransferred*/for(i=0;i32000;i+)asm(NOP);for(l=0;l=timeout)/IRQ_globalRestore(old_intm);return5;/*Noacknowledgebitisset,NACKerror*/IRQ_globalRestore(old_intm);return0;/*endof
29、I2C_Write*/intMyI2C_WriteAD(Uint16*data,Uint16rate,intlength,intmaster,Uint16slaveaddress,inttransfermode,inttimeout)inti,j,k,l,m;intold_intm;Uint16temp=1;/old_intm=IRQ_globalDisable();/*setintransmitmode*/I2C_FSET(I2CMDR,TRX,1);/*setthecountregister*/I2C_RSET(I2CCNT,length);if(master=1)I2C_RSET(I2C
30、SAR,slaveaddress);/*specifyslaveaddress*/I2C_FSET(I2CMDR,MST,1);/*turnmastermodeon*/*settingthetransfermode*/if(transfermode=1)/*S-A-D.(n).D-Pmode*/I2C_FSET(I2CMDR,RM,0);I2C_FSET(I2CMDR,STP,1);elseif(transfermode=2)/*S-A-D.(n).Dmode(repeatntimes)*/I2C_FSET(I2CMDR,RM,0);I2C_FSET(I2CMDR,STP,0);elseif(
31、transfermode=3)/*S-A-D-D-D.(repeatcontinuous)mode*/I2C_FSET(I2CMDR,RM,1);I2C_FSET(I2CMDR,STP,0);else/*ifuserspecifiessomethingelse,gotoidlemode*/I2C_FSET(I2CMDR,RM,0);I2C_FSET(I2CMDR,STP,0);/*endifmaster*/elseI2C_FSET(I2CMDR,MST,0);/*ifnotmaster,settoslave*/*endsetup*/old_intm=IRQ_globalDisable();fo
32、r(i=0;i=timeout)/*busbusytimeouterror*/IRQ_globalRestore(old_intm);return1;for(m=0;m=timeout)/IRQ_globalRestore(old_intm);return2;/*timeoutfortransmitDXRready*/I2C_RSET(I2CDXR,*data+);/*putfirstdatavalueinDXR*/I2C_FSET(I2CMDR,STT,1);/*generatestartcondition*/for(k=1;klength;k+)/*entermainloopfortran
33、smittingdata*/for(i=0;i2000;i+)for(j=0;j1000;j+)/*delayloop*/asm(NOP);for(l=0;l=timeout)/IRQ_globalRestore(old_intm);return3;/*Noacknowledgebitisset,NACKerror*/for(m=0;m=timeout)/IRQ_globalRestore(old_intm);return4;/*timeoutfortransmitDXRready*/I2C_RSET(I2CDXR,rate);/*putnextdatavalueinDXR*/*endoffo
34、rloop*/for(j=0;j10;j+)/*lastdelayloopforlastdatatransferred*/for(i=0;i32000;i+)asm(NOP);for(l=0;l=timeout)/IRQ_globalRestore(old_intm);return5;/*Noacknowledgebitisset,NACKerror*/IRQ_globalRestore(old_intm);return0;/*endofI2C_Write*/*/*MODULE.NAME.I2C*/*FUNCTIONNAMEI2C_Read()*/*DATECREATED.Sun08/20/2
35、004*/*/intMyI2C_Read(Uint16*data,intlength,intmaster,Uint16slaveaddress,inttransfermode,inttimeout,intcheckbus)inti,j,k,m;intold_intm;Uint16temp;/old_intm=IRQ_globalDisable();/*setinreceivemode*/I2C_FSET(I2CMDR,TRX,0);if(master=1)I2C_RSET(I2CSAR,slaveaddress);/*specifyslaveaddress*/I2C_FSET(I2CMDR,M
36、ST,1);/*turnmastermodeon*/*settingthetransfermode*/if(transfermode=1)/*S-A-D.(n).D-Pmode*/I2C_FSET(I2CMDR,RM,0);I2C_FSET(I2CMDR,STP,1);I2C_RSET(I2CCNT,length);/*settingthedatacountintheICCNTregister*/elseif(transfermode=2)/*S-A-D.(n).Dmode(repeatntimes)*/I2C_FSET(I2CMDR,RM,0);I2C_FSET(I2CMDR,STP,0);
37、elseif(transfermode=3)/*S-A-D-D-D.(repeatcontinuous)mode*/I2C_FSET(I2CMDR,RM,1);I2C_FSET(I2CMDR,STP,0);else/*ifuserspecifiessomethingelse,gotoidlemode*/I2C_FSET(I2CMDR,RM,0);I2C_FSET(I2CMDR,STP,0);/*endifmaster*/elseI2C_FSET(I2CMDR,MST,0);/*ifnotmaster,settoslave*/*endsetup*/if(checkbus=1)old_intm=I
38、RQ_globalDisable();for(i=0;i=timeout)/*busbusytimeouterror*/return1;/*endofbusbusy*/*generatestartcondition*/I2C_FSET(I2CMDR,STT,1);/*delaylooptoreceivedata*/for(i=0;i32000;i+)asm(NOP);for(j=0;j=timeout)return2;/*timeoutforreceiveDRRready*/*data+=I2C_RGET(I2CDRR);/*putfirstdatavalueinDXR*/for(k=1;kl
39、ength;k+)/*entermainloopforreceivingdata*/for(i=0;i32000;i+)asm(NOP);for(m=0;m=timeout)return4;/*timeoutfortransmitDRRready*/*data+=I2C_RGET(I2CDRR);/*putnextdatavalueinDXR*/*endofforloop*/for(i=0;i32000;i+)/*lastdelayloop*/asm(NOP);/IRQ_globalRestore(old_intm);return0;/*endofI2C_Read*/*/*MODULE.NAM
40、E.I2C*/*FUNCTIONNAMESet_WorkMode()*/*DATECREATED.Sun08/20/2004*/*/voidSet_WorkMode(intMaster,Uint16SlaveAddress,intTransferMode)/*setintransmitmode*/I2C_FSET(I2CMDR,TRX,1);/*setthecountregister*/I2C_RSET(I2CCNT,4);/*lengthsetto4*/if(Master=1)I2C_RSET(I2CSAR,SlaveAddress);/*specifyslaveaddress*/I2C_F
41、SET(I2CMDR,MST,1);/*turnmastermodeon*/*settingthetransfermode*/if(TransferMode=1)/*S-A-D.(n).D-Pmode*/I2C_FSET(I2CMDR,RM,0);I2C_FSET(I2CMDR,STP,1);elseif(TransferMode=2)/*S-A-D.(n).Dmode(repeatntimes)*/I2C_FSET(I2CMDR,RM,0);I2C_FSET(I2CMDR,STP,0);elseif(TransferMode=3)/*S-A-D-D-D.(repeatcontinuous)m
42、ode*/I2C_FSET(I2CMDR,RM,1);I2C_FSET(I2CMDR,STP,0);else/*ifuserspecifiessomethingelse,gotoidlemode*/I2C_FSET(I2CMDR,RM,0);I2C_FSET(I2CMDR,STP,0);/*endifmaster*/elseI2C_FSET(I2CMDR,MST,0);/*ifnotmaster,settoslave*/*endsetup*/*/*MODULE.NAME.I2C*/*FUNCTIONNAMEJudge_I2cStatus()*/*DATECREATED.Sun08/20/200
43、4*/*/intJudge_I2cStatus(intTimeOut)unsignedinti,m;intold_intm;Uint16Temp=1;old_intm=IRQ_globalDisable();for(i=0;i=TimeOut)/*busbusytimeouterror*/IRQ_globalRestore(old_intm);return1;for(m=0;m=TimeOut)/IRQ_globalRestore(old_intm);return2;/*timeoutfortransmitDXRready*/return0;/*/*MODULE.NAME.I2C*/*FUNC
44、TIONNAMEWriteSigWord_Deal()*/*DATECREATED.Sun08/20/2004*/*/intWriteSigWord_Deal(intTimeOut)unsignedinti,j,l,m;Uint16Temp=1;for(i=0;i2000;i+)for(j=0;j1000;j+)/*delayloop*/asm(NOP);for(l=0;l=TimeOut)/IRQ_globalRestore(old_intm);return3;/*Noacknowledgebitisset,NACKerror*/for(m=0;m=TimeOut)/IRQ_globalRe
45、store(old_intm);return4;/*timeoutfortransmitDXRready*/return0;/*/*MODULE.NAME.I2C*/*FUNCTIONNAMELastByte_Deal()*/*DATECREATED.Sun08/20/2004*/*/intLastByte_Deal(intTimeOut)inti,j,l;Uint16Temp=1;for(j=0;j10;j+)/*lastdelayloopforlastdatatransferred*/for(i=0;i32000;i+)asm(NOP);for(l=0;l=TimeOut)/IRQ_glo
46、balRestore(old_intm);return5;/*Noacknowledgebitisset,NACKerror*/return0;/*/*MODULE.NAME.I2C*/*FUNCTIONNAMEI2C_WriteSigWord()*/*DATECREATED.Sun08/20/2004*/*/intMyI2C_WriteSigWord(unsignedintOwnAdd,unsignedintdata,intmaster,Uint16slaveaddress,inttransfermode,inttimeout)unsignedintHighAdd,LowAdd;unsign
47、edintHighByte,LowByte;intRetValue;HighAdd=(OwnAdd&0 xFF00)8;LowAdd=OwnAdd&0 x00FF;HighByte=(data&0 xFF00)8;LowByte=data&0 x00FF;/*SetI2Cworkingmode*/Set_WorkMode(master,slaveaddress,transfermode);/old_intm=IRQ_globalDisable();RetValue=Judge_I2cStatus(timeout);if(RetValue!=0)return(RetValue);/*putfir
48、stdatavalueinDXR*/I2C_RSET(I2CDXR,HighAdd);/*generatestartcondition*/I2C_FSET(I2CMDR,STT,1);RetValue=WriteSigWord_Deal(timeout);if(RetValue!=0)return(RetValue);/*putnextdatavalueinDXR*/I2C_RSET(I2CDXR,LowAdd);RetValue=WriteSigWord_Deal(timeout);if(RetValue!=0)return(RetValue);/*putnextdatavalueinDXR
49、*/I2C_RSET(I2CDXR,HighByte);RetValue=WriteSigWord_Deal(timeout);if(RetValue!=0)return(RetValue);/*putnextdatavalueinDXR*/I2C_RSET(I2CDXR,LowByte);RetValue=LastByte_Deal(timeout);if(RetValue!=0)return(RetValue);return0;/*endofI2C_WriteSigWord*/*/Nomore/*/I2C.c:#include#include/*/ConfigI2C:UseI2Ctoint
50、erfaceCODECcontrolinterface/*/I2C_SetupSetup=0,/7bitaddressmode0 x0000,/ownaddress60,/clkoutvalue(Mhz)400,/anumberbetween10and4000,/8bits/bytetobereceivedortransmitted0,/DLBmodeoff0/FREEmodeoff;/*/*Functionname:voidI2c_Setup(void)*/*Function:RealizeI2Cconfiguration*/*/externvoidI2c_Setup(void)/*配置系统
51、的I2C*/MyI2C_setup(&Setup);mcbsp.c:#include#include/*/ConfigMcBSP:UseMcBSPtosendandreceivethedatabetweenDSPandAIC23B/*/MCBSP_ConfigMcbsp1Config=0X0080,0X00C0,0X0140,0X0005,0X0140,0X0005,0X000F,0 x0001,0,0,0 x0011,0 x12,0 x000011,0 x12,0 x000011,0,0,MCBSP_PCR_CLKXM_INPUT,/CLKRisinputMCBSP_PCR_CLKRM_IN
52、PUT,/CLKXisinputMCBSP_PCR_SCLKME_NO,/SCLKME=0CLKGistakenfromtheMcBSPinternalinputclockMCBSP_PCR_CLKSSTAT_0,/ThesignalontheCLKSpinislowMCBSP_PCR_DXSTAT_0,/DrivethesignalontheDXpinlowMCBSP_PCR_DRSTAT_0,/ThesignalontheDRpinislow0X1111,0,;/*/*Functionname:voidEmif_Config(void)*/*Function:Realizeemifconf
53、iguration*/*/externvoidMcbsp_Config(MCBSP_Handlehandle)/ConfigMcBSPport1byusepreviouslydefinedstructureMCBSP_config(handle,&Mcbsp1Config);/StartMcBSP1MCBSP_start(handle,MCBSP_RCV_START|MCBSP_XMIT_START,0);/*/SEED_DEC5502.cmd:/*/*/*LINKERcommandfileforSDRAMmemorymap*/*/*/MEMORYPAGE0:MMR:origin=000000
54、0h,length=00000c0hSPRAM:origin=00000c0h,length=0000040VECS:origin=0000100h,length=0000100hDARAM0:origin=0000200h,length=0007E00hDARAM1:origin=0008000h,length=0008000hCE0:origin=0010000h,length=03f0000hCE1:origin=0400000h,length=0400000hCE2:origin=0800000h,length=0400000hCE3:origin=0c00000h,length=03
55、f8000hPDROM:origin=0ff8000h,length=07f00hRESET_VECS:origin=0ffff00h,length=00100h/*resetvector*/SECTIONS.vectors:VECSPAGE0/*interruptvectortable*/.cinit:DARAM1PAGE0.text:DARAM1PAGE0.stack:DARAM0PAGE0.sysstack:DARAM0PAGE0.sysmem:DARAM0PAGE0.cio:DARAM1PAGE0.data:DARAM1PAGE0.bss:DARAM1PAGE0.const:DARAM
56、1PAGE0.csldata:DARAM0PAGE0dmaMem:DARAM0PAGE0AIC.c:#include#includeCODEC.h#undefCODEC_ADDR#defineCODEC_ADDR0 x1A/*/ConfigCODECcontrolregisters/*/数字音频接口格式设置/AIC23为主模式,数据为DSP模式,数据长度16位Uint16Digital_Audio_Inteface_Format2=Codec_DAIF_REV,DAIF_MS(1)+DAIF_LRSWAP(0)+DAIF_LRP(1)+DAIF_IWL(0)+DAIF_FOR(3);/AIC2
57、3的波特率设置,采样率为48k,CLKIN=CLKOUT=MCLK=?12.288MHz/时钟模式设为普通模式,基过采样率为250Fs?256fsUint16Sample_Rate_Control2=Codec_SRC_REV,SRC_CLKIN(0)+SRC_CLKOUT(0)+SRC_SR(0)+SRC_BOSR(0)+SRC_USB(0);/AIC23寄存器复位Uint16Reset2=Codec_RST_REV,RST_RES;/AIC23节电方式设置,所有部分均处于工作状态Uint16Power_Down_Control2=Codec_PDC_REV,PDC_DEFAULT;/AIC
58、23模拟音频的控制:关掉侧音/DAC使能,ADC输入选择为音频输入/将AAPC_INSEL(x)设为0,选择Line输入,注意实验跳线的选择/将AAPC_INSEL(x)设为1,选择Microphone输入,注意实验跳线的选择Uint16Analog_Aduio_Path_Control2=Codec_AAPC_STA2(0),AAPC_STA10(0)+AAPC_STE(0)+AAPC_DAC(1)+AAPC_BYP(0)+AAPC_INSEL(1)+AAPC_MICM(0)+AAPC_MICB(0);/AIC23数字音频通路的控制/使能ADC高通滤波Uint16Digital_Audio_
59、Path_Control2=Codec_DAPC_REV,DAPC_DACM(0)+DAPC_DEEMP(0)+DAPC_ADCHP(1);/AIC23数字接口的使能Uint16Digital_Interface_Activation2=Codec_DIA_REV,DIA_ACT(1);/AIC23左通路音频调节Uint16Left_Line_Input_Volume_Control2=Codec_LLIVC_LPS(1),LLIVC_LIM(0)+LLIVC_LIV(23);/AIC23右通路音频调节Uint16Right_Line_Input_Volume_Control2=Codec_R
60、LIVC_RLS(1),RLIVC_RIM(0)+RLIVC_RIV(23);/AIC23耳机左通路音频调节Uint16Left_Headphone_Volume_Control2=Codec_LHPVC_LRS(1),LHPVC_LZC(1)+LHPVC_LHV(127);/AIC23耳机右通路音频调节Uint16Right_Headphone_Volume_Control2=Codec_RHPVC_RLS(1),LHPVC_RZC(1)+LHPVC_RHV(127);voidinti_AIC()/unitdb;/*设置AIC23各部分均工作*/MyI2C_Write(Power_Down_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 垃圾焚烧炉排调试技师考试试卷及答案
- 2025年中核五公司在甘专项招聘退役军人50人笔试历年参考题库附带答案详解
- 2025山东省国际信托股份有限公司招聘8人笔试历年参考题库附带答案详解
- 2025山东东营众邦人力资源有限责任公司招聘5人笔试历年参考题库附带答案详解
- 2025安徽六安市文化旅游产业发展投资有限公司招聘6人笔试历年参考题库附带答案详解
- 2025国资央企促就业夏季招聘活动-贵州国资委专场招聘会(招聘444人)笔试历年参考题库附带答案详解
- 2025国元农业保险股份有限公司安徽分公司校园招聘40人笔试历年参考题库附带答案详解
- 2025四川绵阳市广东依顿电子科技股份有限公司招聘第二事业部副总经理2人笔试历年参考题库附带答案详解
- 2025四川宜宾市科技人才集团有限公司第三批员工招聘10人笔试历年参考题库附带答案详解
- 2025内蒙古鄂尔多斯市东晟建设工程有限公司招聘16人笔试历年参考题库附带答案详解
- 2025年中国人民银行笔试真题及答案解析
- 2025退役光伏组件环保拆解工艺与材料回收价值评估研究
- 劳动教育与劳动体验(中南财经政法大学)知到智慧树网课答案
- GB/T 20055-2025开放式炼胶机炼塑机安全要求
- 老年人助浴知识培训课件
- 田径运动会裁判培训课件
- 干挂外墙瓷砖施工技术与规范
- 山东省青岛42中重点名校2026届中考数学猜题卷含解析
- 2025年贵州省中考理科综合(物理化学)试卷真题(含答案详解)
- 2025至2030管道涂料行业发展趋势分析与未来投资战略咨询研究报告
- 《工程水文学》习题册全解1
评论
0/150
提交评论