基于dsp的简易频谱分析仪设计_毕业设计(编辑修改稿)内容摘要:

11 图 CPU定时器内部结构 从上图可以看出, CPU 定时器可以分为 16 位的分频器及 32 位的计数器。 可将计数周期先存到 PRDH:PRD(周期寄存器)中,当计数器启动时, PRDH:PRD 的值载入 TIMH:TIM(计数器)中进行减计数,当值减为 0 时,发出中断请求信号,同时计数值重新装载到周期寄存器中。 定时器初始化主要程序如下: void InitCpuTimers(void) { =150。 // 初 始 化 定 时 器 0 周期寄存器 = 0。 //清零定时器 0 的计数器 = 0。 //初始化定时器 0预定标计数器使其分频系数为 sysclkout/1,即 150MHz。 = 0。 = 1。 //停止定时器 0 的运行 = 1。 //将周期寄存器 PRD中的值装入计数器寄存器 TIM 中, //重装载控制位写 1,控制分频系数和计数初值的装载 12 =1。 //将 soft 和 free 设为 1,在遇到调试断点 =1。 //定时器 0 将继续运行 =1。 //使能定时器 0 中断,若计数器递减到 0 同时 tie 位为 1,定时器发出中断请求 } 中断模块 F2812的中断管理共分为外设级、 PIE级和 CPU级。 由于多种外设集成于芯片内部,会产生许多外设中断,因为 CPU无法处理所有的 CPU级中断请求,因而 F2812有一个专门用于处理判定外设中断的中断扩展控制器( PIE)。 中断仲裁机制确定中断服务程序的位置的原理是根据 PIE向量表存放的每个中断服务程序的地址来确定。 外设级 一当外设有中断事件, 对应外设的中断标识位就会置 1,若对应中断使能位设 1,那么外设中断的请求信号 PIE控制器。 若外设的中断被禁止输入进来,那么外设中断标志将一直保持为 1,直到软件清 0。 PIE 级 PIE的中断都有一个 (中断标志位) 和一个 (中断使能位), 另外,每个 CPU 中断组都有一应答位 PIEACKx。 若 PIE来了中断请求,相应中断标志位 1,若 也为 1,那么 PIEACKx 就可决定 CPU可否响应 此中断。 CPU级 13 CPU 级中断标志寄存器一旦在中断请求送入后标志位就会置 1。 在 IER ( CPU 中断使能寄存器)中相应位置 1,且 INTM(全局中断屏蔽位)为 0的情况下时,CPU会进入中断。 实现中断主要语句如下: DINT。 //禁止中断 EINT。 //使能 INTM(全局中断) ERTM。 //使能 DBGM(全局实时中断 ) EALLOW。 //有些寄存器受到写保护,要写它就先用此语句禁止写保护,写自由 =amp。 cpu_timer0_isr。 EDIS。 //使能写保护 =1。 //PIE级中断使能 IER|=M_INT1。 //使能 CPU中断 进入中断子程序如下: interrupt void cpu_timer0_isr(void) { =1。 ReloadCpuTimer0()。 time++。 if(time==fre) { time=0。 =sin_da[ncount++]。 14 if(ncount=100) { ncount=0。 round++。 if(round==1000/fre) { round=0。 fre++。 } if(fre=100) fre=1。 } } =PIEACK_GROUP1。 } 这段程序中 ncount 用来一个周期内计送出的点数,当到达一个周期的 100点时, ncount 变为 0; fre 为从 100Hz 到 10KHz 的 100个不同频率档, time 是用于定时器进入中断次数的计数,当 time 计数值 =fre 的值时会向 IO 送出正弦表的值,同时 time 清零; round 为不同频率档下波形的不同显示次数,其设置为1000/fre,即当 round 当前值为 1000 除以当前的 fre 时,说明 1000/fre 个当前频率下的正弦波已经全部送出, fre 自动加 1, round 变为 0。 GPIO 模块 GPIO 就是通用 IO 口。 嵌入式系统中常有很多的简单外部设备 /电路,对它们的控制,使用 GPIO(通用可编程 IO 接口)即可。 F2812 包含有 56 个多 功能引脚,其第一功能是作为通用意义数字 I/O 口 15 ( GPIO),为了使用通用 I/O,我们需要对 GPIO 进行相应的设置。 为了将数字量的正弦波输出,设计需要通过设置 GPIO 实现,具体语句如下: void InitGpio(void) { EALLOW。 =0x0000。 //将 gpio 设置为通用 i/o 口 =0x00ff。 //设置 gpio 为输出 =0x0000。 //窗宽为 0,无抗噪声能力 EDIS。 } DAC 转换模块 DAC0832 是采用 CMOS 工艺实现。 它是 8 位分辨率的数模转换集成芯片。 与微处理器完全兼容。 这个 DA 转换器应用很广泛因为它相比其他芯片来说 价格低、接口 电路 简单、转换控制容易。 DAC0832 包含有 8 位 DAC 寄存器、 8 位输入寄存器、 8位 D/A 转换器,它的采样频率高达 5MHz,因而可以实现对需要采样率高于 1MHz 的正弦波的采集。 16 图 DA模块电路图 如图所示, DA 模块采用的是 0832 器件手册上的应用例程。 图中 Q1 的作用是将电流输出型信号改为电压输出型信号; Q2的作用是由于输出是反向的电压,因此此处是起到反相器的作用。 陷波网络模块 本次设计采用的是有源带阻滤波器。 本有源带阻滤波器主要通过 双 T网络实现。 电阻电容组成外围网络和 LM358芯片 一起 实现功能。 通过电容电阻的谐振作用实现帯阻作用,通过 358芯片实现放大信号的作用。 17 图 陷波网络模块电路图 图 所示, RF 和 Rf(即 R4 和 R5) 选择 了 稍大一些的电阻值 是为了 使 电路更稳定 ,这里使用的分别是 160K 和 200K。 选择较小电容 也是 为了使电路运行更稳定 , 这里取 C= fo=1/2πRC 可得 R的值约为 27K,考虑到实际连接电路的问题,减少元件的个数,取 R1=R2=56K。 其各项参数如下: R1=R2=R=56k; R3=27k C1=C2 =1Nf ; C3= R5=Rf; R4=RF。 中心频率 fo=1/2πRC = 18 带宽 f2f1=2( 2Kf) = 增益 Kf=1+RF/Rf= Q点 Q=1/2(2Kf)= 图 陷波网络模块电路图 使用 multsim 中的波特图 实现了仿真 ,如图 所示。 信号调理电路模块 其电路图如下图所示: 19 图 信号调理电路 图中 R6以及 R7用于分压,使信号电压降低在 DSP 所要求的 0— 3v内,后面利用 LM358 制成的电压跟随器, 以 “ 隔离 ” 前后级之间的影响。 AD 采集模块 AD采集模块实现信号采集需要如下两个步骤: (1)利用事件管理器中的定时器定时决定采样频率; (2)设置 ADC模块; 其软件流程图如下所示 , 20 图 信号调理电路 事件管理器定时设置 在 AD采集过程中,利用事件管理器 EV的通用定时器实现采样频率的确定。 事件管理器包括 EVA和 EVB,有通用定时器 4,每个定时器有如下特点:: 16 位 TxCNT(定时器增 /减计数器)。 16 位 TxCMPR(定时器比较寄存器)。 开始 DSP 初始化 ADC 模块初始化 配置 ADC 配置 EVA 设置定时器 1 AD 采集 中断服务程序入口 AD 采样,将采样结果送入循环采样数组 采样满 512 次 ? 消除 AD 中断标志开总中断 中断返回 N Y 21 16 位 TxPR(定时器周期控制寄存器)。 16 位 TxCON(定时器控制寄存器)。 一个 TxCMP用于通用定时器比较输出。 定时器按照寄存器 TxCON 中的 TMODE1, TMODE0 位确定的工作 模式工作分别是停止 /保持模式、连续增计数模式、定向增 /减计数模式还是连续增 /减计数模式,较为常用的是第二种和第三种。 本设计采用的是连续增计数模式,下图为其工作模式图: 图 通用定时器连续增 计数模式 当计数器和周期寄存器在一个时钟周期匹配时,中断标志位会置为 1。 在外设中断未被屏蔽的情。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。