MAXQ7654在信号滤波中的应用在信号滤波中的应用
本文所描述的应用旨在展示MAXQ7654 的混合信号特性。微控制器利用一个DAC 产生带噪声的正弦波。DAC
输出被接入一个ADC 输入通道进行采样。得到的采样通过一个简易的有限激励响应(FIR)滤波器,以衰减信号中
的高频分量,从而在第二个DAC 产生连续,光滑的正弦波输出。
基于高性能、16 位RISC MAXQ20 核, MAXQ7654 提供16 通道、12 位模数转换器(ADC)和双通道、12 位数模转换器(DAC)。
除模拟电路外,MAXQ7654 还具有完备的数字外设,包括:CAN 控制器、SPI 接口和4 个8/16 位定时器,可用作计数器或可编程
脉宽调制器。MAXQ7654 提供128kB 的程序存储空间, 能够胜任绝大多数嵌入式混合信号处理应用。
利用丰富的模拟和数字外设,在很多有意思的应用中都可施展MAXQ7654 的能力。本文聚焦于MAXQ7654 的信号处理能力,主
要展示其ADC、DAC 和硬件乘加单元。采用IAR 编译器和MAXQ7654 评估板(EV kit), 通过一个应用实例说明如何从一个充满
噪声的正弦波中滤出一个干净的低频信号。
集成的模拟功能和外设使信号滤波成为可能
MAXQ7654 集成了16 通道、12 位ADC,完成一次转换仅需16 个时钟周期。时钟频率为8MHz(最大值) 时,每秒可完成500,000
次采样。测量单端模拟信号时可对多达16 路信号进行采样,测量差分信号时可对多达8 路输入信号进行采样。该ADC 也可进行
温度测量——MAXQ7654 内含温度传感器,可读取芯片(管芯)温度。
MAXQ7654 包括一个硬件乘加单元,用于信号处理。它能在一个周期中进行两个16 位乘法,并且还有一个可选的累加器功能,可
工作于带符号或无符号模式。这样一来简化了FIR 和IIR 滤波器的实现;每个滤波因数只需3 个机器周期的处理,其中还包括了调
用滤波器的开销。
JTAG 调试引擎是MAXQ 平台公用的,当应用程序在目标硬件上运行时,利用它可完成寄存器和存储器的读、写操作。采用
JTAG 后还省掉了昂贵的仿真器。主要的C 编译器提供商,如Rowley 、IAR 和Python 均支持MAXQ7654 及其调试功能。
MAXQ 平台的一个新增外设是控制器局域网(CAN) 2.0B 接口,它是常用于工业和汽车应用的通信协议。MAXQ7654 的CAN 控
制器支持15 个消息中心,比特率高达1Mbps 。当受到或发出消息后以中断形式通知系统。
SPI.接口支持从机或主机模式,可进行8 位或16 位数据传输。SPI 常见于小型芯片当中,如可编程充电器、数字电位器、DAC、
ADC 和存储芯片。
MAXQ7654 有4 个多功能定时器。这些定时器采用8 位或16 位计数方式,支持周期性中断、脉宽调制、捕获及比较功能的自动
重装载。
滤波应用的软件架构
定时器产生中断时第一个DAC 输出带噪声的正弦波,以确保输出采样具有固定的间隔。设计用于生成正弦波的代码涉及到复杂
的浮点计算,实现起来运算量很大。考虑到正弦波数据是周期性重复出现的。重新计算那些不会随时间改变的正弦波数据会造
成资源浪费。因此,在应用程序一开始就预先算出一组正弦波数据。
在正弦波数据初始化之后,定时器产生周期性中断。定时器中断程序代码中的一个伪随机数产生器用来产生噪声,噪声被直接叠
加到干净的正弦波数据中。结果被传给DAC 产生输出信号。
为了保持演示程序代码的简洁,在用于产生输出正弦波的定时中断中同时对模拟输入信号进行采样。当读取输入采样后,采样信
号通过简易的FIR 滤波软件处理,为使效率最大化,该滤波软件用汇编语言来实现。滤波后的采样信号随后从第2 个DAC 输出。
用示波器来比较两个DAC 的输出,可以发现:一条正弦曲波较为粗糙,带有噪声,而另一条正弦波则看上去比较干净,由于FIR 滤
波器的长度,带有轻微的相位延迟。
噪声正弦波的生成和采样
定时器中断程序代码如下,程序开始时已预先计算好正弦波数据,本段代码将其转换为噪声正弦波数据。
sample = static_sin_data[sinindex++]
;
sinnoise = ((sinnoise ^ 0x5C) * 31) + 0xabcd;
thisnoise = sinnoise;
if (thisnoise & 0x01)
{
thisnoise = thisnoise & 0x1ff;
}
else