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


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

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

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

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

 在本數(shù)據(jù)采集系統(tǒng)設計中,TMS320F2812的時鐘頻率為100 MHz,由于ADIS16355的SPI時鐘頻率范圍為10 kHz~2 MHz, 因此設定TMS320F2812的SPI波特率為1 MB/s;用定時器T0啟動ADIS16355進行數(shù)據(jù)采集,中斷周期設置為100 ms;串口通信設置的波特率為115 200B/s,有效位8 bit,停止位1 bit,無奇偶校驗。下面是SPI初始化、串口初始化和定時程序。
   void InitSpi(void){
   SpiaRegs.SPICCR.all = 0x4F;  
            //進入初始狀態(tài),數(shù)據(jù)在上升沿輸出,自測禁止
   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;
            //禁止接收錯誤中斷,禁止休眠,使能發(fā)送接收
   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是使用圖形化編程語言,功能強大而又靈活的儀器應用和分析軟件系統(tǒng),主要用于儀器控制、數(shù)據(jù)采集、數(shù)據(jù)分析等領域,適應多種操作系統(tǒng)。LabVIEW中提供各種總線的驅(qū)動程序,可以用來編寫各種總線形式的儀器驅(qū)動程序。VISA庫即I/O接口軟件庫及其規(guī)范的總稱,是LabVIEW的儀器驅(qū)動庫之一。VISA是在LabVIEW開發(fā)平臺上控制VXI、GPIB、RS232、PXI、PCI以及其他種類儀器的單接口程序庫,是對其他總線驅(qū)動函數(shù)進行的一個統(tǒng)一封裝的高層API[5],本身不具備編程能力,可以根據(jù)使用的儀器類型,調(diào)用適當?shù)牡讓域?qū)動程序來控制儀器。串行通信使用的VISA庫中的API函數(shù)如圖5所示,路徑為:Functions>>Instrument I/O>>VISA Advanced>>Interface Specific>>Serial。

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

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

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

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