DSP原理与应用13.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
有条件的抢先。 DSP/BIOS 用HWI模块来管理硬件中断 通过后面的表6.5我们了解到此 1。不再提供CPU的负载图功能 2。程序将不能使用任务对象或TSK模块的API函数调用 ,用户可以根据需要仅使用SWI软件中断线程 3。不能调用API函数动态创建对象或动态分配内存 4。当用户不使用PRD周期性模块和CLK时钟模块或PRD周期模块不由CLK模块驱动时 5。这样DSP/BIOS内核中将不再包含CSL库 1。系统错误处理函数设置属性窗口中,将所有错误处理函数该为空函数FXN_F_nop() 2。采用减少缓冲区和栈的大小来减小数据存储器的使用 DTMF 在DSP/BIOS下的实现 已经在CCS下完成DTMF码的产生和解调。 分析实现过程,主要有以下几个任务: 1. DTMF码的产生:分双音与静音,分别持续50ms。 2. DTMF的解码运算:每收到一个A/D数据的处理并完成DTMF码的判别。 3. A/D及D/A中断服务程序:DA完成双音码的数模转换;AD完成数据的接收并设置数据到达标志(全局变量)。 4. ‘AC01芯片的初始化: 设置采样率等参数,需要使用串口发送中断。 DSP/BIOS下线程考虑 拨号任务:定义周期性模块(PRD)每5秒运行一次FXN_Dial_Number()函数。 该函数将需要拨出的号码缓冲设置好,初始化全局计数变量和指针,并开启串口发送中断,开始拨号。 拨号缓冲中的数字为拨出的号码,0xff表示静音期,当遇到0xffff时,拨号结束,关闭串口发送中断 。 注意:FXN_Dial_Number将反复运行 ! 拨号任务相关函数 transmit(): 串口发送中断服务函数,并完成对发送数据的计数以便确定拨号音与静音的时间。 set_freq_coff(NowTel): 当前拨号数字所需要的频率系数。 iir_to_dtmf(): 根据前面的频率系数,产生响应的正弦波形。 接收任务的考虑 将整个de_dtmf()函数定义为一个TSK对象(_FXN_TSK_de_dtmf)。 该任务线程由McBSP的接收中断每收到一个新的数据就发出一个旗语(semaphore)(SEM_New_Sample)触发。 同时在中断服务程序内对收到数据计数,并使用全局变量IsNew_N,决定是否判断输出一个收到的号码。 接收相关函数 de_dtmf(): 对每个收到的数据做DFT,并对N点数据做能量累加。 receive(): 接收中断服务子程序。 choose_code(): 判断输出一个号码。 init_mem(): 初始化接收运算的一些变量。该函数应该在FXN_Dial_Number中运行。 初始化AC01的考虑 初始化AC01通过串口的发送中断,将采样率、通道设置等参数发到AC01。 用汇编代码完成,并且取代DSP/BIOS的串口发送中断,直接完成中断服务响应。 初始化完成后需要恢复,即串口发送中断仍然由DSP/BIOS管理,双音数据的发送程序也是挂接在DSP/BIOS硬件中断中完成。 相关代码: /*The following code are used to setup AC01*/ C54_plug(20,_start_ac01); /* change interrupt vector */ oldmask=C54_disableIMR(0xffff); /* close all IMR */ start_ac01(); /* in dtmf.asm, used to init AC01 McBSP0 */ C54_enableIMR(oldmask); /* restore old IMR */ /*End setup AC01 !*/ 中断函数的插入和打开 DSP/BIOS提供函数HWI_dispatchPlug(vecid, fxn, attrs)用于中断服务函数的插入。 该函数将使用HWI_dispatch功能,不将函数fxn直接插入中断向量表。后者可以使用函数C54_plug(vecid, fxn)。 下面是例子: #include DTMF5410_BIOScfg.h #include hwi.h …….. HWI_dispatchPlug(20

文档评论(0)

tkhyxy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档