基于DSP与LabVIEW的汽车行驶姿态参数采集系统设计
在本数据采集系统设计中,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的汽车行驶姿态参数采集系统工作稳定,操作简单,采集速度快,数据精度高,为实现汽车安全系统的动力学研究提供了可靠的数据。
- FPGA技术在汽车电子中的应用(11-26)
- 汽车发动机管理模块测试系统的设计(02-19)
- 基于LabVIEW的汽车助力转向控制系统设计(09-11)
- 电动汽车分布式电机驱动测试系统研究与应用(07-02)
- 基于虚拟仪器技术的汽车尾气检测系统(01-10)
- 基于LabVIEW和PXI的汽车数字仪表测控系统(02-17)
