微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机控制的双路有源滤波器设计

单片机控制的双路有源滤波器设计

时间:02-25 来源:互联网 点击:

波器 A和B的高通、带阻和全通滤波输出端分别共用 MAX262的HPA、HPB引脚。需要处理的低频输入信号分别由MAX262的INA和INB引脚输入,滤波器A和滤波器B的三个输出端分别连接到模拟开关4052的输入端,然后由4052的输出端输出滤波处理后的信号,即图1中的OUTA和OUTB两路输出信号。4052的地址A1、A0由89C51 的P1.1、P1.0控制,实现对滤波器类型的选择。

3 系统软件实现方法

(1)编程数据获得方法

MAX262的地址A0~A3与数据D0D1的关系见表1。由表1可见每个滤波器的工作模式、中心频率、Q值所需编程数据均需要分8次写入MAX262的内部寄存器才能完成设置。

表1 MAX262的址A0~A3与数据D0D1的关系

滤波器A滤波器B
数据位地 址数据位地 址
D0D1A3A2A1A0D0D1A3A2A1A0
M0A
F0A
F2A
F4A
Q0A
Q2A
Q4A
Q6A
M1A
F1A
F3A
F5A
Q1A
Q3A
Q5A
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
M0B
F0B
F2B
F4B
Q0B
Q2B
Q4B
Q6B
M1
F1B
F3B
F5B
Q1B
Q3B
Q5B
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1

通过文献[1]给出的fCLK/f0与F0~F5的关系表格,得到本文根据fCLK/f0计算编程数据F0~F5的公式,即fCLK/f0与F0~F5的关系为:

fCLK/f0=40.84+1.57N1 (1)

或,N1为二进制数据F0~F5对应的十进制整数,范围为0~63共64级。

同样,对应滤波器的Q值也采用查表的方法,而是通过计算来获得Q值的编程数据Q0~Q7。Q值与Q0~Q7的关系为:

Q=64/(128-N2) (3)

或 N2=64(2-1/Q) (4)

其中,N2为二进数据Q0~Q6对应的十进制整数,范围为0~127共128级。

(2)系统程序流程

本系统的单片机主程序框图见图2。首先进行初始化,包括对8279的初始化,然后从片内RAM中读取新设置标志位进行判断。如果不是则给MAX262芯片送入滤波器所需的初始工作参数;是新设置则根据键中断服务程序获得的键值进行处理。

进行新设置时,首先根据输入的键值完成对滤波器的选择,包括滤波器A和B的设置选择以及相应滤波器的类型选择;然后根据式(4),由输入的Q值计算N2并转换成二进制编程数据Q0~Q6送片内RAM;同时根据式(2),由输入的中心频率f0值计算N1并转换为二进制编程数据F0~F5送片内RAM。在获得 MAX262的工作参数后,根据表1将这些参数转换为8字节的编程数据,由89C51的P0口送到MAX262。

设置完成后,MAX262就按照当前所要求的中心频率和Q值对输入信号进行滤波处理。

最后调用显示子程序,在LED数码管显示当前滤波器的工作参数,即中心频率和Q值。

本文采用单片机89C51来完成对可编程滤波器MAX262的控制,很好地实现了有源滤波器设计工作。而且这种程控滤波器具有使用灵活、调试容易的特点,一片MAX262就能完成对两路输入信号进行二阶滤波的处理。

如果需要四阶滤波可以很容易通过滤波器A和B的级联来实现,另外还可以通过对89C51的ALE信号进行倍频和分频实现AMX262的所有工作频率范围。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top