DSP论文,TMS320C2812来实现了FIR数字滤波DOC
- 格式:doc
- 大小:281.00 KB
- 文档页数:15
课程大作业实验报告语音信号的FIR滤波器处理课程名称:DSP原理及应用组长:何庆勇学号:200830590308 年级专业班级:08通信3班组员一:陈纯明学号:200830590301 年级专业班级:08通信3班指导教师徐梅宣报告提交日期2011年6月9日摘要随着信息与数字技术的发展,数字信号处理已经成为当今极其重要而学科与技术领域之一。
它在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。
在数字信号处理的基本方法中,通常会涉及到变换、滤波、频谱分析、调制解调和编码解码等处理。
其中滤波是应用非常广泛的一个环节,数字滤波器的理论和相关设计也一直都是人们研究的重点之一。
FIR滤波器的是非递归的,稳定性好,精度高;更重要的是,FIR滤波器在满足幅频响应要求的同时,可以获得严格的线性相位特征。
因此,它在高保真的信号处理,如数字音频、图像处理、数据传输和生物医学等领域得到广泛应用。
在数字信号处理中,滤波占有极其重要的地位。
数字滤波是语音信号处理、图像处理、模式识别、频谱分析等应用的基本处理算法。
用DSP芯片实现数字滤波除了具有稳定性好、精确度高、不受环境影响等优点外,还具有灵活性好等特点。
本文介绍了数字滤波器的设计基础及用窗函数法设计FIR滤波器的方法,运用MATHLAB语言实现了低通滤波器的设计并用CCS 2.0进行观察效果。
关键词: FIR滤波 MATHLAB 窗函数法 CCS目录1.设计要求 (1)2.滤波器的设计原理说明 (1)2.1数字滤波器的设计原理 (1)2.2FIR滤波器的基本结构 (1)2.3FIR滤波器的主要特点 (2)3.FIR滤波器的设计方法 (2)3.1FIR滤波器设计 (2)3.2窗函数设计的基本方法 (2)3.3滤波器的1 z算法实现 (2)4.FIR滤波器的MATLAB实现 (3)4.1用FIR1函数设计FIR滤波器 (3)4.2用FIR2函数设计FIR滤波器 (4)4.3用MATLAB工具箱(T OOLBOX)自带工具设计FIR滤波器 (4)5.FIR滤波器的DSP实现 (7)6.FIR滤波器的结果检验 (9)7. 调试问题 (10)8.心得体会 (11)参考文献 (12)1. 设计要求1) 设计一FIR 低通滤波器,实现对语音信号的滤波。
题目:利用DSP的FIR滤波器设计数字处理器(DSP)有很强的数据处理能力,它在高速数字信号处理领域有广泛的使用,例如数字滤波、音频处理、图像处理等。
相对于模拟滤波器,数字滤波器没有漂移,能够处理低频信号,频率响应特性可做成非常接近于理想的特性,且精度可以达到很高,容易集成等。
使用可编程的DSP芯片实现数字滤波可以通过修改滤波器的参数十分方便地改变滤波器的特性,下面主要说明利用TMS320VC54x DSP芯片设计实现FIR数字滤波器。
设计目的意义一个实际的使用系统中,总存在各种干扰,所以在系统设计中,滤波器的好坏将直接影响系统的性能。
使用DSP进行数字处理,可以对一个具有噪声和信号的混合信号源进行采样,再经过数字滤波,滤除噪声,就可以提取有用信号了。
所以说,数字滤波器是DSP最基本的使用领域,熟悉基于DSP的数字滤波器能为DSP使用系统开发提供良好的基础。
技术指标1、数字滤波器的频率参数主要有:①通带截频:为通带和过渡带的边界点,在该点信号增益下降到规定的下限。
②阻带截频:为阻带和过渡带的边界点,在该点信号衰耗下降到规定的下限。
③转折频率:为信号功率衰减到1/2(约3dB)时的频率,在很多情况下,也常以fc作为通带或阻带截频。
④当电路没有损耗时,固有频率:就是其谐振频率,复杂电路往往有多个固有频率。
2、增益和衰耗滤波器在通带内的增益并非常数。
①对低通滤波器通带增益,一般指ω=0时的增益;高通指ω→∞时的增益;带通则指中心频率处的增益。
②对带阻滤波器,应给出阻带衰耗,衰耗定义为增益的倒数。
③通带增益变化量指通带内各点增益的最大变化量,如果通带增益变化量以dB为单位,则指增益dB值的变化量。
3、阻尼系数和品质因数阻尼系数α是表征滤波器对角频率为ω0信号的阻尼作用,是滤波器中表示能量衰耗的一项指标,它是和传递函数的极点实部大小相关的一项系数。
4、灵敏度滤波电路由许多元件构成,每个元件参数值的变化都会影响滤波器的性能。
DSP2812 FIR数字滤波器
1 FIR数字滤波器
数字滤波器是利用数字的方法,按预定的要求对信号进行变换,把输入的信号变成一定的输出信号,从而达到改变信号频谱的目的。
FIR滤波器(有限冲激响应滤波器)的差分方程是:
∑-=-
=
1
)
(
)
(
)
(
N
k
k
n
x
k
h
n
y
其直接型结构如下图所示
源程序在MyFIR__nonBIOS文件夹下。
2 仿真实验
对FIR滤波器作如下假设:
a)输入信号xn[100]
b)滤波器系数h[50]
c)滤波后的值为yn[100]
输入信号xn[100]通过不同频率的正弦函数叠加模拟受干扰的信号。
滤波器系数通过matlab计算得到,在fir.h里定义如下:
滤波后的值放到数组yn[100],方便以图形的方式显示滤波后的输出波形。
3 实验结果
实验过程及现象请查看视频文件FIR.exe。
FIR滤波器可以实现低通、高通、带通、带阻。
在开发板上进行了低通滤波实验,实验数据过程抓图如下:时域内信号输入xn:
时域内滤波后输出信号:
频域内信号输入xn:
频域内滤波后输出信号:
4 实验分析
通过FIR数字滤波可以有效的滤掉信号杂波,提高信号质量。
有待于在工程中验证。
32阶的FIR数字低通、高通、带阻滤波器的实现。
对于DSP来说,低通、高通、带阻滤波器实现程序大致相同,只是在于滤波系数不同。
所以我们滤波器系数分别放在三个头文件中,分别对应低通、高通、带阻。
FIR滤波器程序下面为一个FIR低通、带通、高通的通用程序。
HIGHPASS .set 0 ;if you want to use ,please set the value to 1 BANDPASS .set 0LOWPASS .set 1.global start,fir.mmregsCOFF_FIR_START: .sect "coff_fir".if LOWPASS.include "lowpass\lowpass.inc".elseif BANDPASS.include "bandpass\bandpass.inc".else.include "highpass\highpass.inc".endifK_FIR_BFFR .set 32d_data_buffer .usect "fir_bfr",64FIR_DP .usect "fir_vars",0d_filin .usect "fir_vars",1d_filout .usect "fir_vars",100h.asg AR4,FIR_DATA_P.asg AR6,INBUF_P.asg AR7,OUTBUF_P.sect "fir_prog"nopstart:LD #FIR_DP,DP ;加载数据页指针STM #d_data_buffer,FIR_DATA_PRPTZ A,#K_FIR_BFFR-1STL A,*FIR_DATA_P+;置数据缓冲区为0STM #d_filin,INBUF_P;新采样数据指针STM #d_filout,OUTBUF_P;滤波输出指针STM #100h,BKfir_loop:NOP ;Add Breakpoint & porbe pointLD *INBUF_P,A;获得输入采样数据CALL fir ;执行滤波STH A,*OUTBUF_P+%main_end:b fir_loop ;Add Breakpointfir:SSBX SXMSSBX FRCTSTM #d_data_buffer,FIR_DATA_PSTL A,*FIR_DATA_P;将采样数据放入数据缓冲X(n)STM #(d_data_buffer+K_FIR_BFFR-1),FIR_DATA_P fir_task:RPTZ A,#K_FIR_BFFR-1MACD *FIR_DATA_P-,COFF_FIR_START,A;乘加累加,且将数据缓冲区的数据移位。
基于DSP实现的FIR低通滤波器FIR(有限脉冲响应)低通滤波器是一种常见的数字信号处理(DSP)滤波器。
它的设计和实现非常灵活,可以用于去除数字信号中高频成分,使得信号能在一定的频率范围内进行平滑处理。
FIR低通滤波器有很多种设计方法,其中最简单的方法是基于窗函数设计,例如矩形窗、汉宁窗、布莱克曼窗等。
这些窗函数的选择取决于滤波器的性能要求和频率响应的形状。
在DSP中,FIR低通滤波器的实现可以采用直接形式、级联形式、并行形式和迭代形式等多种结构。
其中直接形式是最简单和直观的实现方式,也是最容易理解和实现的一种结构。
直接形式的FIR低通滤波器由一个延迟线、一组乘法器和加法器组成。
延迟线用于延迟输入信号,乘法器用于对延迟后的信号进行调制,而加法器则将调制后的信号相加得到输出信号。
```----------------------,,,x(n) -->, Delay ,-->, Multiply,-->--+ Sum ,--> y(n)Line ,,,----------------------```在实现过程中,需要注意的是延迟线的设置和乘法器的系数。
延迟线的长度决定了滤波器的阶数,即滤波器对输入信号的响应范围。
乘法器的系数则决定了滤波器的频率响应,可以通过窗函数的选取来确定。
通常,FIR滤波器的实现可以通过查表法或者卷积法来实现。
查表法通过预先计算所有可能的输入组合,并将其存储在一张查找表中,以减少计算量。
卷积法则通过将输入信号和滤波器的冲击响应进行卷积运算来得到输出信号。
当实现FIR低通滤波器时,还需要考虑滤波器的性能指标和算法的优化。
常见的性能指标包括滤波器的截止频率、抗混叠性能、通带和阻带的幅频特性等。
算法的优化可以从以下几个方面考虑:乘法器的系数选择、滤波器结构的选择、滤波器长度的选择和存储器的优化等。
总之,基于DSP实现的FIR低通滤波器是一种常用的数字信号处理滤波器,它可以用于去除数字信号中的高频成分,平滑信号的频谱。
随着信息处理技术的飞速发展,数字信号处理技术逐渐发展成为主流技术,它在电子信息、通信、软件无线电、自动控制、仪表技术、信息家电等高科技领域得到了越来越广泛的应用。
相对于模拟滤波器,数字滤波器没有漂移,能够处理低频信号,频率响应特性可做成非常接近于理想的特性,且精度可以达到很高,容易集成等,这些优势决定了数字滤波器的应用越来越广泛。
同时DSP(数字信号处理器)的出现和FPGA的迅速发展也促进了数字滤波器的发展,并为数字滤波器的硬件实现提供了更多的选择。
本课题主要应用MATLAB软件设计FIR数字滤波器的系数,用这些系数设计FIR滤波器并用编程仿真;应用DSP集成开发环境CCS调试程序,用TMS320C2812来实现了FIR数字滤波。
具体工作包括:对FIR数字滤波器的基本理论进行了分析和探讨;采用MATLAB软件来学习数字滤波器的基本知识,计算数字滤波器的系数,研究算法的可行性,对FIR低通数字滤波器进行前期的设计和仿真;系统介绍了TI公司数字信号处理器的硬件结构、性能特点和DSP 的集成开发环境CCS;应用DSP集成开发环境用CCS调程序,用TMS320C2812来实现了FIR数字滤波。
关键词:数字滤波器,DSP,FIR,MATLAB1绪论 (1)2系统开发平台与环境 (1)2.1CCS开发环境 (1)2.2DSP开发实验箱 (2)3FIR滤波器设计过程 (2)3.1FIR滤波器设计总框图 (2)3.2FIR滤波器设计的原理 (3)3.3FIR滤波器的设计方法 (3)4程序流程图 (4)5编写程序并仿真 (5)5.1滤波器计算函数如下 (5)5.2仿真结果 (5)6总结 (6)7参考文献 (7)8附录 (8)1绪论在信号处理中,滤波占有十分重要的地位。
数字滤波是数字信号处理的基本方法。
数字滤波与模拟滤波相比有很多优点,它除了可避免模拟滤波器固有的电压漂移、温度漂移和噪声等问题外,还能满足滤波器对幅度和相位的严格要求。
郑州航空工业管理学院电子通信工程系DSP原理及应用课程设计报告设计题目:基于TMS320F2812 DSP处理器的FIR滤波器的设计与实现学号:0 9 13.................姓名: ................专业: 电子信息工程设计日期:2012年6月13日指导老师:........... ................目录一、引言二、设计目的三、设计要求四、总体设计4.1利用Matlab软件的FDATool工具设计FIR滤波器4.1.1有限冲击响应数字滤波器的基础理论4.1.2 利用Matlab软件的FDATool设计FIR滤波器4.1.3提取滤波器参数4.2 CCS环境下FIR滤波器的设计及软件仿真4.2.1 程序流程图4.2.2 在CCS集成开发环境下新建FIR滤波器工程4.2.3观察滤波前后的信号的时域波形及FFT Magnitude波形4.2.4 程序清单4.3 对实时采样信号进行滤波的FIR滤波器的实现4.3.1 程序清单4.3.2 测试效果4.3.3 SCI串行数据传输五、总结六、参考文献基于TMS320F2812 DSP处理器的FIR滤波器的设计与实现一、引言数字信号处理(DSP)包括两重含义:数字信号处理技术(Digital Signal Processing )和数字信号处理器( Digital Signal Processor )。
在数字信号处理的基本方法中,滤波是应用非常广泛的一个环节,数字滤波器的理论与相关设计也一直都是人们研究的重点之一。
数字滤波器根据其单位冲击响应函数的时域特性可分为两类:无限冲击响应(Infinite Impulse Response,IIR)滤波器和有限冲击响应(Finite Impulse Response,FIR)滤波器。
与 IIR 滤波器相比,FIR的实现是非递归的。
使用通用DSP芯片实现滤波方式较为简单,是一种实时的,快速的,特别适合于实现各种数字信号处理运算的微处理器,借助于通用数字计算机按滤波器的设计算法编出程序进行数字滤波计算。
FIR滤波器在DSP上的实现
1引言
近年来,随着数字信号处理(DSP)技术的发展,自由响应滤波器(FIR)已成为DSP系统的核心部分,广泛用于各种应用,如声学信号处理、通信器件、生物医学信号处理等。
本文首先介绍FIR滤波器的基本原理,之后介绍如何在DSP上实现FIR滤波器,主要介绍两种实现方法:延迟求和和移位加法(Shift-Add)。
最后,将对比分析两种实现方法的优劣,并分析哪些条件下使用移位加法。
2FIR滤波器的原理
输入的时域信号x[n]经过一系列不同阶数的延迟单元滤波器系数h[n]的乘法和求和运算,从而得到输出的时域信号y[n],即
y[n]=\sum_{k=0}^{k=N}h_{k}x[n-k]
其中,x[n]表示输入时域信号,h[n]表示滤波器系数,y[n]表示输出时域信号,N表示滤波器的阶数。
3在DSP上实现FIR滤波器。
随着信息处理技术的飞速发展,数字信号处理技术逐渐发展成为主流技术,它在电子信息、通信、软件无线电、自动控制、仪表技术、信息家电等高科技领域得到了越来越广泛的应用。
相对于模拟滤波器,数字滤波器没有漂移,能够处理低频信号,频率响应特性可做成非常接近于理想的特性,且精度可以达到很高,容易集成等,这些优势决定了数字滤波器的应用越来越广泛。
同时DSP(数字信号处理器)的出现和FPGA的迅速发展也促进了数字滤波器的发展,并为数字滤波器的硬件实现提供了更多的选择。
本课题主要应用MATLAB软件设计FIR数字滤波器的系数,用这些系数设计FIR滤波器并用编程仿真;应用DSP集成开发环境CCS调试程序,用TMS320C2812来实现了FIR数字滤波。
具体工作包括:对FIR数字滤波器的基本理论进行了分析和探讨;采用MATLAB软件来学习数字滤波器的基本知识,计算数字滤波器的系数,研究算法的可行性,对FIR低通数字滤波器进行前期的设计和仿真;系统介绍了TI公司数字信号处理器的硬件结构、性能特点和DSP 的集成开发环境CCS;应用DSP集成开发环境用CCS调程序,用TMS320C2812来实现了FIR数字滤波。
关键词:数字滤波器,DSP,FIR,MATLAB1绪论 (1)2系统开发平台与环境 (1)2.1CCS开发环境 (1)2.2DSP开发实验箱 (2)3FIR滤波器设计过程 (2)3.1FIR滤波器设计总框图 (2)3.2FIR滤波器设计的原理 (3)3.3FIR滤波器的设计方法 (3)4程序流程图 (4)5编写程序并仿真 (5)5.1滤波器计算函数如下 (5)5.2仿真结果 (5)6总结 (6)7参考文献 (7)8附录 (8)1绪论在信号处理中,滤波占有十分重要的地位。
数字滤波是数字信号处理的基本方法。
数字滤波与模拟滤波相比有很多优点,它除了可避免模拟滤波器固有的电压漂移、温度漂移和噪声等问题外,还能满足滤波器对幅度和相位的严格要求。
低通有限冲激响应滤波器(低通FIR滤波器)有其独特的优点,因为FIR系统只有零点,因此,系统总是稳定的,而且容易实现线性相位和允许实现多通道滤波器。
DSP(数字信号处理器)与一般的微处理器相比有很大的区别,它所特有的系统结构、指令集合、数据流程方式为解决复杂的数字信号处理问题提供了便利,本文选用TMS320C2812作为DSP处理芯片,通过对其编程来实现FIR滤波器。
对数字滤波器而言,从实现方法上,有FIR滤波器和无限冲激响应(IIR)滤波器之分。
由于FIR滤波器只有零点,因此这一类系统不像IIR系统那样易取得比较好的通带与阻带衰减特性。
但是FIR系统有自己突出的优点:①系统总是稳定的;②易实现线性相位;③允许设计多通带(阻带)滤波器。
其中后两项是IIR系统不易实现的。
利用C语言在CCS环境中编写一个FIR滤波器程序,并能利用已设计好的滤波器对常用信号进行滤波处理。
2系统开发平台与环境2.1 CCS开发环境CCS提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。
CCS 提供了基本的代码生成工具,它们具有一系列的调试、分析能力。
CCS支持如下图2.1所示的开发周期的所有阶段。
图2.12.2 DSP开发实验箱DSP开发箱本着模块化、总线型、开放式、系列化的设计思想,采用统一的系统结构、模块结构和机械结构,以多种典型DSP处理器构成具有标准总线和简单发动机相同物理尺寸的高性能嵌入式DSP开发板。
3FIR滤波器设计过程3.1 FIR滤波器设计总框图3.2 FIR滤波器设计的原理设a i(i=0,1,2,…,N-1)为滤波器的冲激响应,输入信号为x(n),则FIR 滤波器的输入输出关系为:1图3.23.3 FIR滤波器的设计方法循环缓冲算法:对于N级的FIR滤波器,在数据存储器中开辟一个称之为滑窗的N个单元的缓冲区,滑窗中存放最新的N个输入样本。
每次输入新的样本时,一新样本改写滑窗中的最老的数据,而滑窗中的其他数据不需要移动。
利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址,环缓冲区地址首位相邻。
下面,以N=5的FIR滤波器循环缓冲区为例,说明循环缓冲区中数据是如何寻址的。
5级循环缓冲区的结构如图3.3所示,顶部为低地址。
数据存储器数据存储器数据存储器顶部底部图3.34程序流程图图4.15编写程序并仿真5.1 滤波器计算函数如下float FIR(){float fSum;fSum=0;for ( i=0;i<FIRNUMBER;i++ ){fSum+=(fXn[i]*fHn[i]);}return(fSum);}5.2 仿真结果输入信号图5.2-1输出信号图5.2-2输入的信号是10-100Hz与1k-10kHz信号的相加,经过滤波只输出了10-100Hz的信号,而较高频率的信号被滤除。
效果理想。
6总结FIR滤波器的设计是数字信号处理技术的基础,也是DSP芯片的重要组成部分。
FIR滤波器性能的好坏直接影响着DSP的运行速度和精度,对现代电子技术的发展起决定性作用,FIR滤波器的设计在以后的一段相当长的时间里将持续主导DSP,而DSP随着电子技术的不断发展,应用领域愈来愈广泛。
这次课程设计实现了一个简单的FIR滤波器的设计,在罗老师的精心指导和帮助以及自己上网查找资料,较好的完成了课程设计的任务并达到了理想的目的。
在这里我对罗老师表示感谢,感谢她的耐心和热心。
通过这次课程设计使我对DSP芯片有了更深一步的了解,也不断的强化了自己的基础知识。
7参考文献[1]程佩青.数字信号处理教程[M].北京:清华大学出版社,1999年[2]孙宗瀛,谢鸿林.TMS320C5xDSP原理设计与应用[M].北京:清华大学出版社,2002年[3]乔瑞萍,崔涛,张芳娟.TMS320C54xDSP原理及应用[M].西安:西安电子科技大学出版社,2005年[4]张雄伟. DSP芯片的原理与开发应用(第三版)[M].北京:电子工业出版社,2003年[5]郑红.TMS320C54XDSP应用系统设计[M]. 北京:北京航空航天大学出版社,2002年8附录#include "DSP281x_Device.h" // DSP281x Headerfile Include File #include "DSP281x_Examples.h" // DSP281x Examples Include File #include "f2812a.h"#include <math.h>#define FIRNUMBER 25// 函数声明interrupt void adc_isr(void);float FIR();float fHn[FIRNUMBER]={0.00218610509217333,0.0236189556168884, 0.0173400056226900,0.0245021776420168,0.0308889378060406,0.0376418229431873,0.0443551828218174,0.0507147318524124,0.0564451660108467,0.0612310430334062,0.0648493648656627,0.0671115426557053,0.0678704755615346,0.0671115426557053,0.0648493648656627,0.0612310430334062,0.0564451660108467,0.0507147318524124,0.0443551828218174,0.0376418229431873,0.0308889378060406,0.0245021776420168,0.0173400056226900,0.0236189556168884,0.00218610509217333};// 定义全局变量Uint16 V oltage;float shurudeshijiedianya;float ADCLO=0; // ADC转换的参考电平为0 float fXn[FIRNUMBER]={ 0.0 };float fOutput;int i;float fOut[256],fIn[256];int nIn,nOut;main(){InitSysCtrl(); // 初始化cpuDINT; // 关中断InitPieCtrl(); // 初始化pie寄存器IER = 0x0000; // 禁止所有的中断IFR = 0x0000;InitPieVectTable(); // 初始化pie中断向量表EALLOW; // This is needed to write to EALLOW protected registerPieVectTable.ADCINT = &adc_isr; // 将中断入口地址赋给中断向量表中对应的位置EDIS; // This is needed to disable write to EALLOW protected registersAdcRegs.ADCTRL1.bit.RESET = 1; // Reset the ADC moduleasm(" RPT #10 || NOP"); // Must wait 12-cycles (worst-case)for ADC reset to take effectAdcRegs.ADCTRL3.all = 0x00C8; // first power-up ref and bandgap circuitsAdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3; // Power upbandgap/reference circuitryAdcRegs.ADCTRL3.bit.ADCPWDN = 1; // Power up rest of ADC// 设置EV A// Assumes EV A Clock is already enabled in InitSysCtrl();EvaRegs.T1CON.bit.TMODE = 2; // 计数模式为连续增计数EvaRegs.T1CON.bit.TPS = 1; // T1CLK=HSPCLK/2 = 37.5 MHzEvaRegs.T1CON.bit.TENABLE = 0; // 暂时禁止T1 计数EvaRegs.T1CON.bit.TCLKS10 = 0; // 使用内部时钟EvaRegs.GPTCONA.bit.T1TOADC = 2; // 周期中断启动ADCEvaRegs.EV AIMRA.bit.T1PINT = 1; // 使能定时器T1 的周期中断EvaRegs.EV AIFRA.bit.T1PINT = 1; // 清除定时器T1 的周期中断标志EvaRegs.T1PR = 0x1D4B; // 周期为0.2 ms,计算公式为T=(T1PR+1)/(TCLK*10^6)EvaRegs.T1CNT = 0; // 初始化计数寄存器// 设置ADCAdcRegs.ADCTRL3.bit.ADCCLKPS = 15; // ADCLK=HSPCLK/30AdcRegs.ADCMAXCONV.all = 0x0000; // 最大转换1个通道AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0; // 选择采样通道0AdcRegs.ADCTRL2.bit.EV A_SOC_SEQ1 = 1; // 允许EV A触发启动SEQ1/SEQAdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; // 使能SEQ1的中断请求// Enable ADCINT in PIEPieCtrlRegs.PIEIER1.bit.INTx6 = 1;IER |= M_INT1; // 开CPU中断EINT; // 使能全局中断ERTM; // 使能实时中断EvaRegs.T1CON.bit.TENABLE = 1; // 启动T1 计数// Wait for ADC interruptwhile(1){}}interrupt void adc_isr(void){V oltage = AdcRegs.ADCRESULT0 >>4;// 将采样得到的数据右移4位,如果不移,实际采样值计算公式不同下shurudeshijiedianya = (float)(V oltage)/4095*3+ADCLO;// 采样for ( i=FIRNUMBER-1;i>0;i-- )fXn[i] = fXn[i-1];fXn[0] = shurudeshijiedianya;// 将最新采样得到的实际值放入fXn[0]fIn[nIn] = shurudeshijiedianya;nIn++;if ( nIn>=256 ){nIn = 0; /* 请在此句上设置软件断点*/}fOutput = FIR();fOut[nOut] = fOutput;nOut++;if ( nOut>=256 ){nOut = 0; /* 请在此句上设置软件断点*/}//下面的变量在"f2812a.h"已经定义DA_DATA_L = V oltage&0xff; // 第一通道da数据输出量低8位DA_DATA_H = ((V oltage>>8)&0x0f)|DA_CHN1; // 第一通道da 数据输出量高8位和通道号1DA_CTL=0;// Reinitialize for next ADC sequenceAdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // 复位序列发生器AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; // 清除ADC 中断PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; // 响应PIE 同组中断EINT; // 使能全局中断return;}float FIR(){float fSum;fSum=0;for ( i=0;i<FIRNUMBER;i++ ){fSum+=(fXn[i]*fHn[i]);}return(fSum);}。