文献标识码:B
文章编号: 0258-7998(2011)01-0080-04
随着现代科学技术的发展,人们更加注重汽车驾驶的安全问题,不断将各种先进技术应用到汽车上,以提高汽车的安全性,如防抱死制动系统,ESP(电子稳定性控制)系统。汽车行驶姿态参数采集作为汽车安全系统动力学研究的基础,对其有重要影响。本设计通过ADIS16355传感器及DSPTMS320F2812构成数据采集系统,采集汽车在行驶过程中纵向加速度、侧向加速度以及Z轴角速度,并通过串口传送到上位机,以LabVIEW作为软件平台对采集数据进行处理及分析。
ADIS16355是ADI公司生产的一款数字输出、6自由度微惯性测量系统。其通过SPI(Serial Peripheral Interface)串行接口输出X、Y、Z三轴方向的角速度及加速度,核心传感器测量部件采用iMEMS?誖运动信号处理技术,测量精度高。DSP作为运算、控制处理器以其高速、高精度的性能广泛应用于数据采集系统领域。本系统采用的TMS320F2812芯片的CPU是32位的定点内核,包含SPI串行外设,很简便地建立了与ADIS16355的硬件电路。另外上位机采用NI公司开发的LabVIEW虚拟仪器平台,其采用强大的图形化编程(G语言)语言,面向测试工程师而非专业程序员,编程非常简便,研发周期短,人机交互界面直观友好[1],具有各种常用的总线节点和丰富的软件包及驱动程序,能简捷地实现DSP与PC机之间的串口通信;同时LabVIEW还具有强大的数据处理及分析功能,能对采集的数据进行处理和分析。
1 系统硬件设计
系统硬件框图如图1所示,硬件电路的主要芯片包括TMS320F2812、ADIS16355、MAX2323。
1.1 TMS320F2812与ADIS16355硬件接口模块
TMS320F2812是TI公司研发的高性能、多功能、高性价比的DSP芯片。该芯片最高可在主频150 MHz下工作,带有18 K×16 bit 零等待周期片上ARAM和128 K×16 bit片上Flash(存取时间36 ns),片内集成了大量的外设,包括双通道串行通信接口SCIA/SCIB、串行外设接口SPI、看门狗定时器Watchdog、通用输入/输出引脚GPIO等[2]。TMS320F2812作为本数据采集系统的控制核心,直接控制ADIS16355的工作状态及数据采集,并将ADIS16355数据通过串口传入PC机进行处理。
TMS320F2812与传感器通过SPI接口进行通信,其电路如图2所示。SPI是一个可编程的高速同步串行输入/输出接口,提供了一个高速同步串行总线,可用于CPU与外围设备或其他控制器之间的通信。该接口提供了四个外部引脚:串行时钟引脚(SPISCLK)、主设备输入/从机输出引脚(SPISOMI)、从输入/主输出引脚(SPISIMO)及从发送使能引脚(SPISTE)[2],可根据需要使用其中的2~4条信号线。SPI以主从方式工作, SPISCLK串行时钟由主设备控制,从设备不能控制该信号。在主设备的时钟脉冲下,数据从高位到低位依次传输,速率可达到几兆至几十兆位每秒。
本系统中TMS320F2812作为主设备,提供SPI串行时钟,负责向ADIS16355写入控制命令,ADIS16355作为从设备向TMS320F2812传送采集到的数字信号。
ADIS16355通过配置相关寄存器可以实现其可编程的特性。ADIS16355共有32个16 bit寄存器,每个寄存器有高低两地址,其中任何一个都可以用来访问该寄存器,编写地址范围是0x00H~0x3FH[3]。外部CPU对ADIS16355的操作控制就是对其相关寄存器的读写,图3为ADIS16355的读寄存器操作SPI时序图。
从图3可以看出,ADIS16355的一次SPI传输包括16 bit数据,第1位为SPI传输的读写状态标示符,0为读,1为写,第2位没有特殊意义,紧接着的6 bit是目标寄存器的地址,最后8 bit在写操作时为将要写入寄存器的命令,若是读操作则为无效位。完成一次完整的读操作需要2次16 bit SPI通信,本次DIN读取的寄存器地址需要在下一个DOUT信号线上得到寄存器内容,并输入至TMS320F2812。
1.2 串口通信模块
TMS320F2812内部含有两个SCI异步串口,该SCI模块支持CPU与其他异步外设之间使用标准非归零码(NRZ)进行数字通信。其接收器和发送器均为双缓冲模式,支持16级接收和发送FIFO,发送和接收具有自己独立的使能和中断,可以工作在半双工或全双工通信模式[4]。通过使用16 bit波特率选择寄存器,可以设置多达65 000种通信速度。
本模块采用RS232串行接口标准,在电气特性上,采用负逻辑RS232电平,而TMS320F2812的信号输入输出为TTL电平,因此本设计通过符合RS232标准的驱动芯片MAX3232来实现TTL与RS232之间的电平转换。
2 系统软件设计
2.1 DSP软件设计
TMS320F2812以CCS(Code Composer Studio)作为集成开发环境,既可以用汇编进行开发,也支持C语言,本系统采用的是C语言。系统软件设计由主程序和若干子程序构成。子程序包括SPI接口子程序、中断定时子程序、串口子程序等,数据采集程序流程图如图4所示。
在本数据采集系统设计中,TMS320F2812的时钟频率为100 MHz,由于ADIS16355的SPI时钟频率范围为10 kHz~2 MHz, 因此设定TMS320F2812的SPI波特率为1 MB/s;用定时器T0启动ADIS16355进行数据采集,中断周期设置为100 ms;串口通信设置的波特率为115 200B/s,有效位8 bit,停止位1 bit,无奇偶校验。下面是SPI初始化、串口初始化和定时程序。
void InitSpi(void){
SpiaRegs.SPICCR.all = 0x4F;
//进入初始状态,数据在上升沿输出,自测禁止
SpiaRegs.SPICTL.all = 0x0E; //主动模式,禁止SPI中断
Spia.Regs.SPIBRR=0x18; //波特率1 MHz
Spia.Regs.SPICCR.all=SpiaRegs.SPICCR.all|0x0080;
SpiaRegs.SPIPRI.bit.FREE = 1 ;}
void InitSci(){
SciaRegs.SCICCR.all =0x0007;
//通信控制寄存器,1个停止位,无奇偶校验,自测试禁
止,空闲线模式,字符长度8 bit
SciaRegs.SCICTL1.all =0x0003;
SciaRegs.SCICTL2.all =0x0003;
SciaRegs.SCICTL2.bit.TXINTENA =1;
SciaRegs.SCICTL2.bit.RXBKINTENA =1;
//禁止接收错误中断,禁止休眠,使能发送接收
SciaRegs.SCIHBAUD = 0x0000;
SciaRegs.SCILBAUD = 0x001a; //波特率设置115 200
SciaRegs.SCICTL1.all =0x0023;}
EALLOW;
PieVectTable.TINT0 = &ISRTimer0;
EDIS;
ConfigCpuTimer(&CpuTimer0,100,100000);
//设置中断定时100 ms
StartCpuTimer0();
IER |= M_INT1;
PieCtrl.PIEIER1.bit.INTx7=1; //开中断
Interrupt void ISRTimer0 (void) {
CpuTimer0.InterruptCount++;
read_ADI_register(0x0004); //读取X轴加速度
PieCtrl.PIEACK.all=PIEACK_GROUP1; }
2.2 基于虚拟仪器LabVIEW的设计
2.2.1 VISA概述
LabVIEW是使用图形化编程语言,功能强大而又灵活的仪器应用和分析软件系统,主要用于仪器控制、数据采集、数据分析等领域,适应多种操作系统。LabVIEW中提供各种总线的驱动程序,可以用来编写各种总线形式的仪器驱动程序。VISA库即I/O接口软件库及其规范的总称,是LabVIEW的仪器驱动库之一。VISA是在LabVIEW开发平台上控制VXI、GPIB、RS232、PXI、PCI以及其他种类仪器的单接口程序库,是对其他总线驱动函数进行的一个统一封装的高层API[5],本身不具备编程能力,可以根据使用的仪器类型,调用适当的底层驱动程序来控制仪器。串行通信使用的VISA库中的API函数如图5所示,路径为:Functions>>Instrument I/O>>VISA Advanced>>Interface Specific>>Serial。
(1)VISA配置串口
该节点主要用于串口初始化,主要端口说明如下:
VISA resource name:VISA资源名称,本文是指串口号。
baud rate:波特率;默认值是9 600 b/s。
data bits:一帧信息中的位数,在LabVIEW中允许5~8 bit数据,默认值为8 bit。
stop bits:一帧信息中的停止位的位数,可为1位,1位半,或2位。
parity:奇偶校验设置。可为无校验、奇校验或偶校验。
(2)VISA读取
该节点为串口通信子VI,是本系统使用的主要节点,从串口中读出指定数量的字节,并将数据返回至读取缓冲区,然后利用LabVIEW强大的数据处理功能对数据进行分析和处理。主要端口说明如下:
VISA resource name:VISA资源名称。
byte count:指定读取数据的字节数。
(3)VISA关闭
该节点用于将打开的VISA资源关闭。
2.2.2 串口调试软件
串口调试设计主要包括串口初始化、读写数据、数据显示并保存等部分,程序设计流程图如图6示。
通过VISA库可以方便地对串口进行与下位机相同的配置,同时结合其他库中的函数可以实现串口发送、接收、显示以及存储部分的编写。
在数据发送和接收模块中,由于LabVIEW的串行通信中数据都是以字符串(Normal)的形式组成的,所以如果串口发送或接收的数据是十六进制数值,需在发送或接收之前进行相应的转换。LabVIEW提供了十六进制数值与ASCII字符串之间的转换模块。在DSP中一次连续发送两个8 bit十六进制数,构成一个16 bit传感器采集数据,因此需要通过字符串至字节数组转换节点将其转换为字节数组,再连接起来。VISA读取节点接收到的数据在处理过程中,需要一些数据格式类型的转换,如:字符数组转换为十六进制函数。数值经过处理后,再以熟悉的十进制形式进行波形显示和Excel格式保存。LabVIEW程序设计前面板如图7所示。
3 实验结果
本数据采集系统对汽车行驶时的纵向加速度、侧向加速度以及Z轴角速度各采集了5组数据,每组1 000个点。上位机通过LabVIEW接收数据并进行一定的处理,然后显示,保存在Excel文档中。图7所示的波形为其中一组纵向加速度的波形,加速度参数的单位为g,角速度参数的单位为(°)/s。根据加速度公式:a=(vt-v0)/t;vt-v0=2 as;可以计算出汽车行驶时的纵向加速度,与本设计采集的数据在传感器误差范围内一致。通过对纵向加速度的分析可知,此数据采集系统能达到设计要求。
该数据采集系统通过以AIDS16355传感器和TMS320F2812作为数据采集模块,并在PC机上采用LabVIEW虚拟仪器平台,方便地实现了对串口的读写、对数据的显示与存储。实验证明,基于DSP与LabVIEW的汽车行驶姿态参数采集系统工作稳定,操作简单,采集速度快,数据精度高,为实现汽车安全系统的动力学研究提供了可靠的数据。
参考文献
[1] 杨忠仁,饶程,邹建,等.基于LabVIEW数据采集系统[J]. 重庆大学学报,2004,27(2):32-35.
[2] 三恒星科技.TMS320F2812DSP原理与应用[M].北京:电子工业出版社,2009.
[3] 崔璐璐.基于MEMS器件的姿态测量系统研究与实现 [D].大连:大连理工大学,2009.
[4] 韩丰田.TMS320F2812xDSP原理及应用技术[M].北京:清华大学出版社,2009.
[5] 戴鹏飞,王胜开,王格芳,等.测试工程与LabVIEW应用 [M].北京:电子工业出版社,2006.