




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2022年5月9日DSPDSP技术及应用技术及应用12022年5月9日DSPDSP技术及应用技术及应用3( )1* (1)2* (2)y nay nay n00012cos, 21,2/saaff0( 1)0, ( 2)sinyyA 2022年5月9日DSPDSP技术及应用技术及应用42022年5月9日DSPDSP技术及应用技术及应用52022年5月9日DSPDSP技术及应用技术及应用6开始DSK板初始化设置D/A转换器的分辨率为15位及转换速率8000Hz计算各键行频系数及初始条件计算各键列频系数及初始条件取出发送的DTMF按键号码转换为数组下标查表得到键值的行频列频系数和初始值DTMF编码
2、流程2022年5月9日DSPDSP技术及应用技术及应用7计算本次输出的样点值(行频+列频)更新行频列频的初值,计算下一个样点值样点数转换为Q15格式如果D/A准备好发送数据则将样点值写入DTMF样点数是否发送完成?发送400点静音样点0至D/ADTMF编码流程#include #include #include #include void delay(s16 period);HANDLE hHandset;/CODEC句柄变量s16 data;s16 buffer400;/输出缓冲区,用于图形窗口观察输出信号#define PI 3.1415926float fs=8000;s16 tele_
3、number16=1,2,3,4,5,6,7,8,9,0,A,B,C,D,*,#float dtmf_freq162=941,1336,/键值0对应的行频和列频697,1209,697,1336,941,1663,941,1209,941,1447/键值#对应的行频和列频;f32 row_freq162=0;/行频系数及初始条件f32 column_freq162=0;/列频系数及初始条件f32 ax1,ay1;/行频列频的系数f32 x_n,x_n_1,x_n_2;/行频的二阶差分方程样点f32 y_n,y_n_1,y_n_2; /列频频的二阶差分方程样点f32 z_n;/双音多频样点voi
4、d main()/DTMF发送主程序s16 cnt=2;f32 f0;s16 num;s16 i=0,n=0;if(brd_init(100) /初始化DSK板return;while(cnt-)/发光二极管闪烁两次,表明程序运行正常brd_led_toggle(BRD_LED0);delay(1000);brd_led_toggle(BRD_LED1);delay(1000);brd_led_toggle(BRD_LED1);delay(1000);2022年5月9日DSPDSP技术及应用技术及应用11hHndset=codec_open(HANDSET_CODEC);/打开CODEC,获得
5、句柄code_dac_mode(hHandset,CODEC_DAC_15BIT);/D/A工作在15-bit模式code_aout_gain(hHandset,CODEC_AOUT_MINUS_6dB ) ;/增益为-6dB code_sample_rate(hHandset,SR_8000); /D/A转换速率为/计算各键值的行频系数COS(2*PI*F0/FS)和初始条件SIN(2*PI*F0/FS)for(i=0;i16;i+)f0=dtmf_freqi0;row_freqi0=cos(2*PI*f0/fs);row_freqi1=sin(2*PI*f0/fs); /计算各键值的列频系
6、数COS(2*PI*F0/FS)和初始条件SIN(2*PI*F0/FS)for(i=0;i16;i+)f0=dtmf_freqi1;column_freqi0=cos(2*PI*f0/fs);column_freqi1=sin(2*PI*f0/fs);2022年5月9日DSPDSP技术及应用技术及应用12/循环发送DTMF按键缓冲区中的键值while(1)for(i=0;i16;i+)num=tele_numberi;/取出当前要发送的DTMF按键号码2022年5月9日DSPDSP技术及应用技术及应用13switch(num)/将DTMF按键号转换为数组下标case0:num=0;break;
7、case1:num=1;break;case*:num=14;break;case#:num=15;break;ax1=row_freqnum0;/行频系数x_n_2=row_freqnum1;/行频的初始条件,x(-2)ay1=column_freqnum0;/列频系数y_n_2=column_freqnum1;/列频的初始条件,y(-2)x_n_1=0;y_n_1=0;/输出DTMF信号,持续时间为50msn=0;cnt=400;2022年5月9日DSPDSP技术及应用技术及应用14while(cnt-)/计算本次输出的样点值x_n=2*ax1*x_n_1-x_n_2;/行频样点值y_n=
8、2*ax1*y_n_1-y_n_2;/列频样点值z_n=x_n+y_n;/DTMF信号样点值x_n_2=x_n_1;/更新x_n_1=x_n;y_n_2=y_n_1;y_n_1=y_n;data=16384.0*z_n;/将样点数转换为整数/等待D/A转换器准备好发送while(!MCBSP_XRDY(HANDEST_CODEC);*(volatile u16*)DXR1_ADDR(HANDSET_CODEC)=data;buffern=data;n+;2022年5月9日DSPDSP技术及应用技术及应用15cnt=400;/输出静音符号,持续时间为50mswhile(cnt-)while(!M
9、CBSP_XRDY(HANDEST_CODEC);*(volatile u16*)DXR1_ADDR(HANDSET_CODEC)=0;voiddelay(s16 period)int i,j;for(i=0;iperiod;i+)for(j=0;j1;j+)2022年5月9日DSPDSP技术及应用技术及应用162/1121( )1 2cos(2/)jk NezH zk N zz2022年5月9日DSPDSP技术及应用技术及应用172022年5月9日DSPDSP技术及应用技术及应用1822222|( )|()|()(1)2cos()()(1)kkkkkkX kyNvNvNvN vNN2022年
10、5月9日DSPDSP技术及应用技术及应用19开始DSK板初始化设置D/A转换器的分辨率为15位及转换速率为8000Hz读样点除以16384后存入数据接收缓冲区A/D转换器输出数据准备好?否是2022年5月9日DSPDSP技术及应用技术及应用20调用DTMF检测判决程序初始化Vk(n-1),Vk(n-2),重新开始检测是否接收到125个DTMF样点?否是计算行频和列频共8个频率的Vk(n)2022年5月9日DSPDSP技术及应用技术及应用21开始计算 频谱的平方幅度搜索幅度大于门限的行频和列频是否已检测到静音信号?否是2|( )|X n是否有两个幅度达标的频率?如果没有检测到任何频率置检测到静音
11、标志否是2022年5月9日DSPDSP技术及应用技术及应用22置已检测到DTMF信号标志返回DTMF键值判决DTMF键值存储,存满256个键之后显示2022年5月9日DSPDSP技术及应用技术及应用23#include #include #include #include #include #include HANDLE hHandset;float buffer125;/DTMF样点缓冲区float pi=3.1415926s16 data;int k=0; /vk(n)=2*coef*vk(n-1)-vk(n-2)+x(n),coef为w8,x(n)为 buffer256 /vk(n-2)
12、为ai0, vk(n-1)为ai1, vk(n)为ai2 loat w8,a83; float amp8;/频谱的平方幅度int i,j,x,y;int dtmf_flag=0; /DTMF检测进程,0为检测到静音符号,1为检测到1次DTMFint detect_result256=0;/缓存DTMF检测结果2022年5月9日DSPDSP技术及应用技术及应用24int l=0;void delay(int period);void dtmf_detect(void);void main()/主程序/初始化各行频列频的系数w0=2*cos(2*pi*11/125);w1=2*cos(2*pi*1
13、2/125);w2=2*cos(2*pi*13/125);w3=2*cos(2*pi*15/125);w4=2*cos(2*pi*19/125);w5=2*cos(2*pi*21/125);w6=2*cos(2*pi*23/125);w7=2*cos(2*pi*26/125);/初始化vk(n-1),vk(n-2)for(i=0;i8;i+);ai0=0;2022年5月9日DSPDSP技术及应用技术及应用25aj1=0;if(brd_init(100)return;while(cnt-)/发光二级管闪烁两次,表明程序正常运行brd_led_toggle(BRD_LED0);delay(1000
14、);brd_led_toggle(BRD_LED1);delay(1000);brd_led_toggle(BRD_LED2);delay(1000);hHandset=code_open(HANDSET_CODEC);/获得句柄codec_ade_mode(hHandset,CODEC_ADC_15BIT);/ADC为15bit模式codec_ain_gain(hHandset,CODEC_AIN_0dB);/输入增益为0dB2022年5月9日DSPDSP技术及应用技术及应用26codec_sample_rate(hHandset,SR_8000);/取样率为8000while(1)/等待A
15、/D转换器输出数据准备好while(!MCBSP_RRDY(HANDSET_CODEC);data=*(volatile u16*)DRR1_ADDR(HANDSET_CODEC);bufferk=data/16384.0;/增益控制,防止后续溢出for(i=0;i8;i+)/计算vk(n)-ai2/计算vk(n),vk(n-1),vk(n-2)ai2=wi*ai1-ai0+bufferk;ai0=ai1;ai1=ai2;k+;if(k=125)/读取125个样点,15ms时间k=0;dtmf_detect();/调用检测判决函数2022年5月9日DSPDSP技术及应用技术及应用27for(i
16、=0;i18;i+)/初始化vk(n-1),vk(n-2)ai0=0;ai1=0;void dtmf_detect(void)/计算频谱的平方幅度for(i=0;i8;i+)ampi=ai1*ai1+ai0*ai0-wi*ai1*ai0;/printf(“the amplitude%dis%f.rn”,i,ampi );j=0;2022年5月9日DSPDSP技术及应用技术及应用28j=0;for(i=0;i1500)j+;if(j=1)x=i;else if(j=2)y=i;/如果在静音之后检测到两个幅度达到门限的频率,则进行判决i=-1;if(demf_flag=0)if(j=2)2022年
17、5月9日DSPDSP技术及应用技术及应用29if(j=2)if(x=0&y=4)i=1;else if(x=0&y=5)i=2;else if(x=0&y=6)else if(x=2&y=7)i=C;else if(x=3&y=7)i=D;if(i!=-1)detect_resultl=i;l+;if(l=256)for(l=0;l,256;l+)/显示判决结果printf(“the DTMF signal is%c.rn”,detect_resultl;dtmf_flag+;/已经检测到一次DTMF信号else if(j=0)dtmf_flag=0;/
18、检测到静音信号void delay(int period)int i,j;for(i=0;iperiod;i+)for(j=0;j1;j+);NC 1RESETNC 1RESETNC NCNC NC1GND NC1GND NC1EN FB/SENSE1EN FB/SENSE1IN 1OUT1IN 1OUT1IN 1OUT1IN 1OUTNC 2RESETNC 2RESETNC NCNC NC2GND NC2GND NC2EN 2SENSE2EN 2SENSE2IN 2OUT2IN 2OUT2IN 2OUT2IN 2OUTNC NCNC NCNC NCNC NCC3C33333 F F3 3.3 3V V1 12 23 34 45 56 67 79 9101011111212131
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民用房购房合同范本
- 古代文献史料中的傩舞形态衍变研究
- 基于强化学习的迭代学习控制与优化方法研究
- 东北三省产业碳排放情景预测及达峰路径研究
- 库车村企联动推动农村集体经济发展模式研究
- Cu3SnS4自整流忆阻器的设计制备及其光电突触可塑性研究
- 农民公寓购房合同范本
- 怀旧的审美救赎
- 天然或压制软木废料企业ESG实践与创新战略研究报告
- 非常规油气企业ESG实践与创新战略研究报告
- 小学数学课堂有效教学现状调查问卷分析报告
- 食材配送服务方案投标方案(技术方案)
- 北京市大兴区2023-2024学年七年级下学期期中考试英语试卷
- 新能源充电桩安全管理与防护
- QCT848-2023拉臂式自装卸装置
- 人教版八年级下册英语默写(单词 重点短语 重点句型)含答案
- 历史类常识考试100题带答案(能力提升)
- 大学生生涯发展报告新能源汽车
- JBT 11699-2013 高处作业吊篮安装、拆卸、使用技术规程
- 护理干预在慢性病管理中的作用
- 托幼托育工作总结
评论
0/150
提交评论