《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于DSP與LabVIEW的汽車行駛姿態(tài)參數(shù)采集系統(tǒng)設(shè)計(jì)
基于DSP與LabVIEW的汽車行駛姿態(tài)參數(shù)采集系統(tǒng)設(shè)計(jì)
來源:電子技術(shù)應(yīng)用2011年第1期
熊 玉1,, 韓峻峰2,, 潘盛輝3,, 陳樂珠1
(1. 桂林電子科技大學(xué),, 廣西 桂林541004;2. 廣西機(jī)電職業(yè)技術(shù)學(xué)院,, 廣西 南寧5300
摘要: 設(shè)計(jì)了一種基于TMS320F2812與LabVIEW的汽車行駛姿態(tài)參數(shù)采集系統(tǒng),。利用ADIS16355AMLZ三軸陀螺儀靈敏度高、集成度高,、測(cè)量精度高等特點(diǎn),,系統(tǒng)采用DSP對(duì)汽車行駛姿態(tài)進(jìn)行實(shí)時(shí)數(shù)據(jù)采集,并通過SPI接口實(shí)現(xiàn)兩者之間的通信,,上位機(jī)采用LabVIEW作為開發(fā)平臺(tái),,通過串口實(shí)現(xiàn)DSP與上位機(jī)的通信。
中圖分類號(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ā)展,人們更加注重汽車駕駛的安全問題,,不斷將各種先進(jìn)技術(shù)應(yīng)用到汽車上,,以提高汽車的安全性,,如防抱死制動(dòng)系統(tǒng),ESP(電子穩(wěn)定性控制)系統(tǒng),。汽車行駛姿態(tài)參數(shù)采集作為汽車安全系統(tǒng)動(dòng)力學(xué)研究的基礎(chǔ),,對(duì)其有重要影響。本設(shè)計(jì)通過ADIS16355傳感器及DSP TMS320F2812構(gòu)成數(shù)據(jù)采集系統(tǒng),采集汽車在行駛過程中縱向加速度,、側(cè)向加速度以及Z軸角速度,,并通過串口傳送到上位機(jī),以LabVIEW作為軟件平臺(tái)對(duì)采集數(shù)據(jù)進(jìn)行處理及分析,。
    ADIS16355是ADI公司生產(chǎn)的一款數(shù)字輸出,、6自由度微慣性測(cè)量系統(tǒng)。其通過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公司開發(fā)的LabVIEW虛擬儀器平臺(tái),,其采用強(qiáng)大的圖形化編程(G語言)語言,面向測(cè)試工程師而非專業(yè)程序員,,編程非常簡(jiǎn)便,,研發(fā)周期短,人機(jī)交互界面直觀友好[1],,具有各種常用的總線節(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ā)的高性能,、多功能,、高性價(jià)比的DSP芯片。該芯片最高可在主頻150 MHz下工作,帶有18 K×16 bit 零等待周期片上ARAM和128 K×16 bit片上Flash(存取時(shí)間36 ns),,片內(nèi)集成了大量的外設(shè),,包括雙通道串行通信接口SCIA/SCIB、串行外設(shè)接口SPI,、看門狗定時(shí)器Watchdog,、通用輸入/輸出引腳GPIO等[2]。TMS320F2812作為本數(shù)據(jù)采集系統(tǒng)的控制核心,,直接控制ADIS16355的工作狀態(tài)及數(shù)據(jù)采集,并將ADIS16355數(shù)據(jù)通過串口傳入PC機(jī)進(jìn)行處理,。
 TMS320F2812與傳感器通過SPI接口進(jìn)行通信,其電路如圖2所示,。SPI是一個(gè)可編程的高速同步串行輸入/輸出接口,,提供了一個(gè)高速同步串行總線,可用于CPU與外圍設(shè)備或其他控制器之間的通信,。該接口提供了四個(gè)外部引腳:串行時(shí)鐘引腳(SPISCLK),、主設(shè)備輸入/從機(jī)輸出引腳(SPISOMI)、從輸入/主輸出引腳(SPISIMO)及從發(fā)送使能引腳(SPISTE)[2],,可根據(jù)需要使用其中的2~4條信號(hào)線。SPI以主從方式工作,, SPISCLK串行時(shí)鐘由主設(shè)備控制,,從設(shè)備不能控制該信號(hào)。在主設(shè)備的時(shí)鐘脈沖下,,數(shù)據(jù)從高位到低位依次傳輸,,速率可達(dá)到幾兆至幾十兆位每秒。

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

   從圖3可以看出,ADIS16355的一次SPI傳輸包括16 bit數(shù)據(jù),,第1位為SPI傳輸?shù)淖x寫狀態(tài)標(biāo)示符,,0為讀,1為寫,,第2位沒有特殊意義,,緊接著的6 bit是目標(biāo)寄存器的地址,最后8 bit在寫操作時(shí)為將要寫入寄存器的命令,若是讀操作則為無效位,。完成一次完整的讀操作需要2次16 bit SPI通信,,本次DIN讀取的寄存器地址需要在下一個(gè)DOUT信號(hào)線上得到寄存器內(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],。通過使用16 bit波特率選擇寄存器,可以設(shè)置多達(dá)65 000種通信速度,。
 本模塊采用RS232串行接口標(biāo)準(zhǔn),在電氣特性上,,采用負(fù)邏輯RS232電平,而TMS320F2812的信號(hào)輸入輸出為TTL電平,,因此本設(shè)計(jì)通過符合RS232標(biāo)準(zhǔn)的驅(qū)動(dòng)芯片MAX3232來實(shí)現(xiàn)TTL與RS232之間的電平轉(zhuǎn)換。
2 系統(tǒng)軟件設(shè)計(jì)
2.1  DSP軟件設(shè)計(jì)
 TMS320F2812以CCS(Code Composer Studio)作為集成開發(fā)環(huán)境,,既可以用匯編進(jìn)行開發(fā),,也支持C語言,本系統(tǒng)采用的是C語言,。系統(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,無奇偶校驗(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è)停止位,,無奇偶校驗(yàn),自測(cè)試禁
                                       止,空閑線模式,,字符長(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;                         //開中斷
    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是使用圖形化編程語言,功能強(qiáng)大而又靈活的儀器應(yīng)用和分析軟件系統(tǒng),,主要用于儀器控制,、數(shù)據(jù)采集、數(shù)據(jù)分析等領(lǐng)域,,適應(yīng)多種操作系統(tǒng),。LabVIEW中提供各種總線的驅(qū)動(dòng)程序,可以用來編寫各種總線形式的儀器驅(qū)動(dòng)程序,。VISA庫即I/O接口軟件庫及其規(guī)范的總稱,,是LabVIEW的儀器驅(qū)動(dòng)庫之一。VISA是在LabVIEW開發(fā)平臺(tái)上控制VXI,、GPIB,、RS232、PXI,、PCI以及其他種類儀器的單接口程序庫,,是對(duì)其他總線驅(qū)動(dòng)函數(shù)進(jìn)行的一個(gè)統(tǒng)一封裝的高層API[5],本身不具備編程能力,,可以根據(jù)使用的儀器類型,,調(diào)用適當(dāng)?shù)牡讓域?qū)動(dòng)程序來控制儀器。串行通信使用的VISA庫中的API函數(shù)如圖5所示,路徑為:Functions>>Instrument I/O>>VISA Advanced>>Interface Specific>>Serial,。

   (1)VISA配置串口
 該節(jié)點(diǎn)主要用于串口初始化,,主要端口說明如下:  
 VISA resource name:VISA資源名稱,本文是指串口號(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校驗(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)行分析和處理,。主要端口說明如下:
 VISA resource name:VISA資源名稱,。
 byte count:指定讀取數(shù)據(jù)的字節(jié)數(shù)。
   (3)VISA關(guān)閉
   該節(jié)點(diǎn)用于將打開的VISA資源關(guān)閉,。
2.2.2  串口調(diào)試軟件
 串口調(diào)試設(shè)計(jì)主要包括串口初始化,、讀寫數(shù)據(jù)、數(shù)據(jù)顯示并保存等部分,,程序設(shè)計(jì)流程圖如圖6示,。

 通過VISA庫可以方便地對(duì)串口進(jìn)行與下位機(jī)相同的配置,同時(shí)結(jié)合其他庫中的函數(shù)可以實(shí)現(xiàn)串口發(fā)送,、接收,、顯示以及存儲(chǔ)部分的編寫。
    在數(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ù),,因此需要通過字符串至字節(jié)數(shù)組轉(zhuǎn)換節(jié)點(diǎn)將其轉(zhuǎn)換為字節(jié)數(shù)組,,再連接起來。VISA讀取節(jié)點(diǎn)接收到的數(shù)據(jù)在處理過程中,,需要一些數(shù)據(jù)格式類型的轉(zhuǎn)換,,如:字符數(shù)組轉(zhuǎn)換為十六進(jìn)制函數(shù)。數(shù)值經(jīng)過處理后,,再以熟悉的十進(jìn)制形式進(jìn)行波形顯示和Excel格式保存,。LabVIEW程序設(shè)計(jì)前面板如圖7所示。

3 實(shí)驗(yàn)結(jié)果
    本數(shù)據(jù)采集系統(tǒng)對(duì)汽車行駛時(shí)的縱向加速度,、側(cè)向加速度以及Z軸角速度各采集了5組數(shù)據(jù),每組1 000個(gè)點(diǎn),。上位機(jī)通過LabVIEW接收數(shù)據(jù)并進(jìn)行一定的處理,然后顯示,,保存在Excel文檔中,。圖7所示的波形為其中一組縱向加速度的波形,加速度參數(shù)的單位為g,,角速度參數(shù)的單位為(°)/s,。根據(jù)加速度公式:a=(vt-v0)/t;vt-v0=2 as,;可以計(jì)算出汽車行駛時(shí)的縱向加速度,,與本設(shè)計(jì)采集的數(shù)據(jù)在傳感器誤差范圍內(nèi)一致。通過對(duì)縱向加速度的分析可知,此數(shù)據(jù)采集系統(tǒng)能達(dá)到設(shè)計(jì)要求,。
    該數(shù)據(jù)采集系統(tǒng)通過以AIDS16355傳感器和TMS320F2812作為數(shù)據(jù)采集模塊,,并在PC機(jī)上采用LabVIEW虛擬儀器平臺(tái),,方便地實(shí)現(xiàn)了對(duì)串口的讀寫、對(duì)數(shù)據(jù)的顯示與存儲(chǔ),。實(shí)驗(yàn)證明,,基于DSP與LabVIEW的汽車行駛姿態(tài)參數(shù)采集系統(tǒng)工作穩(wěn)定,操作簡(jiǎn)單,,采集速度快,,數(shù)據(jù)精度高,為實(shí)現(xiàn)汽車安全系統(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] 戴鵬飛,,王勝開,王格芳,等.測(cè)試工程與LabVIEW應(yīng)用 [M].北京:電子工業(yè)出版社,,2006.

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