单片机控制的双路有源滤波器设计
波器 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 | ||||||||||
数据位 | 地 址 | 数据位 | 地 址 | ||||||||
D0 | D1 | A3 | A2 | A1 | A0 | D0 | D1 | A3 | A2 | A1 | A0 |
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的所有工作频率范围。
- 基于MSP430和MAX262程控滤波器的设计(05-11)
- FPGA的DSP性能揭秘(06-16)
- 基于单片机通用引脚的软件UART设计(10-16)
- 分时操作系统思想在单片机中的具体应用 (10-30)
- 基于AT89C51+DSP的双CPU伺服运动控制器的研究(05-26)
- 关于RTX51 TINY的分析与探讨(05-30)