文獻(xiàn)標(biāo)識(shí)碼: B
文章編號(hào): 0258-7998(2011)01-0080-04
隨著現(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ī)交互界面直觀友好[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ā)的高性能,、多功能,、高性?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è)高速同步串行總線,,可用于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寫(xiě)入控制命令,ADIS16355作為從設(shè)備向TMS320F2812傳送采集到的數(shù)字信號(hào),。
ADIS16355通過(guò)配置相關(guān)寄存器可以實(shí)現(xiàn)其可編程的特性,。ADIS16355共有32個(gè)16 bit寄存器,每個(gè)寄存器有高低兩地址,其中任何一個(gè)都可以用來(lái)訪問(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)線上得到寄存器內(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è)試禁
止,空閑線模式,,字符長(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中提供各種總線的驅(qū)動(dòng)程序,,可以用來(lái)編寫(xiě)各種總線形式的儀器驅(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ì)其他總線驅(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.