新聞中心

        EEPW首頁 > 汽車電子 > 設計應用 > 基于DSP與LabVIEW的汽車行駛姿態參數采集系統設計

        基于DSP與LabVIEW的汽車行駛姿態參數采集系統設計

        作者: 時間:2017-06-07 來源:網絡 收藏

        隨著現代科學技術的發展,人們更加注重汽車駕駛的安全問題,不斷將各種先進技術應用到汽車上,以提高汽車的安全性,如防抱死制動系統,ESP(電子穩定性控制)系統。汽車參數采集作為汽車安全系統動力學研究的基礎,對其有重要影響。本設計通過ADIS16355傳感器及DSP TMS320F2812構成數據采集系統,采集汽車在行駛過程中縱向加速度、側向加速度以及Z軸角速度,并通過串口傳送到上位機,以作為軟件平臺對采集數據進行處理及分析。

        ADIS16355是ADI公司生產的一款數字輸出、6自由度微慣性測量系統。其通過SPI(Serial Peripheral Interface)串行接口輸出X、Y、Z三軸方向的角速度及加速度,核心傳感器測量部件采用iMEMS?誖運動信號處理技術,測量精度高。DSP作為運算、控制處理器以其高速、高精度的性能廣泛應用于數據采集系統領域。本系統采用的TMS320F2812芯片的CPU是32位的定點內核,包含SPI串行外設,很簡便地建立了與ADIS16355的硬件電路。另外上位機采用NI公司開發的虛擬儀器平臺,其采用強大的圖形化編程(G語言)語言,面向測試工程師而非專業程序員,編程非常簡便,研發周期短,人機交互界面直觀友好[1],具有各種常用的總線節點和豐富的軟件包及驅動程序,能簡捷地實現DSP與PC機之間的串口通信;同時還具有強大的數據處理及分析功能,能對采集的數據進行處理和分析。

        1 系統硬件設計

        系統硬件框圖如圖1所示,硬件電路的主要芯片包括TMS320F2812、ADIS16355、MAX2323。


        1.1 TMS320F2812與ADIS16355硬件接口模塊

        本文引用地址:http://www.104case.com/article/201706/350713.htm

         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的汽車參數采集系統工作穩定,操作簡單,采集速度快,數據精度高,為實現汽車安全系統的動力學研究提供了可靠的數據。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 遵义县| 班戈县| 富阳市| 张家界市| 临颍县| 隆德县| 东兰县| 新乐市| 如皋市| 高要市| 钟山县| 青海省| 垣曲县| 永嘉县| 黑河市| 济南市| 公安县| 文成县| 东宁县| 嘉义市| 安平县| 巴楚县| 巧家县| 威海市| 突泉县| 马边| 富顺县| 松溪县| 中卫市| 英德市| 康平县| 安多县| 芜湖市| 宁明县| 呼图壁县| 漳州市| 项城市| 米泉市| 海门市| 晋江市| 鄱阳县|