DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1911|回复: 0
打印 上一主题 下一主题

[待整理] 基于DSP与LabVIEW的汽车行驶姿态参数采集系统设计

[复制链接]
跳转到指定楼层
楼主
发表于 2015-4-27 20:33:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
随着现代科学技术的发展,人们更加注重汽车驾驶的安全问题,不断将各种先进技术应用到汽车上,以提高汽车的安全性,如防抱死制动系统,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的汽车行驶姿态参数采集系统工作稳定,操作简单,采集速度快,数据精度高,为实现汽车安全系统的动力学研究提供了可靠的数据。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-12-27 01:00 , 耗时 0.090761 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表