《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于DSP与LabVIEW的汽车行驶姿态参数采集系统设计
基于DSP与LabVIEW的汽车行驶姿态参数采集系统设计
来源:电子技术应用2011年第1期
熊 玉1, 韩峻峰2, 潘盛辉3, 陈乐珠1
(1. 桂林电子科技大学, 广西 桂林541004;2. 广西机电职业技术学院, 广西 南宁5300
摘要: 设计了一种基于TMS320F2812与LabVIEW的汽车行驶姿态参数采集系统。利用ADIS16355AMLZ三轴陀螺仪灵敏度高、集成度高、测量精度高等特点,系统采用DSP对汽车行驶姿态进行实时数据采集,并通过SPI接口实现两者之间的通信,上位机采用LabVIEW作为开发平台,通过串口实现DSP与上位机的通信。
中图分类号: TP274
文献标识码: B
文章编号: 0258-7998(2011)01-0080-04
Design of data acquisition system based on DSP and LabVIEW for car driving posture
Xiong Yu1, Han Junfeng2, Pan Shenghui3, Chen Lezhu1
1. Guilin University of Electronic Technology, Guilin 541004, China; 2. Guangxi Technological College of Machinery and Electricity, Nanning 530007, China; 3. Guangxi University of Technology, Liuzhou 545006, China
Abstract: A data acquisition system based on TMS320F2812 and LabVIEW for car driving posture is designed. According to the features of high sensitivity, high integration, measurement accuracy of ADIS16355AMLZ three axis gyroscope,the system uses DSP for real-time data acquisition of car driving posture which communicates with each other via SPI interface,the PC using LabVIEW as a development platform which communicates with DSP via serial interface.
Key words : TMS320F2812;ADIS16355AMLZ;LabVIEW;data acquisition


    随着现代科学技术的发展,人们更加注重汽车驾驶的安全问题,不断将各种先进技术应用到汽车上,以提高汽车的安全性,如防抱死制动系统,ESP(电子稳定性控制)系统。汽车行驶姿态参数采集作为汽车安全系统动力学研究的基础,对其有重要影响。本设计通过ADIS16355传感器及DSP TMS320F2812构成数据采集系统,采集汽车在行驶过程中纵向加速度、侧向加速度以及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.

此内容为AET网站原创,未经授权禁止转载。