摘要:介绍了以TMS320F2812" title="TMS320F2812">TMS320F2812和ADS8364" title="ADS8364">ADS8364为核心的智能节点" title="智能节点">智能节点设计,该节点不仅可以进行数据采集,还可以实现阚值报警、数字滤波、FFT变换等功能。并详细介绍了本设计的工作原理、硬件设计以及软件设计。
关键词:DSP;CAN总线" title="CAN总线">CAN总线:智能节点
0 引言
在实际工程应用中,经常需要对各种设备进行状态监测和故障诊断,首先要对各传感器的信号进行采集,为了减轻上位机的运算负荷,设计了一种基于DSP的智能节点,主要用来实现信号采集和FFT变换等功能。
1 硬件设计
智能节点的硬件主要包括DSP处理器、模数转换器、扩展的静态存储器、电平转换芯片、CAN接口驱动、光电耦合输入和传感器调理及电源电路等。
DSP处理器选用TI公司的32位定点高速DSP芯片TMS320F2812。TMS320F28X系列是当今世界上最先进的32位定点DSP芯片。它不但运行速度高,处理功能强大,并且具有丰富的片内外围设备,便于接口和模块化设计。它既具有数字信号处理能力,又具有强大的事件管理能力和嵌入式控制功能,特别适用于有大批量数据处理的测控场合,如工业自动化控制、智能化仪器仪表及电机伺服控制系统等。采用8级指令流水线,单周期32×32位MAC功能,最高速度每秒中可执行1.50亿条指令(150MIPS),保证了控制和信号处理的快速性和实时性。另外MS320F2812片上还集成了丰富的外部资源,包括16路12位ADC、16路PWM输出、3个32位通用定时器、128k的16位FLASH存储器、18kRAM存储器,外围中断扩展模块(PIE)可支持45个外围中断,并具有McBSP、SPI、SCI和扩展的CAN总线等接口。TMS320F2812还支持最大1M的外部存储器扩展。TMS32 0F2812支持C/C++编程语言,其c语言优化器的C编译效率可达90%,还有虚拟浮点数学函数库提供支持,可以大大缩短数学运算与控制程序的开发周期。
模数转换器选用TI公司的ADS8364,该芯片是一款6路模拟输入、16位并行输出的模数转换器。6路模拟输入分为三组(A,B和C),每个输入端都有一个保持信号来实现所有通道的同时采样与转换功能,非常适合于多路(多种)采集系统的需要。ADS8364提供了一个灵活的高速并行接口,可以运行在直接寻址、循环采样、FIFO等三种模式,每个通道的输出数据都可直接作为一个16 bit的字,可以直接与数字信号处理器TMS320F2812相连。
由于数据采集和FFT变换需要大量数据空间,而TMS320F2812片上只有18 k的RAM可供使用,而且分布于5个不同的区域,不能满足使用要求,因此在外部又扩展了一片64 k的16位无等待静态存储器IS61LV6416。
本智能节点电路设计的关键部分是TMS320F2812芯片的最小系统设计和ADS8364的接口设计。
1.1 TMS320F2812的最小系统设计
(1)电源和复位部分:本设计采用外部5 V直流电压供电。通过DC/DC器件产生3.3 V的内核电压VDD和1.8 V的I/O电压VDDIO电压。电源芯片TPS767D318为双电源输出,一路为3.3 V、一路为1.8 V。每路电源的最大输出电流为1 A。芯片还提供两个宽度为200 ms的低电平复位脉冲。本设计的复位信号分两种:上电复位、手动复位。上电复位由芯片TPS767D318产生,手动复位由电阻电容组成的电路产生。
(2)时钟部分:为DSP芯片提供时钟一般有两种方法。一种是采用晶体,一种是采用外部有源时钟芯片。本设计采用前者。它利用了DSP芯片内部所提供的晶振电路,在DSP芯片的x1和x2之间连接一晶体可启动内部振荡器。
(3)仿真部分:这一部分将作为程序的调试和烧录所用。2812芯片提供了5个标准的JTAG信号(TRST、TCK、TMS、TDI、TDO)和两个仿真引脚(EMU0、EMU1)。
1.2 ADS8364的接口设计
ADS8364采用+5V模拟电源(AVDD)和数字电源(DVDD),而其内部的缓冲器采用与TMS320F2812相同的+3.3 V电压。缓冲器电压(BVDD)允许直接连接到3 V或5 V电压系统。TMS320F2812的I/O电压为+3.3 V,因此,若使用该元件,ADS8364的BVDD必须设置成3.3 V。
在这个设计中,ADS8364采用的是4 MHz时钟。每个通道的吞吐率最大可达200 ksps。将ADS的地址线A[2:0]接到TMS320F2812的地址线。当A0接到数字地,A2和A1接到VCC上可迫使ADS8364进入周期模式。在这个模式中,转换器可自动对6个通道进行采样,并可将数据按从A0到C1的顺序传送到输出端。
将ADS8364的BYTE引脚接到VCC上,可以使能字节模式。在这个模式中,要从ADC中正确地读取数据,需要对每个通道进行两次连续的读操作。第一次读取的是转换数据的高位字节,第二次读取的是低位字节。假如通道信息要作为数据输出的一部分,那么,应将ADS8364的ADD引脚也接到VCC。读取数据时,需要对ADS8364的每个通道进行三次读操作。第一次读取通道和数据信息,后两次分别读取高位和低位数据。
1.3 ADC的初始化操作
触发ADS8364的复位引脚RST可以确保读指针指向第一个数据位置。作为TMS320F2812初始化的一部分,由TMS320F2812的通用输入输出口GPIOFO提供给ADS8364的引脚RST。当系统时钟稳定后,被触发为低电平,从而确保了从ADC输出的数据对应于通道A0、A1、B0、B1、C0、C1的排列。
对于每一个转换通道,EOC均是低电平信号。ADS8364可为TMS320F2812提供三个脉冲。每个脉冲信号表明一个转换的结束。当ADC的这三个引脚同时置低时,三个通道被认为有效并同时进行转换。另外,EOC引脚也可被连接到TMS320F2812的一个中断引脚,以触发一个读周期。
ADS8364的片选CS是一个有源低电平输入信号。当CS为高时,并行输出引脚处于高阻态。当CS为低时,并行数据线反映了输出缓冲器的当前状态。为了正确地从ADS8364的并行数据总线上读取数据,ADS8364必须被片选CS选中后才能进行读操作。
ADS8364的读(RD)信号端也是有源低电平信号。当CS为低时,在读信号(RD)的下降沿,ADS8364中寄存器的内容将被更新。这意味着在每个读序列之前,RD信号必须被触发,这样才能更新输出缓冲器。通过TMS320F2812的中断子程序将ADS8364的RD引脚置低可以保存输入的数据,之后可再将RD引脚置高。
2 软件设计
在实际工作中,智能节点将采集到的数据或频谱值发送到上位机进行存贮、处理。上位机通过CAN接口与智能节点通信。
智能节点的程序是在TI提供的开发工具Code Composer Studio上用C语言开发。在开发过程中,使用了TI公司提供的C281×C/C++头文件库。该头文件库利用结构体和联合体的形式对F2812的各个寄存器进行了定义,用户可以通过C语言直接对处理器内部的寄存器进行访问。
由于MS320F2812没有独立的程序存储空间和数据存储空间,是统一编址的,因此用户首先要根据需要通过配置链接命令文件(.cmd文件)对存储空问进行划分。
为了实现数据的FFT变换,开发过程中还使用了TI公司提供的FFT函数库。FFT函数库提供了32位复数FFT变换(CFFT32)和实数FFT变换(RFFT32)两种模块,可以进行128、256、512和1024点的复数和实数FFT变换。需要注意的是变换中所使用的数据是Qx格式,因此对变换后的结果需要进行格式转换才能得到真实数值。
智能节点的主程序流程为:加电后,程序先初始化,进入主循环后就不断进行数据采集和阈值判断,如有收到上位机命令(CAN接口接收中断)就转入中断处理程序,根据上位机的不同命令选择不同的处理方式。如采集到的数据超出阈值,优先向上位机发送报警信息。
3 结束语
本文设计的智能节点已在多个监测和故障诊断系统中得到应用,实践证明该模块工作可靠,能满足工程中分布式数据采集与监测需要。