前言
数据采集及处理系统在众多领域均有广泛的应用,其主要功能是把外界模拟信号的电压参量经过A/D转换器,转换成数字量,并把转换结果存储以便分析处理。
本系统采用TI 的DSP 芯片TMS320F2812 作为信号采集和处理的核心,通过片上自带的12位ADC进行采集。采集后的数据暂时存储在片内存储器中,通过串行异步通信接口SCI
传输到微机,微机将以文件形式存储采样数据。数字处理部分主要是进行简单的窄带滤波。考虑到采样器件可能和微机有较远距离(但<
1200M),在SCI和微机间采用了RS-422传输协议。
TMS320F2812介绍
目前应用最多的是德州仪器公司的TMS320系列和摩托罗拉公司的DSP56000和DSP96000系列。TMS320F28系列芯片是TI最新推出的DSP芯片,特别适用于有大批量数据处理的测控场合,如数据采集,工业自动化控制,电力电子技术应用,智能化仪器仪表及电机,马达伺服控制系统等。其主要特点有:
采用高性能的静态CMOS技术,能在一个周期内完成32*32位的乘法累加运算,或者两个16*16位的乘法累加运算;时钟频率最高可达150MHz即6.67ns的指令周期,外部采用低频时钟、通过片内锁相环倍频,低功耗设计,FLASH
编程电压为3.3伏特。
16通道的12位模数转换器(ADC)含两路采样保持器,一个转换单元,可实现双通道同步采样,最小转换时间为80ns.片上含两个事件管理单元(EVA,EVB),设计用于PWM输出,转速测量、脉宽测量等。通讯接口,含2
个通用异步串口(SCI);2个通用同步串口(SPI),1个CAN总线接口(ECAN),2个McBSP串口(McBSP),56个独立配置的通用多功能I/O(GPIO)。
TMS320F2812应用的大量外设接口简化了电路设计。同时,它提供了足够的处理能力,使一些复杂实时控制算法的应用成为可能。
片内外设ADC
TMS320F2812 的ADC模块是一个12位分辨率的,具有流水线结构的模数转换器,(流水线ADC也称作分级型ADC)是这三种结构(现代模数转换器(ADC)设计最常用的结构分为逐次逼近(SAR)型ADC、
- ADC和流水线ADC三种)中能超过100 MSPS最高采样速率(但精度最低)的ADC,这种流水线结构的ADC分辨率通常最高仅能达到14
bit。TMS320F2812内置双采样保持电路,保持数据采集时窗口有独立的预定标控制。并且允许系统对同一通道转换多次,允许用户执行过采样算法,这较传统的单一转换结果增加了更多的解决方案,有利于提高采样的精度。有多个触发源可以启动ADC
转换。快速的转换时间, ADC 时钟可以配置为25MHz,最高采样带宽为12.5MSPS。用TMS320F2812 搭建数据采集系统时,不必外接ADC,避免了复杂的硬件设计。由于此ADC可以直接对0-3V电压范围采样,也可以经过信号调理后对峰峰值不超过3V的双极性模拟信号进行采样。先把被测信号用示波器或其他方法判断其极性和幅值范围。若为单极性信号则断开偏置电路,双极性时连接到电路上调节电压范围到0-3V。为测试片上ADC的线性,实验中主要是对几个电平信号进行采样,把ADC
采集的结果在程序中计算其对应的模拟量,并且同时用数字万用表测量,计算ADC 的线性和精度。实验数据如表1所示。
表1:实验数据(略)
由上表所得ADC的线性曲线如图1所示:
图1 ADC的线性曲线(略)
采集0-3V的信号时(D 为采集的数字量 ADCLO)计算公式为:
V=3(D-ADCLO)/(2power12-1)
采集峰峰值3V的双极性信号时,需要连接偏置电路。首先不加入信号直接测出偏置电压的数字量为DV,则实际的信号与采集的数字量的关系为:
V=3(D-DV)/(2power12-1)
数字信号处理
数字信号处理之所以发展得这样快,应用得这么广,是与它的突出优点分不开的。归纳起来,有以下四个方面的优点:
(1)精度高。模拟系统的精度主要取决于元器件的精度,一般模拟器件的精度达到10-3,己很不容易。而数字系统的精度主要取决于字长,16位的字长可达10-4以上。
(2)灵活性大。模拟信号装置一旦参数选定就不易改变,但是数字系统则不然,它的系数可调,甚至还可以具有可编程和自适应的能力。
(3)可靠性高。由于数字系统只有“0” 、“1”两个电平,其受温度、环境以及噪声等的影响比模拟系统小。
(4)时分复用。利用一套装置同时处理几个通道的信号。
与PC的通信
串行通信接口SCI是采用双向通信的的异步串行通信接口,即通常所说的UART口。为减少串口通信时的CPU开销,TMS320F2812的串口支持16级接收和发送FIFO。SCI模块采用标准非归0
数据格式,可以与CPU或其他通信数据格式兼容的异步外设进行数字通信。当不使用FIFO时,SCI接收器和发送器采用双级缓冲传送数据,SCI接收器和发送器有自己独立的使能和中断位,可以在半双工通信中进行独立的操作,或者在全双工模式下同时操作。为了确保数据的完整性,SCI模块对接收到的数据进行中断检测、极性、超限和祯错误检测。通过对16位的波特率控制寄存器进行编程,可配置不同的SCI通信速率。TMS320F2812支持自动波特率检测逻辑。发送和接收可采用中断和查询两种方式。
由于TMS320F2812片内存储空间相对较小,难以做到长时间连续采集。本系统将采集的结果暂时存储在DSP 的片内数据区,再用微机的串口RS-232
实现与DSP 的电平匹配,同时实现全双工通信。为增大传输距离,在这中间又加两片MAX3490(两片MAX3490 之间电压很高,可以传输相当长的距离)。实验所需的电路原理如图2所示:
图2 实验所需电路示理图(略)
软件部分
DSP 的编程工具有C 语言和汇编语言两种。一般实时性要求不是特别高的场合,采用C语言编程完全可以满足要求。对于高速实时应用,采用C语言和汇编语言混合编程的方法,能把C语言的优点和汇编语言的高效率有机结合起来。本文涉及的关键程序和相应的流程图如下:
EALLOW;
SysCtrlRegs.HISPCP.all=03;
EDIS;
AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3;
AdcRegs.ADCTRL3.bit.ADCPWDN = 1;
// InitAdc();
//采样窗口大小设置寄存器
AdcRegs.ADCTRL1.bit.ACQ_PS=0xf;
//内核时钟分频器
AdcRegs.ADCTRL3.bit.ADCCLKPS=0x1;
//级联排序器工作方式
AdcRegs.ADCTRL1.bit.SEQ_CASC=1;
AdcRegs.ADCMAXCONV.all=0x0001;
AdcRegs.ADCCHSELSEQ1.all=0x0011;
AdcRegs.ADCTRL1.bit.CONT_RUN=1;
//初始化串行通信模块SCI寄存器
EALLOW;
GpioMuxRegs.GPFMUX.all=0xffff;
GpioMuxRegs.GPGMUX.all=0xffff;
EDIS;
SRA.SCICCR.all=0X0007;
SRB.SCICCR.all=0X0007;
SRA.SCICTL1.all=0X0003;
SRB.SCICTL1.all=0X0003;
SRA.SCICTL2.bit .RXBKINTENA=1;
SRB.SCICTL2.bit .TXINTENA=1;
窄带滤波:
for(k=0;k<=l-1;k++)
{
wf=(2*pi*k)/l;
re=0.0;
im=0.0;
for(i=0;i<n;i++)
{
re=re+h[i]*cos((float)i*wf);
im=im+h[i]*sin((float)i*wf);
}
d[k]=sqrt(pow(re,2)+pow(im,2)); /*求模(幅度)*/
//db[k]=20.0*log10(d); /*转换为对数表示形式*/
实际采集到的一个波形为:
图(略)
结束语
本文论述了以32 位定点芯片TMS320F2812 为核心的数据采集系统,充分利用它的片内外设ADC,SCI。利用其快速的转换时间,实时地把采集的数据传输到微机上。12
位的高速ADC 保证了采样的快速准确和同步,初步实现了数据的采集和存储。数据采样率可以通过程序实时根据输入信号的频率进行改变。
|