DSP课程设计报告DTMF课件_第1页
DSP课程设计报告DTMF课件_第2页
DSP课程设计报告DTMF课件_第3页
DSP课程设计报告DTMF课件_第4页
DSP课程设计报告DTMF课件_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、DTMF信号的产生与检测 DSP课程设计实验报告DTMF信号的产生及检测院 系:电子信息工程学院 电子系指导老师:钱满义时 间:2014年7月成绩:工程设计50报告20答辩30总分评语:指导教师签字: 日期:目 录一、设计任务书- 1 -1. 设计题目:- 1 -2. 实验目的:- 1 -3. 实验要求:- 1 -二、设计内容- 1 -1. 基本部分:- 1 -2. 发挥部分:- 1 -三、设计方案、原理及说明- 1 -1. 关于DTMF信号:- 1 -2. 设计思路:- 2 -2.1 DTMF信号的产生:- 3 -2.2 DTMF信号的检测:- 6 -3. 有效性检测:- 9 -四、程序设计

2、、调试与分析:- 10 -1. 基本部分:- 10 -1.1 DTMF信号的发送:- 11 -1.2 DTMF信号的接收:- 17 -1.3 cmd文件:- 25 -2.发挥部分:- 27 -2.1 自发自收:- 27 -2.2 cmd文件:- 38 -2.3 编码加倍:- 39 -五、设计(安装)与调试的体会:- 53 -六、参考文献:- 53 - 52 -一、设计任务书1. 设计题目:DTMF信号的产生及检测2. 实验目的:掌握DTMF信号的产生和检测的DSP设计可使学生更加透彻的理解和应用奈奎斯特采样定理,与实际应用相结合,提高学生系统地思考问题和解决实际问题的能力。通过对DSP信号处理

3、器及D/A和A/D转换器的编程,可以培养学生C语言编程能力以及使用DSP硬件平台实现数字信号处理算法的能力。3. 实验要求:(1)掌握CCS的安装、设置,工程的建立、打开以及编译运行和调试方法。(2)编写C语言程序实现设计要求,并在CCS集成开发环境下调试通过,实现设计所要求的各项功能。(3)按要求撰写课程设计报告。二、设计内容1. 基本部分:(1)使用C语言编写DSP下DTMF信号的产生程序,要求循环产生09、A、B、C、D、*、#对应的DTMF信号,并且符合CCITT对DTMF信号规定的指标。(2)使用C语言编写DSP下DTMF信号的检测程序,检测到的DTMF编码在CCS调试窗口中显示,要

4、求既不能漏检,也不能重复检出。(3)DTMF信号的发送与接收分别使用不同的实验板完成。2. 发挥部分:(1)使用一个DSP工程同时实现DTMF信号的发送和检测功能。(2)改进DTMF信号的规定指标,使每秒内可传送的DTMF编码加倍。(3)发送的DTMF信号的幅度在一定范围内可调,此时仍能完成DTMF信号的正常检测。三、设计方案、原理及说明1. 关于DTMF信号:双音多频DTMF(Dual Tone Multi Frequency)信号是在按键式电话机上得到广泛应用的音频拨号信令,一个DTMF信号由两个频率的音频信号叠加构成。这两个音频信号的频率分别来自两组预定义的频率组:行频组和列频组。每组分

5、别包括4个频率,据CCITT的建议,国际上采用的这些频率为697Hz、770Hz、852Hz、941Hz、1209Hz、1336Hz、1477Hz和1633Hz等8种。在每组频率中分别抽出一个频率进行组合就可以组成16种DTMF编码,从而代表16种不同的数字或功能键,分别记作09、*、#、A、B、C、D。如下图所示。图301 DTMF的频率及其对应的键值要用DSP产生DTMF信号,只要产生两个正弦波叠加在一起即可;DTMF检测时采用改进的Goertzel算法,从频域搜索两个正弦波的存在。2. 设计思路:DTMF发生器基于两个二阶数字正弦振荡器,一个用于产生行频,一个用于产生列频。DSP只要装载

6、相应的系数和初始条件,就可以只用两个振荡器产生所需的八种音频信号。典型的DTMF信号频率范围是7001700Hz,选取8000Hz作为采样频率,即可满足奈奎斯特定理。DTMF数字振荡器对的二阶系统函数的差分方程为:其中 , , , 为采样频率, 为输出正弦波的频率, 为输出正弦波的幅度。该式初值为 , 。下面以770Hz为例,详细说明方程中系数的计算方法:f/fs=770/8000,0 =2*pi*f/fs, cos0 =0.8226, sin0=-0.5686。f/HZa1Y(-1)Y(-2)/A6970.853820-0.520477700.822630-0.568578520.78433

7、0-0.620339410.739110-0.6735812090.582060-0.8131413360.498200-0.8670614470.399320-0.9168016330.284240-0.95874在输入信号中检测DTMF信号,需要在输入的数据信号流中连续地搜索DTMF信号频谱的存在。整个检测过程分两步:首先采用Goertzel算法在输入信号中提取频谱信息;接着作检测结果的有效性检查。DTMF解码时在输入信号中搜索出有效的行频和列频。计算数字信号的频谱可以采用DFT及其快速算法FFT,而在实现DTMF解码时,采用Goertzel算法要比FFT更快。通过FFT可以计算得到信号所

8、有谱线,了解信号整个频域信息,而对于DTMF信号只需关心其8个行频/列频及其二次谐波信息即可,二次谐波的信息用于将DTMF信号与声音信号区别开。此时Goertzel算法能更加快速的在输入信号中提取频谱信息。Goertzel算法实质是一个两极点的IIR滤波器。2.1 DTMF信号的产生:DTMF发生器基于两个二阶数字正弦振荡器,一个用于产生行频,一个用于产生列频。DSP只要装载相应的系数和初始条件,就可以只用两个振荡器产生所需的八种音频信号。典型的DTMF信号频率范围是7001700Hz,选取8000Hz作为采样频率,即可满足奈奎斯特定理(Nyquist定理:为了正确判定信号频率,信号在一个周期

9、内至少被采样两次)。具体来说DTMF编码是将拨号盘上的09,AD,*、#,共 16个字符,用音频范围 (小于3400 Hz) 的8个频率表示出来。具体来说,将8个频率分为高频群和低频群2组,分别作为列频组和行频组,总共可构成4×4共16种不同组合,代表16个符号。具体表示方法如图所示。频率1209Hz1336Hz1477Hz1633Hz697Hz123A770Hz456B852Hz789C941Hz*0#D表3-1 DTMF频率表DTMF双音频可以由2个可编程的二阶数字正弦振荡器产生,如图所示,图3-2 产生DTMF的数字正弦信号振荡器分别用于产生行音频和列音频。由于DTMF 频率范

10、围在6971633 Hz之间,根据Nyquist定理可知,用8kHz速率抽样对DTMF信号没有影响。CCITT对DTMF信号规定的指标是,传送/接收率为每秒10个数字,即每个数字100ms。代表数字的音频信号必须持续至少45ms,但不超过55ms。100ms内其他时间为静音,以便区别连续的两个按键信号。我们使用8000Hz的采样频率,即1秒采样8000个点,则100ms采样800个点,我们设置800个点的缓存,其中用400个存产生的DTMF信号值,即音频信号必须持续50ms,另外400个存0值,即静音信号。图3-3 信号发送流程开始任务标志=0?静音任务双音任务持续时间完毕?持续时间完毕?持续

11、时间变量-1产生静音样本产生双音样本持续时间变量-1变量复位任务标志=1装入下一数字初始化新数字的振荡器系数与初始条件变量复位任务标志=0返回另外,需要注意的是,由于本实验需要用到DSP板上的CODEC模块,因此在编写的程序中还需要写入AD/DA转换部分。图3-02 AD/DA转换流程2.2 DTMF信号的检测:DTMF信号包含两组音频信号,解码器的任务是通过数学变换把它从时域转换到频域,然后得出对应的数字信息由于DSP芯片处理的是数字信号,所以必须把输入信号数字化,再用DSP芯片进行处理在信号接收端,需要对DTMF信号进行检测,即寻找信号的行频和列频,最后根据DTMF键盘信息确定相应的数字或

12、符号。DTMF检测是对进入解码端的信号进行检测,并把双音频信号转换成对应的数字信息。它是一个比DTMF产生更加复杂过程。由于数据流是连续的,为了保证DTMF检测的实时性,因此要求检测过程必须是实时连续的。2.2.1 关于Goertzel算法:DTMF检测器的核心是Goertzel算法。该算法利用二极点IIR滤波器计算离散傅立叶变换值,能够快速高效地提取输入信号的频谱信息。由于IIR滤波器是一个递归结构,它利用只有一个实系数的差分方程进行操作,并不像FFT算法那样需要计算数据块,而是每输入一个样值就执行一次算法。完成时域到频域的变换可以用DFT或FFT。FFT计算出所有点频率,而DFT可以只计算

13、感兴趣的频率点。如果要计算的频率点数少于log 2N(N为输入信号点数),采用DFT的计算速度比FFT更快。直接计算DFT,需要很多复系数,即使只计算一点的DFT也需要N个复系数。采用数字信号处理中的Goertzel算法,则可明显地提高速度。图3-03 Goertzel算法原理框图利用二阶复共轭极点可以得到只有一个实系数的差分方程:在实际的DTMF检测中,只需DFT的幅度(本算法为平方幅度)信息就足够了,因此在Goertzel滤波器中,当N点(相当于DFT数据块的长度)样值输入滤波器后,滤波器输出伪DFT值vk(n),由vk(n)即可确定频谱的平方幅度。DTMF信号包含两组音频信号,解码器的任

14、务是通过数学变换把它从时域转换到频域,然后得出对应的数字信息由于DSP芯片处理的是数字信号,所以必须把输入信号数字化,再用DSP芯片进行处理频率检测时,检测出DTMF信号的基波及二次谐波,DTMF信号只在基波上有较高能量,而话音信号则在基波上叠加有较强的二次谐波,检测二次谐波的作用是用来区分DTMF信号与语言和音乐信号。用DFT检测模拟DTMF信号所含有的两个音频频率,是一个用DFT对模拟信号进行频谱分析的问题。确定三个参数:(1)采样频率,(2)DFT的变换点数N,(3)需要对信号的观察时间的长度。这三个参数不能随意选取,要根据对信号频谱分析的要求进行确定。这里对信号频谱分析也有三个要求:

15、(1)频率分辨率,(2)谱分析的频谱范围,(3)检测频率的准确性。2.2.2 频谱分析的分辨率:观察要检测的8个频率,相邻间隔最小的是第一和第二个频率,间隔是73Hz,要求DFT最少能够分辨相隔73Hz的两个频率,即要求。DFT的分辨率和对信号的观察时间有关, 。考虑到可靠性,留有富裕量,要求按键的时间大于45ms。2.2.3 频谱分析的频率范围要检测的信号频率范围是6971633Hz,但考虑到存在语音干扰,除了检测这8个频率外,还要检测它们的二次倍频的幅度大小,波形正常且干扰小的正弦波的二次倍频是很小的,如果发现二次谐波很大,则不能确定这是DTMF信号。这样频谱分析的频率范围为6973266

16、Hz。按照采样定理,最高频率不能超过折叠频率,即,由此要求最小的采样频率应为7.24KHz。因为数字电话总系统已经规定8KHz,因此对频谱分析范围的要求是一定满足的。按照,8KHz,算出对信号最少的采样点数为。2.2.4 检测频率的准确性这是一个用DFT检测正弦波频率是否准确的问题。序列的N点DFT是对序列频谱函数在0区间的N点等间隔采样,如果是一个周期序列,截取周期序列的整数倍周期,进行DFT,其采样点刚好在周期信号的频率上,DFT的幅度最大处就是信号的准确频率。分析这些DTMF信号,不可能经过采样得到周期序列,因此存在检测频率的准确性问题。DFT的频率采样点频率为(k=0,1,2,-,N-

17、1),相应的模拟域采样点频率为(k=0,1,2,-,N-1),希望选择一个合适的N,使用该公式算出的能接近要检测的频率,或者用8个频率中的任一个频率代入公式中时,得到的k值最接近整数值,这样虽然用幅度最大点检测的频率有误差,但可以准确判断所对应的DTMF频率,即可以准确判断所对应的数字或符号。经过分析研究认为N205是最好的。按照8KHz,N205,算出8个频率及其二次谐波对应k值,和k取整数时的频率误差见下表。8个基频Hz最近的整数k值DFT的k值绝对误差二次谐波Hz对应的k值最近的整数k值绝对误差69717.861180.139139435.024350.02477019.531200.2

18、69154038.692390.30885221.833220.167170442.813430.18794124.113240.113188247.285470.285120930.981310.019241860.752610.248133634.235340.235267267.134670.134147737.848380.152295474.219740.219163341.846420.154326682.058820.058表3-2 K取值表通过以上分析,确定8KHz,N205。3. 有效性检测:得到了DTMF信号的基波及二次谐波的频谱平方幅度信息后,需要通过一系列检测才能确定信

19、号的有效性:1)DTMF信号的强度是否足够大,行列频率分量平方幅度和是否高于规定的门限值。2)如果DTMF信号存在,比较行列频率的最大频率分量差值,因为电话线具有低通特性,列频比行频衰减得要厉害,因此要设置一门限值。 3)分别在行列频率组比较频谱分量,最强的谱线至少要比其他音频信号高一个门限值。 4)二次谐波分量是否小于某个值。 5)判断DTMF信号是否包含稳定的数字信息,只有数字信息被连续检测到两次,才认为数字信息是稳定的。 6)最后要检测数字信息之后是否有停顿状态,只有这样才将当前的数字作为有效数字。 在每一个接收中断到来时,表明采到一个新样点,迭代计算8个行频列频的中间变量v (n)(k

20、为8个行频列频分别对应的数字频率),直到采到N=125个样点(在8kHz采样频率下,约为15ms)。此时再按式计算8个行频列频的幅度平方 。接下来将|X(k)|2与门限作比较,并作二次谐波检测,判决出有效的音频信号。将音频信号映射为数字信号后,再与上一个检测到的数字信号比较,最终判决出有效的数字信号。 与发生部分原理相似,我们也需要在检测程序中加入AD/DA转换部分。图3-6 信号发送流程四、程序设计、调试与分析:1. 基本部分:设计的总体思路是将DTMF信号的产生与检测分别建立工程,期望在两个DSP板可以实现双机通信。发送部分程序需要设置8KHz 的采样频率,因而在AIC23.c 文件中必须

21、对寄存器参数进行设置。参考采样频率选择表: 表4-1 采样频率选择表对应8KHz 的寄存器的参数设置应为SR3-SR0:0011,也就是在AIC23.c 中设置如下图:图4-1 寄存器参数设置1.1 DTMF信号的发送:/*-头文件-*/#include <math.h>#include <stdio.h>#include <csl.h>#include <csl_chip.h>#include <csl_i2c.h>#include <csl_pll.h>#include <csl_mcbsp.h>#incl

22、ude <csl_emif.h>#include <csl_emifBhal.h>#include <stdio.h>#include "CODEC.h"#include "volume.h"#undef CODEC_ADDR#define CODEC_ADDR 0x1A / 定义McBSP的句柄MCBSP_Handle hMcbsp;/*-*/ / 主函数 / /*-*/*-定义变量-*/ Int16 buffer800; /float buffer1800;float A=16; /产生信号的幅度int gain

23、= MINGAIN; float x,y; int k=0; int i=0; int num=0;/int count=0;float freq162= 941,1336, /0 697,1209, /1 697,1336, /2 697,1477, /3 770,1209, /4 770,1336, /5 770,1477, /6 852,1209, /7 852,1336, /8 852,1477, /9 697,1633, /A 770,1633, /B 852,1633, /C 941,1633, /D 941,1209, /* 941,1477 /# ;float pi=3.141

24、5926;/*-定义"发射400个有效点、400个静音点"的子程序-*/void generate(int num) float x,y; int k=0;while(1)for(k=0;k<800;k+)while(!MCBSP_xrdy(hMcbsp) ;MCBSP_write16(hMcbsp, bufferk);/左声道输出while(!MCBSP_xrdy(hMcbsp) ;MCBSP_write16(hMcbsp, bufferk);/右声道输出if(num=17) /依次输出"0-#"等16个音num=0;x=freqnum0/800

25、0; /f/fsam 行频y=freqnum1/8000; /f/fsam 列频num+;for(k=0;k<400;k+)bufferk=(sin(2*pi*y*k)+sin(2*pi*x*k)*(A+gain);/把有用信号扩大到16位bufferk+400=0;/静音信号/*- FUNCTION: MAIN -*/void main()/ CSL初始化 CSL_init(); / 该频率是为了设置IIC模块的需要设置的,为了使用I2C_setup函数,频率设置为240MHz PLL_setFreq(1, 0xC, 0, 1, 3, 3, 0);/EMIF初始化 Emif_Confi

26、g(); /打开McBSP port 1 产生 McBSP 句柄hMcbsp = MCBSP_open(MCBSP_PORT1,MCBSP_OPEN_RESET);/ Config McBSPport 1 by use previously defined structureMcbsp_Config(hMcbsp);/I2C初始化I2C_cofig(); /CODEC寄存器初始化inti_AIC(); /*-*/ / Receive the ADC output data of CODEC / Then output the received data to DAC of CODEC /*-*

27、/*x=freq00/8000;y=freq01/8000;for(k=0;k<400;k+)bufferk=(sin(2*pi*y*k)+sin(2*pi*x*k)*A;bufferk+400=0;*/*-循环产生16个符号值-*/generate(num);1.1.1 发送端的时域波形: 图4-2 发送端的时域参数设置图4-3 发送端的时域波形(1)图4-4 发送端的时域波形(2)图4-5 观察变量图1.1.2 发送端的频域波形:图4-6 发送端的频域参数设置图4-7 发送端的频域波形1.2 DTMF信号的接收:/*-头文件-*/#include <math.h>#inc

28、lude <stdio.h>#include <csl.h>#include <csl_chip.h>#include <csl_i2c.h>#include <csl_pll.h>#include <csl_mcbsp.h>#include <csl_emif.h>#include <csl_emifBhal.h>#include <stdio.h>#include "CODEC.h" #undef CODEC_ADDR#define CODEC_ADDR 0x1A

29、 / 定义McBSP的句柄MCBSP_Handle hMcbsp; float test2256;/右声道数据存储区float pi=3.1415926;Int16 test1256;/左声道数据存储区Int16 dacdata;int k=0;int i,j;int x;int y;int flag=0;int l=0;int detect_result150=0;/*-定义检测用的子程序-*/void detect()/Goertzel 算法/int x,y;float w8,a83,amp8;w0=2*cos(2*pi*18/205);w1=2*cos(2*pi*20/205);w2=2

30、*cos(2*pi*22/205);w3=2*cos(2*pi*24/205);w4=2*cos(2*pi*31/205);w5=2*cos(2*pi*34/205);w6=2*cos(2*pi*38/205);w7=2*cos(2*pi*42/205);for(i=0;i<8;i+)ai0=0;ai1=0;for(j=1;j<=205;j+)/计算buffer中的205点 ai2=wi*ai1-ai0+test2j-1;ai0=ai1;ai1=ai2; ampi=ai1*ai1+ai0*ai0-wi*ai1*ai0;/计算频谱的幅度平方值/printf("The amp

31、 %d is %f.rn",i,ampi);j=0;for(i=0;i<8;i+)if(ampi>0.1) /门限值 j+;if(j=1)x=i; /行频else if(j=2)y=i; /列频/*-判断并打印输出-*/i=-1; if(flag=0) if(j=2)if(x=0 && y=4) i='1' else if(x=0 && y=5) i='2' else if(x=0 && y=6) i='3' else if(x=1 && y=4) i='

32、;4' else if(x=1 && y=5) i='5' else if(x=1 && y=6) i='6' else if(x=2 && y=4) i='7' else if(x=2 && y=5) i='8' else if(x=2 && y=6) i='9' else if(x=3 && y=5) i='0' else if(x=0 && y=7) i='A'

33、;else if(x=1 && y=7) i='B' else if(x=2 && y=7) i='C' else if(x=3 && y=7) i='D' else if(x=3 && y=4) i='*' else if(x=3 && y=6) i='#' if(i!=-1) detect_resultl=i; l+; if(l=150) for(l=0;l<150;l+) printf("The DTMF sign

34、al is %c.rn ",detect_resultl); l=0; flag+; else if(j=0) flag=0; /*if(j=2)if(x=0&&y=4)printf("The DTMF signal is 1n");/i=1;else if(x=0&&y=5)printf("The DTMF signal is 2n");/i=2;else if(x=0&&y=6)printf("The DTMF signal is 3n");/i=3;else if(x=1

35、&&y=4)printf("The DTMF signal is 4n");/i=4;else if(x=1&&y=5)printf("The DTMF signal is 5n");/i=5;else if(x=1&&y=6)printf("The DTMF signal is 6n");/i=6;else if(x=2&&y=4)printf("The DTMF signal is 7n");/i=7;else if(x=2&&y=

36、5)printf("The DTMF signal is 8n");/i=8;else if(x=2&&y=6)printf("The DTMF signal is 9n");/i=9;else if(x=3&&y=5)printf("The DTMF signal is 0n");/i=0;else if(x=0&&y=7)printf("The DTMF signal is An");/i='A'else if(x=1&&y=7)p

37、rintf("The DTMF signal is Bn");/i='B'else if(x=2&&y=7)printf("The DTMF signal is Cn");/i='C'else if(x=3&&y=7)printf("The DTMF signal is Dn");/i='D'else if(x=3&&y=4)printf("The DTMF signal is *n");/i='*'el

38、se if(x=3&&y=6)printf("The DTMF signal is #n");/i='#'*/*-主函数-*/void main()/初始化 CSL library CSL_init(); / The main frequency of system is 240MHz/频率为240MHz 该频率是为了设置IIC模块的需要设置的,为了使用I2C_setup函数 PLL_setFreq(1, 0xC, 0, 1, 3, 3, 0);/EMIF初始化 Emif_Config(); / 打开McBSP port 1 hMcbsp =

39、 MCBSP_open(MCBSP_PORT1,MCBSP_OPEN_RESET);/ 配置 McBSPport 1 Mcbsp_Config(hMcbsp);/I2C初始化I2C_cofig(); /CODEC寄存器初始化inti_AIC(); /*-*/ / Receive the ADC output data of CODEC / Then output the received data to DAC of CODEC /*-*/while(1)while(!MCBSP_rrdy(hMcbsp) ;dacdata=MCBSP_read16(hMcbsp);/左声道数据输入test1k

40、=dacdata;while(!MCBSP_rrdy(hMcbsp) ;dacdata=MCBSP_read16(hMcbsp);/右声道数据输入test2k=dacdata/2100.0;k+;if(k=205)k=0;detect();/一共抽取205个点,然后开始检测1.2.1 接收端时域波形图4-8 接收端的时域参数设置图4-9 接收端的时域波形1.2.2 接收端频域波形:图4-10 接收端频域参数设置图4-11 接收端频域波形图4-11 接收端数据1.3 cmd文件:/*/* */* LINKER command file for SDRAM memory map */* */*/

41、MEMORY MMR : origin = 0000000h, length = 00000c0h SPRAM : origin = 00000c0h, length = 0000040 VECS : origin = 0000100h, length = 0000100h DARAM0 : origin = 0000200h, length = 0007E00h DARAM1 : origin = 0008000h, length = 0008000h CE0 : origin = 0010000h, length = 03f0000h /* 对应ZBTRAM空间 */ FLASH : or

42、igin = 0400000h, length = 0100000h/* Flash 空间 */* FLASH : origin = 0410000h, length = 00f0000h*/ EXTEND: origin = 0500000h, length = 0300000h/* 状态控制寄存器、UARTA、UARTB、USB、和扩展总线所对应的空间 */ SDRAM : origin = 0800000h, length = 03FFFFCh/* SDRAM 空间*/ CE3 : origin = 0c00000h, length = 03f8000h/* SDRAM 空间*/ PDR

43、OM : origin = 0ff8000h, length = 07f00h RESET_VECS : origin = 0ffff00h, length = 000ffh /* reset vector */ SECTIONS .vectors : > VECS /* interrupt vector table */ .cinit : > DARAM1 .text : > DARAM1 .Audio_in_data1: > SDRAM .Audio_in_data2: > SDRAM .Audio_in_data3: > SDRAM .Audio_ou

44、t_data1: > SDRAM .Audio_out_data2: > SDRAM .Audio_out_data3: > SDRAM data_out : > SDRAMdata_out1 : > SDRAM .stack : > DARAM0 .sysstack: > DARAM0 .sysmem : > DARAM0 .cio : > DARAM1 .data : > DARAM1 .bss : > DARAM1 .const : > DARAM1 .csldata: > DARAM0 dmaMem: > DARAM02.发挥部分:2.1 自发自收:使用一个DSP工程同时实现DTMF信号的发送和检测功能。#include <csl.h>#include <csl_chip.h>#include <csl_i2c.h>#include <csl_pll.h>#include <csl_mcbsp.h>#include <csl_emif.h>#include <csl_emifBhal.h>#include <stdio.h>#include

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论