摘 要:多输入通道之间的相位误差是title="数据采集">数据采集系统的重要问题之一。采用六输入通道模数转换器件AD73360和数字信号处理器TMS320F2812设计了多通道数据采集系统,实现了两者之间的接口电路和通信程序设计。该系统可用于多路输入信号的同步采样,实验证明了系统的有效性。
关键词:数据采集; AD73360; TMS320F2812
多通道数据采集系统一般是在一块印刷电路板上集成了模拟多路开关、程控放大器、采样/保持器、A/D和D/A转换器等器件,其原理框图如图1所示[1]。这类系统虽然可以采集多路模拟信号,但其实只有一路A/D转换器,为了能够采集多路模拟信号,只能利用模拟多路开关在多路模拟信号之间进行切换。这样做的好处是可以减少硬件成本和缩小板卡的尺寸,但是当多个模拟信号巡回采样时,各路信号之间必然存在采样的时差。
本文利用AD73360、TMS320F2812设计了数据采集系统,包含6个以上可同时采样的模拟通道,从而有效地减少了由于采样时间不同而产生的相位误差。
1 数据采集系统设计
本文设计的数据采集卡如图2所示。A/D转换器AD73360是一个包含6路模拟信号输入通道的器件,每路通道均包含独自的信号调理器、可编程放大器和16位的A/D转换部分。这样可实现对多路模拟信号的同时采样,以减小采样的相位差。数字信号处理器(DSP)采用TMS320F2812,实现对A/D转换器AD73360的控制和读取采样数据,从而减少了逻辑控制电路。计算机接口电路采用RS232C和RS485标准串行口实现DSP与上位机之间的通信。
1.1 A/D转换器AD73360
AD73360具有6路16位分辨率的同时采样通道,减少了由于采样时间不同而产生的相位误差。各个通道的采样速率可设为8kHz、16kHz、32kHz或64kHz,都有内置的抗混迭滤波器和程控可变增益放大器。可以级联使用,最多可将8片级联在一起。因此,模拟量输入通道的最大数目可扩展到48路。
AD73360使用同步串行接口SPORT与CPU相连。SPORT接口信号线只有6条,不仅节约了印刷电路板的面积,而且也减小了电磁干扰。DSP基本都支持同步串行接口,所以AD73360与DSP组成的测控系统简洁高效。
1.1.1 AD73360同步串行通信接口SPORT概述
AD73360同步串行通信接口SPORT包含6条信号线,分别是串行数据输出端SDO、数据输出帧同步端SDOFS、串行数据输入端SDI、数据输入帧同步端SDIFS、同步时钟SCLK和串行接口使能端SE。该接口有三种工作方式:编程、数据以及混合方式。AD73360以“时分多址”的模式输入和输出数据。其特点是每一个通道的输出数据占用固定的时间片,即使该通道被关闭,该时间片也不会被其他通道占用,此时数据输出端SDO处于三态。图3显示了六个通道全部打开时数据输出端SDO和数据输出帧同步端SDOFS的时间波形,图4则显示了通道1、3、5打开时的输出时间波形。AD73360每次上电或复位以后,自动进入编程状态,每一个采样周期输出一个数据输出帧同步信号SDOFS,如图5所示。这样DSP可利用此帧同步脉冲给AD73360写入控制字。图6为各管脚的信号时序图[2]。
1.1.2 AD73360控制寄存器
AD73360有8个控制寄存器,每个都是8位,如表1所示。其中前两个控制寄存器CRA和CRB用来配置同步串行接口SPORT,可以设置数据率、主时钟速率以及级联芯片数目等参数。如果多个AD73360级联,则其CRA和CRB的设置必须完全一致。其余6个寄存器用来控制各个通道的A/D转换器。
向这些控制寄存器写入数据时,要遵循一定的格式。控制字的格式如表2所示。其中各个部分的含义如下:
(1):该位为高时,表明这是一个有效控制字。
(2):读写控制。
(3) 芯片地址:芯片级联时用于确定接收数据的芯片。当该地址为零时,表明当前芯片接收该控制字;若不为零,则芯片将该数减一,并将控制字从SPORT发送给下一个芯片。
(4) 寄存器地址:选择要写入数据的控制寄存器,见表1。
(5) 寄存器数据:写入或读出的数据。
由于单片AD73360具有六个同时采样的模拟量输入通道,所以特别适合于三相制电力运行参数测控(三个相电压和三个相电流同时采样)以及电机控制等应用系统。
1.2 数字信号处理器TMS320F2812的多通道缓冲串口McBSP
TMS320F2812是32位的定点DSP,主频可达150MHz(时钟周期6.67ns),是目前用于测控系统、电机控制等领域中的热点产品。芯片资源非常丰富,可简化外围电路设计。串行通信模块包括两个SCI口和一个SPI口,CAN总线和多通道缓冲串口McBSP,能满足多种串行通信模式的需要。本文利用TMS320F2812的多通道缓冲串口McBSP实现与AD73360的连接和数据传输。
TMS320F2812的McBSP有6条信号线。其中3条用于发送数据,分别是发送数据端MDXA、发送帧同步端MFSXA和发送时钟MCLKXA。另外3条用于接收数据,分别是接收数据端MDRA、接收帧同步端MFSRA和接收时钟MCLKRA[3]。
McBSP能与多种串行接口器件直接通信,工作方式灵活,但同时也造成端口配置复杂。McBSP具有38个寄存器,由此可见其复杂程度。这些寄存器可分成四大类:数据寄存器、控制寄存器、多通道寄存器和FIFO寄存器。要使McBSP正确工作,必须配置好这些寄存器,这就需要对McBSP的工作机制有深刻的理解。表3列出了部分寄存器,大部分属于数据寄存器和控制寄存器,是在非FIFO和非多通道方式下需要用到的寄存器[4]。值得注意的是,PCR和MFFINT虽然分别属于多通道和FIFO寄存器,但是在非FIFO和非多通道方式下依然要用到。
这些寄存器中每一位的详细含义请参阅TMS320F2812技术手册,其中一些重要参数将在下面提到。
2 系统实现
在图2所示的系统框图中,A/D转换器AD73360将模拟输入量转换成数字量,TMS320F2812负责从AD73360读取数字量并进行相应的计算,计算结果则通过RS232C和RS485标准串行口传输给上位机。在这个系统中,难点在于AD73360与TMS320F2812的接口设计。
2.1 AD73360与TMS320F2812的通信接口设计
AD73360具有一个同步串行通信接口SPORT与上位机通信,该接口可以很好地兼容现在大多数的DSP。本文利用TMS320F2812的多通道缓冲串口McBSP与AD73360进行通信。
2.1.1 AD73360与TMS320F2812之间的连接方式
根据对AD73360的同步串行通信接口SPORT的分析可知,在首次上电和复位后AD73360便进入编程状态,自动产生输出帧同步信号,该信号不受外部器件的影响。所以在AD73360与TMS320F2812的通信接口中,AD73360应为主设备,TMS320F2812应为从设备。主从关系确定以后,才可以确定信号线的连接方式和程序设计。
两者之间的信号线连接方式如图7所示,AD73360的输出帧同步端SDOFS不仅连接到DSP的两个帧同步端MFSRA和MFSXA,而且还连接到自己的输入帧同步端SDIFS。其同步时钟SCLK端也同时连到DSP的两个时钟端MCLKXA和MCLKRA。另外,DSP的两个通用I/O端口GPIOA0、GPIOA1则连接到AD73360的复位端和串行接口使能端SE,实现对AD73360的控制。
2.1.2 DSP的McBSP配置
McBSP的配置应以AD73360的时序图为依据。分析图3~图6,可以得出McBSP的一些重要参数如下:
(1) 发送帧同步MFSXA为高电平有效,FSXP=0。
(2) 接收帧同步MFSRA为高电平有效,FSRP=0。
(3) 帧同步均为输入,FSRM= 0,FSXM=0。
(4) 发送时钟MCLKXA和接收时钟MCLKRA均为输入,CLKXM=0,CLKRM=0。
(5) 数据输出在发送时钟的上升沿,CLKXP=0。
(6) 数据接收采样在接收时钟的下降沿,CLKRP=0。
(7) 单相帧,RPHASE=0,XPHASE=0。
(8) 每帧一个字,RFRLEN1=00b,XFRLEN1=00b。
(9) 每个字16位,RWDLEN1=010b,XWDLEN1=010b。
(10)数据延迟为1位,RDATDLY=01b,XDATDLY=01b。
确定了以上各个参数的值,才可以在程序中正确配置McBSP的各个寄存器。
2.1.3 DSP程序设计
DSP程序采用C语言编写,在TI公司的集成开发环境CCS2.0下调试通过。程序流程如图8所示,主要包括DSP端口(GPIO和McBSP)初始化、AD73360初始化(复位和输出控制命令)、等待接收A/D转换数据等步骤。
初始化GPIO主要是配置GPIOA0和GPIOA1,分别控制AD73360的复位端和串行接口使能端SE。初始化McBSP是按照上文所述的重要参数值配置各个寄存器,使McBSP的工作方式与AD73360吻合。各寄存器的具体值如下:
RCR2 = 0x0041;
RCR1 = 0x0040;
XCR2 = 0x0041;
XCR1 = 0x0040;
SRGR2 = 0x2000;
SRGR1 = 0x0101;
PCR = 0x0000;
MFFINT = 0x0004;
初始化AD73360的流程如图9所示。TMS320F2812与AD73360接口系统设计中最关键的部分是AD73360的初始化。由于AD73360是主设备,TMS320F2812是从设备,所以帧同步信号由AD73360发出。TMS320F2812需要在每个帧同步信号到来之前准备好要发送的数据,要做到这一点,首先,在AD73360开始工作前将要发送的数据写入发送寄存器DXR1中;然后,将AD_SE置为高电平,AD73360的SPORT开始工作。当帧同步信号到来后,DSP将数据发送给AD,同时接收数据。随后及时将下一个数据写入发送寄存器DXR1中。这样在每一个帧同步信号到来时,DXR1中都有正确的数据以供发送。
AD7336初始化完成后,就自动采样并输出采样数据。为了提高DSP程序的效率,应采用中断方式接收测量数据。TMS320F2812的中断系统通过外设中断扩展PIE(Peripheral Interrupt Expansion)模块来控制。PIE可以支持96个独立中断,并分成12组,每组8个中断。通过切换开关,可以使每组中断对应一个CPU内核中断线,12组共需12根CPU内核中断线(INT1~INT12)。McBSP的接收中断MRINT位于第6组的第5位,中断初始化程序不再赘述。
2.2 两片AD73360级联与TMS320F2812的接口设计
如果想要增加模拟通道的数目,可以将多片AD73360级联起来。如图10所示,两片AD73360级联起来可以获得12个模拟通道。AD73360片1的SDI接DSP的MDXA,SDO、SDOFS分别接片2的SDI、SDIFS。AD73360片2的SDO接DSP的MDRA、SDOFS则接片1的SDIFS和DSP的MFSXA、MFSRA。数据的流程可以归纳为:(1)流出DSP方向:DSP→AD73360片1→AD73360片2;(2)流入DSP方向:AD73360片1→AD73360片2→DSP。
采样数据的输出时序如图11所示,两片AD73360交替输出。
DSP程序的设计中,初始化GPIO和McBSP部分均与上文单片AD的情况比较类似,但是初始化AD73360部分不尽相同,如图12所示。
两片AD级联时程序设计的关键在于控制字的输出必须交替进行,即先输出AD73360片2的一个控制字,再输出片1的一个控制字,顺序不可颠倒,直到所有的控制字发送完。根据DSP输出数据的流程,其发出的控制字先到片1。片1接到片2的控制字时,验证该控制字的芯片地址位不为0,将该地址位减1,在下一个帧同步信号到来时发给片2,而此时片1也接收到了自己的控制字。CRB和CRA控制AD芯片的工作模式和启动,必须配置成一样,并且同时到达各自的AD芯片。若不同时到达,则片1和片2不能同时启动工作,接口设计失败。
为了保证设计成功,充分利用DSP的McBSP具有双缓冲的特点,提前将两个控制字写入DXR中,保证在任意时刻McBSP都至少有一个等待发送的数据,避免帧同步信号到来时McBSP没有有效数据发送。这样两片AD可在相同时刻接到相应的控制字,并同时启动。这在多片AD73360级联工作时至关重要。
由于提前写入了两个控制字,所以最后要单独读一次数据,使最后一个控制字发送出去。至于程序其余部分与单片AD73360接口设计类似,不再叙述。两片AD73360级联与DSP的接口设计可以扩展成多片AD73360级联的设计。
系统设计中需要注意的问题是模拟信号与数字信号的隔离。本文采用两项措施实现隔离:(1)DSP和AD73360分别用不同的隔离电源供电;(2)DSP与AD73360之间的接口线路用光耦隔离。这样可以取得比较好的隔离效果。
利用AD73360和TMS320F2812设计了多通道数据采集系统,实现了模拟通道的同步采样,解决了多通道采样的时差问题,满足了系统的要求。本文设计的数据采集系统应用于三相制电力运行参数测控系统,实验证明系统是完全可行的。
参考文献
[1] 马明键. 数据采集与处理技术(第2版)[M]. 西安:西安交通大学出版社,2005.
[2] Six-Input Channel Analog Front End AD73360. America: Analog Devices, 2000.
[3] TMS320F2812 digital signal processors data manual. America: Texas Instruments, 2004.
[4] TMS320F28x multichannel buffered serial port(McBSP)peripheral reference guide. America: Texas Instruments, 2002.