王利雙,李琰
(1.唐山師范學(xué)院 物理科學(xué)與技術(shù)學(xué)院,河北 唐山 063000;2.華北理工大學(xué) 人文法律學(xué)院,河北 唐山063210)
CAN總線采用多主機(jī)的通訊方式,在總線上可以連接多個(gè)在控制單元[1]。隨著智能化的發(fā)展,汽車上應(yīng)用的電控系統(tǒng)越來(lái)越多,通過(guò)CAN總線傳輸,可以有效減少汽車線束,因此CAN總線在汽車中得到廣泛應(yīng)用。車用慣性測(cè)量單元用來(lái)檢測(cè)汽車行駛狀態(tài)的橫擺角速度、側(cè)向加速度及縱向加速度,以提供給其他需要慣性信號(hào)的電控系統(tǒng),如車身穩(wěn)定控制系統(tǒng)[2,3]。如果橫擺角速度、側(cè)向加速度及縱向加速度信號(hào)單獨(dú)傳輸,至少需要3根信號(hào)線,而采用CAN總線傳輸,可以將慣性測(cè)量單元的3組信號(hào),同時(shí)發(fā)送給總線上的多個(gè)電控單元,大大簡(jiǎn)化了信號(hào)傳輸?shù)穆窂?,有效提高傳輸效率[4]。因此設(shè)計(jì)了一款基于CAN總線的慣性測(cè)量單元,它采用CAN總線通信將采集到的橫擺角速度、側(cè)向加速度及縱向加速度信號(hào)發(fā)送給汽車電子穩(wěn)定控制系統(tǒng)或其他需要慣性信號(hào)的系統(tǒng)。
本研究主要包括以下幾個(gè)模塊:
(1)微處理器模塊,負(fù)責(zé)處理信號(hào);
(2)單片機(jī)的時(shí)鐘電路和復(fù)位電路,保證單片機(jī)的正常工作;
(3)慣性傳感器模塊,負(fù)責(zé)檢測(cè)加速度和角速度信號(hào);
(4)電源管理模塊,負(fù)責(zé)將汽車12 V或24 V電壓轉(zhuǎn)化為本系統(tǒng)所需電壓并保證電壓的穩(wěn)定;
(5)CAN通信模塊,負(fù)責(zé)將慣性測(cè)量單元的信號(hào)發(fā)送到汽車CAN總線上,以傳遞信號(hào)給車上其他控制單元??傮w方案如圖1所示。
圖1 慣性測(cè)量單元的總體方案
根據(jù)總體方案的設(shè)計(jì)要求,設(shè)計(jì)的慣性測(cè)量單元需同時(shí)檢測(cè)汽車行駛狀態(tài)的橫擺角速度、側(cè)向加速度及縱向加速度3組信號(hào)。為了簡(jiǎn)化結(jié)構(gòu),選擇了一款能同時(shí)檢測(cè)3組信號(hào)的慣性傳感器芯片SMI540,這是一款MEMS(微電子機(jī)械系統(tǒng))慣性傳感器具有集成化程度高、能耗低、精度高、壽命長(zhǎng)的優(yōu)點(diǎn),而且動(dòng)態(tài)性能好。其輸出信號(hào)為數(shù)字信號(hào),不需要進(jìn)行模數(shù)轉(zhuǎn)換,可以通過(guò)SPI通信直接與單片機(jī)進(jìn)行數(shù)據(jù)交換。SMI540內(nèi)部集成了溫度傳感單元,可以同步檢測(cè)溫度,以矯正信號(hào)的溫度漂移。SMI540內(nèi)部還集成有數(shù)字低通濾波器,可以對(duì)采集到的信號(hào)進(jìn)行初步的濾波處理。
由于本研究選用的慣性傳感器為數(shù)字型傳感器,需通過(guò)SPI進(jìn)行通信,且慣性傳感器與車上其他電控單元之間通過(guò)CAN總線進(jìn)行通信,為了簡(jiǎn)化電路結(jié)構(gòu),選用的單片機(jī)應(yīng)具有SPI通信模塊和CAN通信模塊。綜合考慮,選用是飛思卡爾公司的MC9S12G48,這是一款16位的汽車級(jí)單片機(jī),片內(nèi)資源包括48kb的Flash、4096b的RAM、1536b的EEPROM、一個(gè)串行外圍通信接口(SPI)模塊、一個(gè)控制器局域網(wǎng)絡(luò)模塊(MSCAN)等[5],完全滿足本研究對(duì)內(nèi)存和通信接口的需求。
電源管理模塊有2個(gè)任務(wù):其一是將車載電源電壓(12 V或24 V)轉(zhuǎn)化為慣性傳感器和單片機(jī)所需的供電電壓(5 V);其二是為系統(tǒng)提供穩(wěn)定電壓。綜合考慮,選用了英飛凌公司的TLE4275芯片。電源穩(wěn)壓電路如圖2所示。
圖2 電源穩(wěn)壓電路
為防止車載電源正負(fù)極反接,在TLE4275的輸入引腳1之前連接了一個(gè)二極管PD1,為防止輸入TLE4275的電流過(guò)大,將芯片燒壞,在輸入引腳1之前還接了一個(gè)保險(xiǎn)片PF1。打開(kāi)汽車的點(diǎn)火開(kāi)關(guān),12 V或24 V的直流電壓經(jīng)過(guò)肖特基二極管PD1和保險(xiǎn)片PF1進(jìn)入TLE4275的輸入引腳1,經(jīng)電壓轉(zhuǎn)換,從引腳5輸出5 V電壓,給單片機(jī)和慣性傳感器供電。為防止后面的電路元件受到瞬態(tài)高電壓的沖擊而損壞,在輸出引腳5和接地引腳3之間連接了一個(gè)瞬態(tài)電壓抑制二極管PD2。
MC9S12G48微處理器芯片共有32個(gè)引腳。MC9S12G48引腳分布如圖3所示。引腳1接復(fù)位電路,該研究采用上電復(fù)位方式,當(dāng)單片機(jī)內(nèi)部檢測(cè)電路發(fā)現(xiàn)電源端VDD出現(xiàn)正跳變或低于一定值時(shí),自動(dòng)進(jìn)行上電復(fù)位。引腳2接5 V電源,引腳3和引腳5接地,引腳4和引腳6接外部時(shí)鐘電路。MC9S12G48內(nèi)部提供了1 MHz的時(shí)鐘頻率。同時(shí)MC9S12G48也支持外部提供的時(shí)鐘源,EXTAL(引腳4)和XTAL(引腳6)分別為外部時(shí)鐘的輸出和輸入引腳。該研究采用了一個(gè)8 MHz的陶瓷振蕩器作為外部時(shí)鐘源。MC9S12G48單片機(jī)支持單線制的背景調(diào)試模式,單片機(jī)上只需要一個(gè)引腳8(BKGD)就可完成程序的實(shí)時(shí)下載以及在線調(diào)試。引腳31和32與CAN通信電路連接,將微處理器連接到CAN總線上,從而實(shí)現(xiàn)與其他微處理器的信號(hào)傳輸。引腳27~引腳30是SPI通信接口,與慣性傳感器SMI540的相應(yīng)引腳連接,實(shí)現(xiàn)慣性傳感器與微處理器之間信號(hào)的數(shù)字傳輸。
圖3 微處理器引腳分布圖
慣性傳感器外圍電路如圖4所示。
圖4 慣性傳感器外圍電路
慣性傳感器SMI540引腳3(VDD)為電源引腳,連接電源穩(wěn)壓電路提供的5 V電壓。為消除電磁干擾,引腳3與接地之間連接了一個(gè)4.7 nF的濾波電容。復(fù)位引腳RESET接到5 V供電電壓上。MOSI(12引腳),MISO(13引腳),CSB(14引腳),SCK(15引腳)為SPI通信的4個(gè)引腳,與單片機(jī)SPI接口的相應(yīng)引腳連接。SPI通信以主從模式工作,可以允許一個(gè)主設(shè)備和多個(gè)從設(shè)備進(jìn)行通信,在該研究的慣性測(cè)量單元中,單片機(jī)是主設(shè)備,慣性傳感器是從設(shè)備,CSB為SPI通信的從機(jī)選擇線,控制從機(jī)是否被選中,只有CSB引腳為低電平,單片機(jī)與慣性傳感器之間的通信才能建立。SPI通信是串行通訊,數(shù)據(jù)是一位一位傳輸?shù)?,因此需要一根時(shí)鐘線SCK來(lái)提供時(shí)鐘脈沖。SCK信號(hào)線只由單片機(jī)控制,當(dāng)沒(méi)有時(shí)鐘跳變時(shí),慣性傳感器不接收或發(fā)送數(shù)據(jù)。MOSI引腳接收單片機(jī)發(fā)送的信號(hào),MISO引腳向單片機(jī)發(fā)送信號(hào),因?yàn)檩斎牒洼敵鼍€獨(dú)立,所以SPI通信可以同時(shí)進(jìn)行數(shù)據(jù)的輸入和輸出。
該研究的慣性測(cè)量單元通過(guò)CAN總線將信號(hào)發(fā)送給ESC或其他需要慣性信號(hào)的系統(tǒng)。CAN總線傳輸需要具備CAN控制器、CAN收發(fā)器、CAN總線和終端電阻[6]。該研究選用的單片機(jī)MC9S12G48內(nèi)部集成了CAN控制器。CAN收發(fā)器選用的是英飛凌公司的TLE6250G芯片,其數(shù)據(jù)傳輸速率最高支持1Mbps,并且具有很好的電磁兼容性能。CAN總線傳輸電路如圖5所示。引腳1(TXD)和引腳4(RXD)分別與單片機(jī)的相應(yīng)引腳連接。為了過(guò)濾CAN總線上的電磁干擾信號(hào)引腳,在輸出引腳6(CANL)和引腳7(CANH)后面連接了共模抑制電感CL1。同時(shí),為了實(shí)現(xiàn)靜電保護(hù),在輸出引腳6(CANL)和引腳7(CANH)與地之間還連接了靜電保護(hù)二極管CD7。為了防止信息傳遞過(guò)程發(fā)生反射,在CAN總線終端連接了終端電阻CR14和CR15。
圖5 CAN總線傳輸電路
慣性測(cè)量單元的軟件程序分為3個(gè)部分:數(shù)據(jù)采集部分、數(shù)據(jù)處理部分和數(shù)據(jù)傳輸部分。這3個(gè)部分分別實(shí)現(xiàn)對(duì)慣性信號(hào)的采集、處理與傳輸工作。應(yīng)用程序流程如圖6所示。
圖6 應(yīng)用程序流程圖
慣性傳感器芯片SMI540采集到車輛行駛過(guò)程中的縱向加速度、橫向加速度和橫擺角速度信號(hào),通過(guò)SPI通信將這些信號(hào)發(fā)送給微處理器,微處理器對(duì)這些信號(hào)進(jìn)行濾波處理。經(jīng)過(guò)微處理器濾波處理后的3組慣性信號(hào),通過(guò)CAN通訊模塊發(fā)送到CAN總線上,并最終提供給ESC,達(dá)到對(duì)行駛車輛穩(wěn)定性的控制。
SPI通信程序流程如圖7所示。
將單片機(jī)MC9S12G48的SPI設(shè)置為主機(jī)模式,用于與慣性傳感器SMI540進(jìn)行通信。SMI540的SPI通信主要包含是OpenSPI32和MM5-SPI。該研究選用的是MM5-SPI協(xié)議,每幀數(shù)據(jù)的長(zhǎng)度不定,可以為16位、32位、48位和64位,每幀數(shù)據(jù)的最高2位表示此幀數(shù)據(jù)的長(zhǎng)度,這種方式可以通過(guò)發(fā)送一個(gè)命令來(lái)同時(shí)采集縱向、橫向加速度和橫擺角速度,保證了3個(gè)量的同步性。通信時(shí)序采用CPOL=0,CPHA=0,每次發(fā)送8位數(shù)據(jù),根據(jù)每幀數(shù)據(jù)的長(zhǎng)度來(lái)決定發(fā)送的次數(shù),先發(fā)送高位數(shù)據(jù),后發(fā)送低位數(shù)據(jù)。
3.2.1 CAN初始化程序設(shè)計(jì)
CAN通信程序?qū)崿F(xiàn)慣性單元與其他控制單元之間信號(hào)的雙向傳遞,包括CAN初始化程序、CAN發(fā)送程序和CAN接收程序。其初始化流程如圖8所示。
MC9S12G48的MSCAN模塊的初始化是由控制寄存器0的第0位(INITRQ)和控制寄存器1的第0位(INITAK)來(lái)決定的,當(dāng)INITRQ=1且INITAK=1時(shí),進(jìn)入初始化模式。當(dāng)控制寄存器1的使能位CANE=1時(shí),模塊使能??刂萍拇嫫?的CLKSRC位是時(shí)鐘源選擇位,該研究選用8 MHz的外部振蕩器,所以設(shè)置CLKSRC=0。CAN總線定時(shí)寄存器0的低六位BRP[5:0]為波特率預(yù)分頻器,用來(lái)確定位時(shí)間的時(shí)間沖量(Tq)。CAN總線定時(shí)器1的低四位TSEG1[3:0]為時(shí)間段1,4至6位TSEG2[2:0]為時(shí)間段2。位時(shí)間的計(jì)算公式為:
(1)
式中fCANCLK為振蕩器時(shí)鐘,該研究所用的振蕩器為8 MHz,選取BRP[5:0]為3,TSEG1[3:0]為1,TSEG2[2:0]為0,因此可得:
(2)
3.2.2 CAN發(fā)送程序設(shè)計(jì)
MSCAN模塊有3個(gè)發(fā)送報(bào)文緩沖器。發(fā)送報(bào)文前,CPU首先要確定3個(gè)緩沖器中是否有可用的發(fā)送緩沖器,如果緩沖器可用,則寫入發(fā)送緩沖器選擇寄存器(CANTBSEL),當(dāng)報(bào)文發(fā)送完畢,釋放發(fā)送緩沖器。當(dāng)有多條報(bào)文要發(fā)送時(shí),根據(jù)等待發(fā)送的報(bào)文的優(yōu)先級(jí),按優(yōu)先級(jí)高低順序發(fā)送報(bào)文。CAN通信發(fā)送程序流程如圖9所示。
圖9 CAN通信發(fā)送程序流程
3.2.3 CAN接收程序設(shè)計(jì)
MSCAN模塊的接收緩沖器是一個(gè)5級(jí)先入先出緩沖器。接收?qǐng)?bào)文前,先判斷接收緩沖器是否有報(bào)文,若有報(bào)文,則寄存器滿標(biāo)識(shí)符CANRFLG_RXF=1。接著讀取報(bào)文標(biāo)識(shí)符、數(shù)據(jù)長(zhǎng)度和接收的數(shù)據(jù)。讀取完成,寄存器滿標(biāo)識(shí)符CANRFLG_RXF置零。CAN通信接收程序流程如圖10所示。
圖10 CAN通信接收程序流程圖
通過(guò)CAN卡采集慣性測(cè)量單元CAN通訊接口輸出的慣性信號(hào),來(lái)檢測(cè)CAN通訊的可靠性。圖11所示為通過(guò)CAN卡采集的慣性單元信號(hào)。
圖11 CAN卡采集慣性單元信號(hào)
每條報(bào)文為8個(gè)字節(jié),其中Byte1為上一條報(bào)文的CRC校驗(yàn),Byte3:Byte2為橫擺角速度信號(hào),Byte5:Byte4為縱向加速度信號(hào),Byte7:Byte6為側(cè)向加速度信號(hào),Byte8為報(bào)文狀態(tài)。
將慣性測(cè)量測(cè)量單元采集到的信號(hào)通過(guò)CAN接口與ESC進(jìn)行通信,測(cè)試慣性測(cè)量單元與ESC的通信是否正常,以及ESC是否能夠通過(guò)慣性測(cè)量單元的信號(hào)對(duì)車輛進(jìn)行準(zhǔn)確的穩(wěn)定性控制。
如圖12所示為蛇形試驗(yàn)曲線。測(cè)試時(shí)將汽車加速至40 km/h,然后進(jìn)入蛇形線試驗(yàn)道路,方向盤轉(zhuǎn)角變化曲線,橫擺角速度以及側(cè)向加速度變化曲線如圖12所示。方向盤轉(zhuǎn)角在負(fù)350°至300°之間,橫擺角速度在正負(fù)40 °/s之間,側(cè)向加速度在正負(fù)30 m/s2之間。
圖12 蛇形試驗(yàn)曲線
(1)設(shè)計(jì)了一種基于CAN總線的慣性測(cè)量單元:將橫擺角速度傳感器和側(cè)向加速度傳感器及縱向加速度傳感器集成于一體,選用的慣性傳感器芯片輸出的是數(shù)字信號(hào),通過(guò)SPI通信直接將信號(hào)發(fā)送給單片機(jī),省去了模數(shù)轉(zhuǎn)換,簡(jiǎn)化電路結(jié)構(gòu)。
(2)慣性測(cè)量單元的信號(hào)通過(guò)CAN總線進(jìn)行傳輸,方便車上其他控制單元獲取慣性信號(hào)。經(jīng)過(guò)性能測(cè)試證實(shí),慣性單元的信號(hào)經(jīng)過(guò)CAN總線能夠可靠傳輸,并滿足汽車電子穩(wěn)定控制系統(tǒng)的使用要求。