李淼林,戴海燕,徐杰龍,歐陽(yáng)奕濤,陳曉楷
(華南理工大學(xué)廣州學(xué)院,廣東 廣州 510800)
基于STM32的FSAE賽車(chē)底盤(pán)數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
李淼林,戴海燕,徐杰龍,歐陽(yáng)奕濤,陳曉楷
(華南理工大學(xué)廣州學(xué)院,廣東 廣州510800)
本文基于STM32設(shè)計(jì)了一套高精度、大容量、多通道、廉價(jià)的數(shù)據(jù)采集系統(tǒng),包括硬件設(shè)計(jì)和軟件設(shè)計(jì),使其應(yīng)用于校內(nèi)FSAE賽車(chē)的底盤(pán)調(diào)校,實(shí)現(xiàn)準(zhǔn)確的數(shù)據(jù)分析與調(diào)試。該系統(tǒng)選用STM32F103ZET6作為微處理器,以SD卡作為存儲(chǔ)器,實(shí)現(xiàn)了多通道信號(hào)的同步、連續(xù)采集和存儲(chǔ),具有性能穩(wěn)定、實(shí)時(shí)性強(qiáng)、擴(kuò)展靈活等特點(diǎn)。
數(shù)據(jù)采集;STM32;FAT32文件系統(tǒng);數(shù)據(jù)存儲(chǔ)
2010年至今,我國(guó)FSAE賽事已經(jīng)連續(xù)舉辦了五屆,各高校賽車(chē)設(shè)計(jì)已逐漸趨于成熟和同化。發(fā)動(dòng)機(jī)標(biāo)定技術(shù)的進(jìn)步已使得各高校FSAE賽車(chē)的動(dòng)力穩(wěn)定而強(qiáng)勁,因此比賽成績(jī)主要取決于賽車(chē)在動(dòng)態(tài)項(xiàng)目中的卓越表現(xiàn)——科學(xué)而高效的底盤(pán)調(diào)校。目前,國(guó)內(nèi)賽車(chē)的底盤(pán)調(diào)校大多憑賽車(chē)手的主觀感覺(jué),而缺乏客觀性和準(zhǔn)確性,因此本文將針對(duì)華南理工大學(xué)廣州學(xué)院汽車(chē)工程學(xué)院FSAE賽車(chē)底盤(pán),設(shè)計(jì)開(kāi)發(fā)一套專(zhuān)用的經(jīng)濟(jì)、高效、準(zhǔn)確的數(shù)據(jù)采集系統(tǒng),以便進(jìn)行準(zhǔn)確的數(shù)據(jù)分析與調(diào)試,顯著提高賽車(chē)的動(dòng)態(tài)性能。
1.1系統(tǒng)主要功能
本數(shù)據(jù)采集系統(tǒng)主要實(shí)現(xiàn)數(shù)據(jù)采集、數(shù)據(jù)傳輸和數(shù)據(jù)存儲(chǔ)三種功能[1],具體如下:
1)多通道的模擬信號(hào)采集:采集并記錄方向盤(pán)轉(zhuǎn)向角和懸架減振器跳動(dòng)位移。轉(zhuǎn)向角是通過(guò)在轉(zhuǎn)向盤(pán)下端的轉(zhuǎn)向軸處加裝角度傳感器來(lái)采集,懸架減振器跳動(dòng)位移,則通過(guò)在減振器處加裝直線位移傳感器來(lái)采集;
2)多通道的脈沖信號(hào)采集:通過(guò)四個(gè)輪速傳感器,采集并記錄每個(gè)車(chē)輪的轉(zhuǎn)速,并存儲(chǔ)在大容量SD內(nèi)存卡中。
系統(tǒng)方案總體設(shè)計(jì)框圖,如圖1所示。
圖1 系統(tǒng)方案總體設(shè)計(jì)圖
1.2系統(tǒng)工作原理
當(dāng)系統(tǒng)外設(shè)傳感器(角度傳感器、直線位移傳感器和輪速傳感器)采集到原始數(shù)據(jù)信號(hào)后,通過(guò)信號(hào)調(diào)理電路對(duì)信號(hào)進(jìn)行初步調(diào)理,再經(jīng)過(guò)多通道模擬信號(hào)處理,進(jìn)入A/D轉(zhuǎn)換器進(jìn)行模數(shù)轉(zhuǎn)換,并實(shí)現(xiàn)多通道數(shù)據(jù)的同步采集,將轉(zhuǎn)換后的數(shù)字信號(hào),通過(guò)數(shù)據(jù)采集主控制器將數(shù)據(jù)傳輸并存儲(chǔ)到SD卡中。同時(shí),采集到的脈沖信號(hào)通過(guò)內(nèi)部電路處理后進(jìn)入計(jì)數(shù)器,每間隔一段時(shí)間獲取相應(yīng)的脈沖數(shù),并將其也存儲(chǔ)到SD卡中。最終從SD卡中導(dǎo)出相應(yīng)數(shù)據(jù),用于分析輪速與轉(zhuǎn)向角的關(guān)系、懸架減振器跳動(dòng)位移與轉(zhuǎn)向角的關(guān)系等。
硬件設(shè)計(jì)采用模塊化設(shè)計(jì)方法,主要包括四個(gè)模塊:微處理器電路、A/D接口電路、外圍存儲(chǔ)器電路和系統(tǒng)外圍電路。
2.1硬件選型
由于本系統(tǒng)需要大量的數(shù)據(jù)傳輸和多通道脈沖信號(hào)的同步采集,故選用32位微處理器STM32F103ZET6,其運(yùn)算速度快且功能全面,功能和配置可查閱文獻(xiàn)[2]。
2.2A/D采集芯片的選型
考慮芯片成本、采集通道數(shù)和硬件接口設(shè)計(jì)等方面的需求,本系統(tǒng)選用Analog Device的AD7656作為A/D采集芯片。它內(nèi)部包含6個(gè)A/D轉(zhuǎn)換器,最大轉(zhuǎn)換速率為25Kbps,轉(zhuǎn)換時(shí)間為3us,支持6個(gè)通道同步采集,可用來(lái)處理高達(dá)4.5MHz的信號(hào)[3]。AD7656接口電路,如圖2所示。
圖2 AD7656接口電路
2.3外圍存儲(chǔ)器及電路設(shè)計(jì)
本系統(tǒng)選用微型SD內(nèi)存卡作為存儲(chǔ)器[2],并使用高速傳輸?shù)腟D模式。SD卡電路原理,如圖3所示。
圖3 SD卡電路原理
2.4系統(tǒng)外圍電路設(shè)計(jì)
系統(tǒng)外圍電路包括:電源電路、232串口通信電路、JTAG程序下載電路、時(shí)鐘電路和復(fù)位電路[4],與一般硬件電路類(lèi)似,本文不再詳述。
3.1系統(tǒng)軟件總體流程設(shè)計(jì)
本系統(tǒng)軟件的總體流程設(shè)計(jì),如圖4所示。當(dāng)系統(tǒng)上電后,先進(jìn)行初始化,包括控制器各外設(shè)和驅(qū)動(dòng)程序,然后檢測(cè)SD卡內(nèi)存容量,并提示是否清空數(shù)據(jù);同時(shí)檢測(cè)并接收外部傳感器的輸入信號(hào),清空SD卡的舊數(shù)據(jù),待接收到外部觸發(fā)信號(hào)后,重新建立新的數(shù)據(jù)文件,實(shí)現(xiàn)數(shù)據(jù)采集和數(shù)據(jù)存儲(chǔ)[5]。
3.2數(shù)據(jù)采集流程
A/D芯片采集一定時(shí)間的流程,如圖5所示。當(dāng)檢測(cè)到外部觸發(fā)信號(hào)時(shí),打開(kāi)定時(shí)器中斷。定時(shí)中斷函數(shù)主要處理6個(gè)通道同步采集一個(gè)點(diǎn)的工作。每隔一定時(shí)間(若采樣率為100Kbps,則定時(shí)中斷時(shí)間設(shè)為10us),中斷觸發(fā)。當(dāng)COMSTX變?yōu)楦唠娖胶?,A/D轉(zhuǎn)換器開(kāi)始采樣轉(zhuǎn)換,經(jīng)過(guò)3us轉(zhuǎn)換時(shí)間,BUSY引腳輸出為0(低電平),即轉(zhuǎn)換結(jié)束。當(dāng)接收到反饋信號(hào)——讀信號(hào)(RD)變低時(shí),就從16位總線上讀取1個(gè)通道數(shù)據(jù)。當(dāng)6個(gè)通道數(shù)據(jù)全部讀取完畢,即可退出中斷,等待下一次中斷到來(lái)。當(dāng)達(dá)到采集時(shí)間,關(guān)閉定時(shí)器,停止A/D轉(zhuǎn)換[1]。
3.3數(shù)據(jù)存儲(chǔ)
為了避免數(shù)據(jù)丟失,本系統(tǒng)需要不間斷地進(jìn)行信號(hào)采集和數(shù)據(jù)實(shí)時(shí)存儲(chǔ),因此數(shù)據(jù)存儲(chǔ)過(guò)程采用雙緩沖區(qū)模式,同時(shí)使用DMA以加速數(shù)據(jù)傳輸。其工作原理是:首先在內(nèi)存中開(kāi)辟兩個(gè)容量相同的緩沖區(qū)(8K),在數(shù)據(jù)采集過(guò)程中,先將數(shù)據(jù)寫(xiě)入第一緩沖區(qū),寫(xiě)滿后再寫(xiě)入第二緩沖區(qū),并啟動(dòng)DMA加速數(shù)據(jù)傳輸,直接將第一緩沖區(qū)的數(shù)據(jù)傳輸?shù)絊D接口寄存器,寫(xiě)入SD卡,保證數(shù)據(jù)采集和數(shù)據(jù)存儲(chǔ)的連續(xù)性和實(shí)時(shí)性[6]。
圖4 系統(tǒng)軟件總體流程圖
圖5 A/D采集一定時(shí)間的流程
4.1FAT32文件系統(tǒng)的結(jié)構(gòu)
本系統(tǒng)選用FAT32文件系統(tǒng),小容量數(shù)據(jù)通過(guò)Buffer存儲(chǔ),大容量數(shù)據(jù)直接存取,提高了存取速度和效率。FAT32文件系統(tǒng)分為3個(gè)層次[1]:
1)API層:文件系統(tǒng)與用戶應(yīng)用程序的接口;
2)文件系統(tǒng)層:對(duì)文件進(jìn)行創(chuàng)建、讀取、寫(xiě)入、關(guān)閉等操作;
3)底層驅(qū)動(dòng)程序:讀寫(xiě)SD卡。
FAT32文件系統(tǒng)的主程序包含五個(gè)文件:Diskio.c,diskio. h,ff.c,ff.h和integer.h。
其中Diskio.c和diskio.h是與底層硬件IO相關(guān)的函數(shù),ff.c和ff.h為API接口函數(shù),用于FAT32文件系統(tǒng)的配置和裁剪,integer.h定義了FAT32文件系統(tǒng)的數(shù)據(jù)類(lèi)型。
4.2FAT32文件系統(tǒng)的移植
FAT32文件系統(tǒng)的移植過(guò)程主要實(shí)現(xiàn):
1)核查integer.h是否與STM32函數(shù)庫(kù)相符;
2)實(shí)現(xiàn)六個(gè)底層函數(shù):disk_initialize,disk_status,disk_ read,disk_write,disk_ioctl和disk_fattime的程序編寫(xiě)。它們主要用來(lái)實(shí)現(xiàn)存儲(chǔ)介質(zhì)的初始化和數(shù)據(jù)讀寫(xiě)。限于篇幅,本文僅給出初始化函數(shù)程序。
4.3SD卡驅(qū)動(dòng)程序的加載
本系統(tǒng)選用的 STM32F103ZET6微處理器,它有一個(gè)SDIO接口,如圖6所示。它采用4位數(shù)據(jù)總線模式,通過(guò)PC12、PC10、PC11、PC2、PC8和PC9六個(gè)引腳,實(shí)現(xiàn)對(duì)SD卡發(fā)送控制命令、地址和讀取數(shù)據(jù)等[7]。SDIO的命令、響應(yīng)和數(shù)據(jù)傳輸格式可參考文獻(xiàn)[2]。
圖6 SDIO接口
SDIO_CK時(shí)鐘是通過(guò)PC12引腳連接到SD卡,實(shí)現(xiàn)SDIO接口與 SD卡的時(shí)鐘同步,可通過(guò)庫(kù)函數(shù) SDIO_Init (&SDIO_InitStructure)進(jìn)行時(shí)鐘的配置和初始化。
加載SD卡時(shí),將庫(kù)文件stm32f10x_sdio.c添加到工程項(xiàng)目中,并調(diào)用其函數(shù),實(shí)現(xiàn)SD卡的初始化和讀寫(xiě)等操作。限于篇幅,下面僅給出部分初始化程序。
當(dāng)SD卡執(zhí)行完初始化函數(shù)后,將返回OK值,下一步進(jìn)入讀函數(shù)。當(dāng)SD卡的所有驅(qū)動(dòng)程序執(zhí)行結(jié)束,將調(diào)用FAT32文件系統(tǒng)提供的用戶接口函數(shù):f_mount,f_mkfs,f_open,f_write,f_getfree,f_lseek和f_close,完成數(shù)據(jù)的寫(xiě)入。
圖7、圖8分別為華南理工大學(xué)廣州學(xué)院汽車(chē)工程學(xué)院FSAE賽車(chē)底盤(pán)的調(diào)試好的數(shù)據(jù)采集系統(tǒng)硬件電路板正面、背面。
圖7 數(shù)據(jù)采集系統(tǒng)硬件電路板正面
圖8 數(shù)據(jù)采集系統(tǒng)硬件電路板背面
本文完成了基于STM32的高速大容量數(shù)據(jù)采集系統(tǒng)的硬件電路設(shè)計(jì)和軟件設(shè)計(jì),實(shí)現(xiàn)了FSAE賽車(chē)的轉(zhuǎn)向角信號(hào)、四個(gè)車(chē)輪的輪速信號(hào)和懸架減振器直線跳動(dòng)位移信號(hào)的采集。降低了FSAE賽車(chē)底盤(pán)調(diào)校的成本和功耗,提高了數(shù)據(jù)采集的準(zhǔn)確度和精度,從而提高FSAE賽車(chē)的動(dòng)態(tài)性能。本系統(tǒng)實(shí)現(xiàn)了高速6通道數(shù)據(jù)信號(hào)的同步采集,并連接DMA高速總線和SDIO接口,數(shù)據(jù)存儲(chǔ)容量高達(dá)2G,并以FAT32文件系統(tǒng)形式實(shí)時(shí)存盤(pán),以脫機(jī)方式工作。實(shí)踐證明,本系統(tǒng)時(shí)鐘電路和RTC時(shí)鐘電路較51系列和其他系列的MCU時(shí)鐘更加精準(zhǔn)和穩(wěn)定。本系統(tǒng)還具有CAN總線模塊,擴(kuò)展靈活??赏ㄟ^(guò)軟件升級(jí),實(shí)現(xiàn)賽車(chē)底盤(pán)數(shù)據(jù)與發(fā)動(dòng)機(jī)控制模塊的通信,繼而實(shí)現(xiàn)發(fā)動(dòng)機(jī)的數(shù)據(jù)采集,并進(jìn)一步優(yōu)化賽車(chē)底盤(pán)參數(shù)。該數(shù)據(jù)采集系統(tǒng)在未來(lái)FSAE賽車(chē)的底盤(pán)調(diào)校中具有廣闊的應(yīng)用前景。
[1]丁珍紅.基于STM32的高速大容量數(shù)據(jù)采集存儲(chǔ)系統(tǒng)設(shè)計(jì)[D].上海:上海交通大學(xué),2011.
[2]STMicroelectronics.STM32F103 Data Sheet[EB/OL].[2007.11.8]. http://www.st.com/stonline/products/literature/ds/13587.pdf
[3]Analog Device.Inc.AD7656 Data Sheet[EB/OL].2004. http://www.analog.com/static/imported-files/data-sheets/ AD7656.pdf
[4]孫虹.高速實(shí)時(shí)大容量數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].天津:天津理工大學(xué),2008.
[5]周振安,范良龍,王秀英,等.數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)踐[M].北京:中國(guó)地震出版社,2005.
[6]汪志剛.大容量數(shù)據(jù)采集存儲(chǔ)系統(tǒng)的研究與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2010.
[7]陳麗珍,林小薇.嵌入式ARM微處理器選用指南[J].單片機(jī)與嵌入式系統(tǒng)運(yùn)用,2009(6):35-38.
Design of data acquisition system of FSAE racing car chassis based on STM32
LI Miao-lin,DAI Hai-yan,XU Jie-long,OUYANG Yi-tao,CHEN Xiao-kai
(Guangzhou College of South China University of Technology,Guangzhou 510800,China)
In this paper,a high precision,large capacity,multi channel,cheap data acquisition system based on the STM32 is designed,including hardware design and software design,which is applied to the FSAE racing car chassis calibration.It can realize accurate data analysis and debugging.The system uses STM32F103ZET6 as the microprocessor,uses SD as memory card,realizes multi channel signals synchronization,continuous acquisition and storage,has the characteristics of stable performance,strong real-time,flexible expansion,etc.
data acquisition;STM32;FAT32 file system;data storage
TN919.6
A
1674-6236(2016)06-0155-04
2015-04-29稿件編號(hào):201504307
李淼林(1982—),女,湖北黃梅人,碩士,講師。研究方向:汽車(chē)電子、新能源汽車(chē)等。