基于MC9S12DP256B的汽車防抱死系統(tǒng)設(shè)計
前言
隨著汽車行駛速度的提高,道路行車密度的增大,對于汽車行駛安全性能的要求也越來越高。汽車的防抱死制動系統(tǒng)(ABS)應(yīng)運(yùn)而生,它是以傳統(tǒng)制動系統(tǒng)為基礎(chǔ),采用電子控制技術(shù),在制動時防止車輪抱死的一種機(jī)電一體化系統(tǒng)。
基于雙CPU結(jié)構(gòu)的防抱死系統(tǒng)
ABS系統(tǒng)設(shè)計中主要考慮以下幾個問題:首先,由于ABS系統(tǒng)直接關(guān)系車輛的安全性能,因而它的故障問題顯得極為重要,系統(tǒng)必須保證能及時檢測故障并準(zhǔn)確判斷故障點;其次,ABS系統(tǒng)通常包含電磁閥等感性負(fù)載,驅(qū)動電流很大,需要適當(dāng)?shù)尿?qū)動電路;此外,為了便于ABS系統(tǒng)與車輛上其他系統(tǒng)進(jìn)行通信,系統(tǒng)需要預(yù)留通信接口。
本文以原有的四傳感器四通道(4S/4M)ABS電子控制單元為基礎(chǔ),開發(fā)了一個帶有鼓掌自檢的氣壓ABS。設(shè)計中采用MCU+CPLD的雙CPU結(jié)構(gòu),系統(tǒng)結(jié)構(gòu)如圖1(圖略,請參看《電子設(shè)計應(yīng)用》2005.8) 所示。
控制CPU采集輪速信號,然后根據(jù)設(shè)定的減速度和滑移率門限值進(jìn)行路面識別及制動控制,另外它還負(fù)責(zé)對輪速傳感器進(jìn)行靜態(tài)檢測。安全CPU (CPLD)則主要負(fù)責(zé)ABS系統(tǒng)的故障檢測工作,判斷故障部位,并將相應(yīng)的故障碼傳輸給控制CPU。產(chǎn)生故障后,由控制CPU統(tǒng)一對故障狀態(tài)進(jìn)行處理,包括中斷ABS功能,恢復(fù)至常規(guī)制動,點亮故障顯示燈,并將相應(yīng)的故障代碼存儲在EEPROM中,需要時可隨機(jī)通過CAN通信端口傳輸?shù)缴衔粰C(jī)或車上其他電子控制系統(tǒng)。
系統(tǒng)硬件設(shè)計
ABS系統(tǒng)故障主要為電磁閥故障、輪速信號采集系統(tǒng)的故障、制動管路壓力信號采集系統(tǒng)的故障、電源故障和控制器故障。本系統(tǒng)針對這些故障均給出了相應(yīng)的診斷電路。
MC9S12DP256B和CPLD概述
MC9S12DP256B是基于16位HCS12 CPU及0.25um制造工藝的高速、高性能5.0V FLASH微控制器。該單片機(jī)使用了鎖相環(huán)技術(shù)或內(nèi)部倍頻技術(shù),使內(nèi)部總線速度大大高于時鐘產(chǎn)生器的頻率,在同樣速度下所使用的時鐘頻率較同類單片機(jī)低很多,因而高頻噪聲低、抗干擾能力強(qiáng),更適合于汽車內(nèi)部惡劣的環(huán)境。并且包含定時器、 A/D轉(zhuǎn)換、 PWM輸出、CAN通訊、EEPROM、SPI、SCI等多個模塊,資源豐富,滿足系統(tǒng)功能的開發(fā)要求。
系統(tǒng)中的CPLD采用XC9572TQ100,此款芯片支持?jǐn)U展工業(yè)溫度范圍。它不僅工作溫度范圍更大,從-40C至+100C,而且還符合汽車業(yè)界特有的質(zhì)量認(rèn)證呢感標(biāo)準(zhǔn)。此外,該芯片的門數(shù)和I/O數(shù)均符合設(shè)計要求,并留有功能擴(kuò)展的余地。
數(shù)字輸入通道診斷電路
輪速輸入信號正確與否直接影響到ABS系統(tǒng)的工作。為此特地在信號處理電路之前加設(shè)數(shù)字開關(guān),便于系統(tǒng)檢測電路板數(shù)字輸入通道。采用輸入模擬法,由安全CPU(CPLD)向數(shù)字通道發(fā)出一組標(biāo)準(zhǔn)方波信號輸入到控制 CPU的輸入捕捉端口進(jìn)行測量。具體電路如圖2 (圖略,請參看《電子設(shè)計應(yīng)用》2005.8)所示。
CPLD產(chǎn)生DETECT信號控制數(shù)字開關(guān)CD4066的通斷。ABS上電自檢時,DETECT為“0”,開關(guān)籪開,輪速信號被屏蔽,此時由 CPLD產(chǎn)生事先定義好的標(biāo)準(zhǔn)方波(頻率為100Hz,即每個計數(shù)周期 (0.1s)10個脈沖)并輸出給主CPU。主CPU通過ECT口捕捉方波進(jìn)行測量與計算,經(jīng)與定義的該標(biāo)準(zhǔn)波的頻率比較后,如果結(jié)果一致則說明數(shù)字輸入通道正常, 否則說明有故障出現(xiàn)。檢測完畢,一切正常后,DETECT變?yōu)椤?”,開關(guān)接通,輪速信號經(jīng)過信號整形放大單元、由CPLD輸出至控制CPU。
電磁閥驅(qū)動及其故障檢測電路
汽車制動系統(tǒng)中電磁閥的工作電流為1.5-2.5A,而微控制器的輸出電流遠(yuǎn)達(dá)不到這一要求,因此采用Freescale公司的高端驅(qū)動芯片MC33289來實現(xiàn)電磁閥的驅(qū)動。單通道的控制電路如圖3(圖略,請參看《電子設(shè)計應(yīng)用》2005.8)所示。
由于MC33289的自檢功能,應(yīng)用時可將St引腳直接與CPU相連,一旦電磁閥出現(xiàn)故障,如短路或斷路,St即自動置低,CPU接收到信號后立刻停止ABS功能,點亮故障顯示燈,同時將相應(yīng)的故障代碼以中斷的形式傳輸給控制CPU。對電磁閥驅(qū)動狀況的檢測通過比較MC33289的輸出OUT與輸入 IN來完成。在正常情況下同一路的兩個邏輯值應(yīng)相等,同時為“1”或“0”;若不相等,則說明驅(qū)動芯片出現(xiàn)故障,CPU必須中斷ABS功能,點亮故障顯示燈并傳輸故障碼。
故障碼存儲及傳輸
MC9S12DP256B自帶4KB的EEPROM,地址從0x400到0xFFF。 無須外擴(kuò)EEPROM,可用于對故障碼的存儲,便于數(shù)據(jù)長期保存。
擦、寫操作前必須通過設(shè)置EEPROM時鐘分配寄存器 ECLKDIV,將模塊時鐘配置在150KHz至200KHz之間。系統(tǒng)中的晶振為16MHz,總線頻率8MHz,經(jīng)計算,取ECLKDIV=0x4A,即預(yù)分頻因子PRDIV8=1,分頻因子EDIV[5:0]=001010,模塊的時鐘為182KHz。
因為每次寫操作均以字進(jìn)行,所以為安全起見,擦除時每次擦兩個字。擦除操作的時序與寫操作完全相同,只不過相應(yīng)地址寫入的數(shù)據(jù)均為“0”。
此外,系統(tǒng)結(jié)合自身CAN模塊,選用Philips公司的PCA82C250,設(shè)置了CAN的接口電路,便于故障碼的傳輸。接口電路如圖4(圖略,請參看《電子設(shè)計應(yīng)用》2005.8)所示。
系統(tǒng)中的其他電路,像輪速信號處理電路、傳感器靜態(tài)檢測電路、電源監(jiān)控電路等由于篇幅所限,在此不作詳細(xì)介紹。
系統(tǒng)軟件及VHDL語言設(shè)計
系統(tǒng)的控制CPU MC9S12DP256B用C和匯編語言進(jìn)行開發(fā),而CPLD用VHDL語言進(jìn)行編程。
MC9S12DP256B程序的功能是: 程序存儲器及數(shù)據(jù)存儲器的自檢; 對輪速傳感器進(jìn)行靜態(tài)、動態(tài)檢測;采集輪速信號,計算出車輪速度和減速度,根據(jù)控制邏輯輸出制動壓力調(diào)節(jié)信號;實時存儲故障代碼;CAN通信。
CPLD程序的功能是:控制數(shù)字開關(guān)CD4066的通斷;檢測數(shù)字輸入通道;監(jiān)測電磁閥驅(qū)動芯片和電磁閥的工作狀態(tài);向控制CPU傳送故障情況。 CPLD的設(shè)計由四個步驟組成:設(shè)計輸入、實現(xiàn)、校驗和芯片編程。設(shè)計中采用VHDL語言文本輸入,經(jīng)綜合、仿真、實現(xiàn)后通過并行線纜下載至Xilinx 芯片中。圖5和圖6(圖略,請參看《電子設(shè)計應(yīng)用》2005.8)分別是系統(tǒng)控制CPU及CPLD的流程圖。
結(jié)語
本系統(tǒng)以其獨特的雙CPU結(jié)構(gòu),集防抱死制動、系統(tǒng)故障檢測于一體,同時能實現(xiàn)對故障檢測碼的傳輸。 同時雙CPU均預(yù)留了一定的輸入/輸出端口, 為進(jìn)一步擴(kuò)展汽車電子控制裝置的功能提供了可能。