《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于DSP與LabVIEW的汽車(chē)行駛姿態(tài)參數(shù)采集系統(tǒng)設(shè)計(jì)
基于DSP與LabVIEW的汽車(chē)行駛姿態(tài)參數(shù)采集系統(tǒng)設(shè)計(jì)
來(lái)源:電子技術(shù)應(yīng)用2011年第1期
熊 玉1, 韓峻峰2, 潘盛輝3, 陳樂(lè)珠1
(1. 桂林電子科技大學(xué), 廣西 桂林541004;2. 廣西機(jī)電職業(yè)技術(shù)學(xué)院, 廣西 南寧5300
摘要: 設(shè)計(jì)了一種基于TMS320F2812與LabVIEW的汽車(chē)行駛姿態(tài)參數(shù)采集系統(tǒng)。利用ADIS16355AMLZ三軸陀螺儀靈敏度高、集成度高、測(cè)量精度高等特點(diǎn),系統(tǒng)采用DSP對(duì)汽車(chē)行駛姿態(tài)進(jìn)行實(shí)時(shí)數(shù)據(jù)采集,并通過(guò)SPI接口實(shí)現(xiàn)兩者之間的通信,上位機(jī)采用LabVIEW作為開(kāi)發(fā)平臺(tái),通過(guò)串口實(shí)現(xiàn)DSP與上位機(jī)的通信。
中圖分類(lèi)號(hào): TP274
文獻(xiàn)標(biāo)識(shí)碼: B
文章編號(hào): 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


    隨著現(xiàn)代科學(xué)技術(shù)的發(fā)展,人們更加注重汽車(chē)駕駛的安全問(wèn)題,不斷將各種先進(jìn)技術(shù)應(yīng)用到汽車(chē)上,以提高汽車(chē)的安全性,如防抱死制動(dòng)系統(tǒng),ESP(電子穩(wěn)定性控制)系統(tǒng)。汽車(chē)行駛姿態(tài)參數(shù)采集作為汽車(chē)安全系統(tǒng)動(dòng)力學(xué)研究的基礎(chǔ),對(duì)其有重要影響。本設(shè)計(jì)通過(guò)ADIS16355傳感器及DSP TMS320F2812構(gòu)成數(shù)據(jù)采集系統(tǒng),采集汽車(chē)在行駛過(guò)程中縱向加速度、側(cè)向加速度以及Z軸角速度,并通過(guò)串口傳送到上位機(jī),以LabVIEW作為軟件平臺(tái)對(duì)采集數(shù)據(jù)進(jìn)行處理及分析。
    ADIS16355是ADI公司生產(chǎn)的一款數(shù)字輸出、6自由度微慣性測(cè)量系統(tǒng)。其通過(guò)SPI(Serial Peripheral Interface)串行接口輸出X、Y、Z三軸方向的角速度及加速度,核心傳感器測(cè)量部件采用iMEMS?誖運(yùn)動(dòng)信號(hào)處理技術(shù),測(cè)量精度高。DSP作為運(yùn)算、控制處理器以其高速、高精度的性能廣泛應(yīng)用于數(shù)據(jù)采集系統(tǒng)領(lǐng)域。本系統(tǒng)采用的TMS320F2812芯片的CPU是32位的定點(diǎn)內(nèi)核,包含SPI串行外設(shè),很簡(jiǎn)便地建立了與ADIS16355的硬件電路。另外上位機(jī)采用NI公司開(kāi)發(fā)的LabVIEW虛擬儀器平臺(tái),其采用強(qiáng)大的圖形化編程(G語(yǔ)言)語(yǔ)言,面向測(cè)試工程師而非專(zhuān)業(yè)程序員,編程非常簡(jiǎn)便,研發(fā)周期短,人機(jī)交互界面直觀(guān)友好[1],具有各種常用的總線(xiàn)節(jié)點(diǎn)和豐富的軟件包及驅(qū)動(dòng)程序,能簡(jiǎn)捷地實(shí)現(xiàn)DSP與PC機(jī)之間的串口通信;同時(shí)LabVIEW還具有強(qiáng)大的數(shù)據(jù)處理及分析功能,能對(duì)采集的數(shù)據(jù)進(jìn)行處理和分析。
1 系統(tǒng)硬件設(shè)計(jì)
 系統(tǒng)硬件框圖如圖1所示,硬件電路的主要芯片包括TMS320F2812、ADIS16355、MAX2323。

1.1 TMS320F2812與ADIS16355硬件接口模塊
 TMS320F2812是TI公司研發(fā)的高性能、多功能、高性?xún)r(jià)比的DSP芯片。該芯片最高可在主頻150 MHz下工作,帶有18 K×16 bit 零等待周期片上ARAM和128 K×16 bit片上Flash(存取時(shí)間36 ns),片內(nèi)集成了大量的外設(shè),包括雙通道串行通信接口SCIA/SCIB、串行外設(shè)接口SPI、看門(mén)狗定時(shí)器Watchdog、通用輸入/輸出引腳GPIO等[2]。TMS320F2812作為本數(shù)據(jù)采集系統(tǒng)的控制核心,直接控制ADIS16355的工作狀態(tài)及數(shù)據(jù)采集,并將ADIS16355數(shù)據(jù)通過(guò)串口傳入PC機(jī)進(jìn)行處理。
 TMS320F2812與傳感器通過(guò)SPI接口進(jìn)行通信,其電路如圖2所示。SPI是一個(gè)可編程的高速同步串行輸入/輸出接口,提供了一個(gè)高速同步串行總線(xiàn),可用于CPU與外圍設(shè)備或其他控制器之間的通信。該接口提供了四個(gè)外部引腳:串行時(shí)鐘引腳(SPISCLK)、主設(shè)備輸入/從機(jī)輸出引腳(SPISOMI)、從輸入/主輸出引腳(SPISIMO)及從發(fā)送使能引腳(SPISTE)[2],可根據(jù)需要使用其中的2~4條信號(hào)線(xiàn)。SPI以主從方式工作, SPISCLK串行時(shí)鐘由主設(shè)備控制,從設(shè)備不能控制該信號(hào)。在主設(shè)備的時(shí)鐘脈沖下,數(shù)據(jù)從高位到低位依次傳輸,速率可達(dá)到幾兆至幾十兆位每秒。

 本系統(tǒng)中TMS320F2812作為主設(shè)備,提供SPI串行時(shí)鐘,負(fù)責(zé)向ADIS16355寫(xiě)入控制命令,ADIS16355作為從設(shè)備向TMS320F2812傳送采集到的數(shù)字信號(hào)。
   ADIS16355通過(guò)配置相關(guān)寄存器可以實(shí)現(xiàn)其可編程的特性。ADIS16355共有32個(gè)16 bit寄存器,每個(gè)寄存器有高低兩地址,其中任何一個(gè)都可以用來(lái)訪(fǎng)問(wèn)該寄存器,編寫(xiě)地址范圍是0x00H~0x3FH[3]。外部CPU對(duì)ADIS16355的操作控制就是對(duì)其相關(guān)寄存器的讀寫(xiě),圖3為ADIS16355的讀寄存器操作SPI時(shí)序圖。

   從圖3可以看出,ADIS16355的一次SPI傳輸包括16 bit數(shù)據(jù),第1位為SPI傳輸?shù)淖x寫(xiě)狀態(tài)標(biāo)示符,0為讀,1為寫(xiě),第2位沒(méi)有特殊意義,緊接著的6 bit是目標(biāo)寄存器的地址,最后8 bit在寫(xiě)操作時(shí)為將要寫(xiě)入寄存器的命令,若是讀操作則為無(wú)效位。完成一次完整的讀操作需要2次16 bit SPI通信,本次DIN讀取的寄存器地址需要在下一個(gè)DOUT信號(hào)線(xiàn)上得到寄存器內(nèi)容,并輸入至TMS320F2812。
1.2 串口通信模塊
 TMS320F2812內(nèi)部含有兩個(gè)SCI異步串口,該SCI模塊支持CPU與其他異步外設(shè)之間使用標(biāo)準(zhǔn)非歸零碼(NRZ)進(jìn)行數(shù)字通信。其接收器和發(fā)送器均為雙緩沖模式,支持16級(jí)接收和發(fā)送FIFO,發(fā)送和接收具有自己獨(dú)立的使能和中斷,可以工作在半雙工或全雙工通信模式[4]。通過(guò)使用16 bit波特率選擇寄存器,可以設(shè)置多達(dá)65 000種通信速度。
 本模塊采用RS232串行接口標(biāo)準(zhǔn),在電氣特性上,采用負(fù)邏輯RS232電平,而TMS320F2812的信號(hào)輸入輸出為T(mén)TL電平,因此本設(shè)計(jì)通過(guò)符合RS232標(biāo)準(zhǔn)的驅(qū)動(dòng)芯片MAX3232來(lái)實(shí)現(xiàn)TTL與RS232之間的電平轉(zhuǎn)換。
2 系統(tǒng)軟件設(shè)計(jì)
2.1  DSP軟件設(shè)計(jì)
 TMS320F2812以CCS(Code Composer Studio)作為集成開(kāi)發(fā)環(huán)境,既可以用匯編進(jìn)行開(kāi)發(fā),也支持C語(yǔ)言,本系統(tǒng)采用的是C語(yǔ)言。系統(tǒng)軟件設(shè)計(jì)由主程序和若干子程序構(gòu)成。子程序包括SPI接口子程序、中斷定時(shí)子程序、串口子程序等,數(shù)據(jù)采集程序流程圖如圖4所示。

 在本數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)中,TMS320F2812的時(shí)鐘頻率為100 MHz,由于ADIS16355的SPI時(shí)鐘頻率范圍為10 kHz~2 MHz, 因此設(shè)定TMS320F2812的SPI波特率為1 MB/s;用定時(shí)器T0啟動(dòng)ADIS16355進(jìn)行數(shù)據(jù)采集,中斷周期設(shè)置為100 ms;串口通信設(shè)置的波特率為115 200B/s,有效位8 bit,停止位1 bit,無(wú)奇偶校驗(yàn)。下面是SPI初始化、串口初始化和定時(shí)程序。
   void InitSpi(void){
   SpiaRegs.SPICCR.all = 0x4F;  
            //進(jìn)入初始狀態(tài),數(shù)據(jù)在上升沿輸出,自測(cè)禁止
   SpiaRegs.SPICTL.all = 0x0E; //主動(dòng)模式,禁止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個(gè)停止位,無(wú)奇偶校驗(yàn),自測(cè)試禁
                                       止,空閑線(xiàn)模式,字符長(zhǎng)度8 bit
   SciaRegs.SCICTL1.all =0x0003; 
   SciaRegs.SCICTL2.all =0x0003;
   SciaRegs.SCICTL2.bit.TXINTENA =1; 
   SciaRegs.SCICTL2.bit.RXBKINTENA =1;
            //禁止接收錯(cuò)誤中斷,禁止休眠,使能發(fā)送接收
   SciaRegs.SCIHBAUD = 0x0000;
   SciaRegs.SCILBAUD = 0x001a;     //波特率設(shè)置115 200
   SciaRegs.SCICTL1.all =0x0023;}
   EALLOW;    
   PieVectTable.TINT0 = &ISRTimer0;
   EDIS; 
   ConfigCpuTimer(&CpuTimer0,100,100000);
                                      //設(shè)置中斷定時(shí)100 ms
   StartCpuTimer0();
   IER |= M_INT1;                    
   PieCtrl.PIEIER1.bit.INTx7=1;                         //開(kāi)中斷
    Interrupt void ISRTimer0 (void) {
   CpuTimer0.InterruptCount++;
   read_ADI_register(0x0004);                //讀取X軸加速度
   PieCtrl.PIEACK.all=PIEACK_GROUP1; }
2.2 基于虛擬儀器LabVIEW的設(shè)計(jì)
2.2.1 VISA概述

 LabVIEW是使用圖形化編程語(yǔ)言,功能強(qiáng)大而又靈活的儀器應(yīng)用和分析軟件系統(tǒng),主要用于儀器控制、數(shù)據(jù)采集、數(shù)據(jù)分析等領(lǐng)域,適應(yīng)多種操作系統(tǒng)。LabVIEW中提供各種總線(xiàn)的驅(qū)動(dòng)程序,可以用來(lái)編寫(xiě)各種總線(xiàn)形式的儀器驅(qū)動(dòng)程序。VISA庫(kù)即I/O接口軟件庫(kù)及其規(guī)范的總稱(chēng),是LabVIEW的儀器驅(qū)動(dòng)庫(kù)之一。VISA是在LabVIEW開(kāi)發(fā)平臺(tái)上控制VXI、GPIB、RS232、PXI、PCI以及其他種類(lèi)儀器的單接口程序庫(kù),是對(duì)其他總線(xiàn)驅(qū)動(dòng)函數(shù)進(jìn)行的一個(gè)統(tǒng)一封裝的高層API[5],本身不具備編程能力,可以根據(jù)使用的儀器類(lèi)型,調(diào)用適當(dāng)?shù)牡讓域?qū)動(dòng)程序來(lái)控制儀器。串行通信使用的VISA庫(kù)中的API函數(shù)如圖5所示,路徑為:Functions>>Instrument I/O>>VISA Advanced>>Interface Specific>>Serial。

   (1)VISA配置串口
 該節(jié)點(diǎn)主要用于串口初始化,主要端口說(shuō)明如下:  
 VISA resource name:VISA資源名稱(chēng),本文是指串口號(hào)。
 baud rate:波特率;默認(rèn)值是9 600 b/s。
 data bits:一幀信息中的位數(shù),在LabVIEW中允許5~8 bit數(shù)據(jù),默認(rèn)值為8 bit。
 stop bits:一幀信息中的停止位的位數(shù),可為1位,1位半,或2位。
 parity:奇偶校驗(yàn)設(shè)置??蔀闊o(wú)校驗(yàn)、奇校驗(yàn)或偶校驗(yàn)。
   (2)VISA讀取
   該節(jié)點(diǎn)為串口通信子VI,是本系統(tǒng)使用的主要節(jié)點(diǎn),從串口中讀出指定數(shù)量的字節(jié),并將數(shù)據(jù)返回至讀取緩沖區(qū),然后利用LabVIEW強(qiáng)大的數(shù)據(jù)處理功能對(duì)數(shù)據(jù)進(jìn)行分析和處理。主要端口說(shuō)明如下:
 VISA resource name:VISA資源名稱(chēng)。
 byte count:指定讀取數(shù)據(jù)的字節(jié)數(shù)。
   (3)VISA關(guān)閉
   該節(jié)點(diǎn)用于將打開(kāi)的VISA資源關(guān)閉。
2.2.2  串口調(diào)試軟件
 串口調(diào)試設(shè)計(jì)主要包括串口初始化、讀寫(xiě)數(shù)據(jù)、數(shù)據(jù)顯示并保存等部分,程序設(shè)計(jì)流程圖如圖6示。

 通過(guò)VISA庫(kù)可以方便地對(duì)串口進(jìn)行與下位機(jī)相同的配置,同時(shí)結(jié)合其他庫(kù)中的函數(shù)可以實(shí)現(xiàn)串口發(fā)送、接收、顯示以及存儲(chǔ)部分的編寫(xiě)。
    在數(shù)據(jù)發(fā)送和接收模塊中,由于LabVIEW的串行通信中數(shù)據(jù)都是以字符串(Normal)的形式組成的,所以如果串口發(fā)送或接收的數(shù)據(jù)是十六進(jìn)制數(shù)值,需在發(fā)送或接收之前進(jìn)行相應(yīng)的轉(zhuǎn)換。LabVIEW提供了十六進(jìn)制數(shù)值與ASCII字符串之間的轉(zhuǎn)換模塊。在DSP中一次連續(xù)發(fā)送兩個(gè)8 bit十六進(jìn)制數(shù),構(gòu)成一個(gè)16 bit傳感器采集數(shù)據(jù),因此需要通過(guò)字符串至字節(jié)數(shù)組轉(zhuǎn)換節(jié)點(diǎn)將其轉(zhuǎn)換為字節(jié)數(shù)組,再連接起來(lái)。VISA讀取節(jié)點(diǎn)接收到的數(shù)據(jù)在處理過(guò)程中,需要一些數(shù)據(jù)格式類(lèi)型的轉(zhuǎn)換,如:字符數(shù)組轉(zhuǎn)換為十六進(jìn)制函數(shù)。數(shù)值經(jīng)過(guò)處理后,再以熟悉的十進(jìn)制形式進(jìn)行波形顯示和Excel格式保存。LabVIEW程序設(shè)計(jì)前面板如圖7所示。

3 實(shí)驗(yàn)結(jié)果
    本數(shù)據(jù)采集系統(tǒng)對(duì)汽車(chē)行駛時(shí)的縱向加速度、側(cè)向加速度以及Z軸角速度各采集了5組數(shù)據(jù),每組1 000個(gè)點(diǎn)。上位機(jī)通過(guò)LabVIEW接收數(shù)據(jù)并進(jìn)行一定的處理,然后顯示,保存在Excel文檔中。圖7所示的波形為其中一組縱向加速度的波形,加速度參數(shù)的單位為g,角速度參數(shù)的單位為(°)/s。根據(jù)加速度公式:a=(vt-v0)/t;vt-v0=2 as;可以計(jì)算出汽車(chē)行駛時(shí)的縱向加速度,與本設(shè)計(jì)采集的數(shù)據(jù)在傳感器誤差范圍內(nèi)一致。通過(guò)對(duì)縱向加速度的分析可知,此數(shù)據(jù)采集系統(tǒng)能達(dá)到設(shè)計(jì)要求。
    該數(shù)據(jù)采集系統(tǒng)通過(guò)以AIDS16355傳感器和TMS320F2812作為數(shù)據(jù)采集模塊,并在PC機(jī)上采用LabVIEW虛擬儀器平臺(tái),方便地實(shí)現(xiàn)了對(duì)串口的讀寫(xiě)、對(duì)數(shù)據(jù)的顯示與存儲(chǔ)。實(shí)驗(yàn)證明,基于DSP與LabVIEW的汽車(chē)行駛姿態(tài)參數(shù)采集系統(tǒng)工作穩(wěn)定,操作簡(jiǎn)單,采集速度快,數(shù)據(jù)精度高,為實(shí)現(xiàn)汽車(chē)安全系統(tǒng)的動(dòng)力學(xué)研究提供了可靠的數(shù)據(jù)。
參考文獻(xiàn)
[1] 楊忠仁,饒程,鄒建,等.基于LabVIEW數(shù)據(jù)采集系統(tǒng)[J]. 重慶大學(xué)學(xué)報(bào),2004,27(2):32-35.
[2] 三恒星科技.TMS320F2812DSP原理與應(yīng)用[M].北京:電子工業(yè)出版社,2009.
[3] 崔璐璐.基于MEMS器件的姿態(tài)測(cè)量系統(tǒng)研究與實(shí)現(xiàn) [D].大連:大連理工大學(xué),2009.
[4] 韓豐田.TMS320F2812xDSP原理及應(yīng)用技術(shù)[M].北京:清華大學(xué)出版社,2009.
[5] 戴鵬飛,王勝開(kāi),王格芳,等.測(cè)試工程與LabVIEW應(yīng)用 [M].北京:電子工業(yè)出版社,2006.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。