基于CAN總線的汽車數(shù)字儀表的設(shè)計(jì)
汽車儀表作為車輛與駕駛員交流的窗口,承擔(dān)向駕駛員實(shí)時(shí)提供車輛工況任務(wù)。汽車儀表是汽車電子在車輛中應(yīng)用研究的重點(diǎn)之一。隨著歐洲排放標(biāo)準(zhǔn)在國(guó)內(nèi)推廣,符合歐洲排放標(biāo)準(zhǔn)具備控制器局域網(wǎng)絡(luò)(ControllerAreaNetwork,簡(jiǎn)稱CAN)總線接口的發(fā)動(dòng)機(jī)和與之通訊的總線式數(shù)字儀表也逐漸擴(kuò)大市場(chǎng)。隨著車載總線技術(shù)發(fā)展,帶有CAN總線接口的汽車數(shù)字儀表得到廣泛應(yīng)用。應(yīng)用層SAEJ1939協(xié)議是目前國(guó)內(nèi)汽車行業(yè)應(yīng)用最廣泛的CAN總線應(yīng)用層協(xié)議。
這里提出的基于CAN總線的汽車數(shù)字儀表是利用CAN總線使其成為車身網(wǎng)絡(luò)一部分,遵循SAEJ1939協(xié)議讀取發(fā)動(dòng)機(jī)轉(zhuǎn)速、水溫等信息。考慮到車輛實(shí)際狀況,該汽車數(shù)字儀表還能接收傳感器的車速、油量、油壓、制動(dòng)氣壓等信號(hào)并顯示,為駕駛員提供實(shí)時(shí)車輛工況。
2 SAEJ1939協(xié)議簡(jiǎn)介
SAEJ1939協(xié)議是美國(guó)汽車工程師協(xié)會(huì)SAE(SocietyofAutomotiveEngineer)發(fā)布的以CAN2.0B作為網(wǎng)絡(luò)核心協(xié)議的車輛網(wǎng)絡(luò)串行通信和控制協(xié)議。SAEJ1939協(xié)議使用CAN的數(shù)據(jù)幀封裝其數(shù)據(jù)信息,對(duì)CAN擴(kuò)展幀的29位標(biāo)識(shí)符編碼,形成獨(dú)特的編碼系統(tǒng)作為車輛通訊標(biāo)準(zhǔn)。該協(xié)議明確規(guī)定了汽車內(nèi)部ECU的地址配置、命名、通訊方式以及報(bào)文發(fā)送優(yōu)先級(jí)等,詳細(xì)說(shuō)明了汽車內(nèi)部具體的ECU通訊內(nèi)容。實(shí)現(xiàn)車輛電子設(shè)備間高速數(shù)據(jù)傳輸,減少線路數(shù)量,最大限度利用CAN總線優(yōu)越性能。
2.1 SAEJ1939報(bào)文格式
SAEJ1939數(shù)據(jù)幀是以PDU(協(xié)議數(shù)據(jù)單元)為單位,共由優(yōu)先權(quán)(P)、保留位(R)、數(shù)據(jù)頁(yè)(DP)、PDU格式(PF)、PDU細(xì)節(jié)(PS)、源地址(SA)及數(shù)據(jù)域(DateField)等7個(gè)域組成。除了數(shù)據(jù)域外的PDU對(duì)應(yīng)于CAN擴(kuò)展幀的29位標(biāo)識(shí)符,其對(duì)應(yīng)關(guān)系如表1所列。其中PS是一個(gè)8位段,其定義取決于PF值。若PF值小于240,PS是目標(biāo)地址(DA)。若PF值介于240和255之間,則PS為組擴(kuò)展(GE)。
2.2 SAEJ1939應(yīng)用層
應(yīng)用層詳細(xì)定義了SAEJ1939協(xié)議中使用的每個(gè)參數(shù),包括數(shù)據(jù)長(zhǎng)度、數(shù)據(jù)類型、結(jié)果、范圍以及參數(shù)組編號(hào)(PGN)等。這些參數(shù)分為控制參數(shù)、動(dòng)力傳動(dòng)系統(tǒng)狀態(tài)參數(shù)、動(dòng)力傳動(dòng)系統(tǒng)控制參數(shù)、動(dòng)力傳動(dòng)系統(tǒng)配置參數(shù)、信息參數(shù)以及信息狀態(tài)參數(shù)。SAEJ1939使用參數(shù)組編號(hào)(PGN)作為一參數(shù)組的唯一標(biāo)簽。該標(biāo)簽包括:保留位(R),數(shù)據(jù)頁(yè)(DP)、PDU格式域(PF8位)和組擴(kuò)展域(GE8位)。另外,PF值小于240時(shí),PGN低字節(jié)位置0。參數(shù)組中的每個(gè)參數(shù)都能用ASCII碼表示,其狀態(tài)量最少可用兩個(gè)位表示。文字?jǐn)?shù)字?jǐn)?shù)據(jù)采用最高位在前的傳輸方式,其他包括兩個(gè)或多個(gè)數(shù)據(jù)字節(jié)的參數(shù)則采用最低位在前的傳輸方式。除此之外,應(yīng)用層中還詳細(xì)定義了參數(shù)組屬性。該參數(shù)組屬性包括:優(yōu)先權(quán)、更新率、參數(shù)組的協(xié)議數(shù)據(jù)單元格式、參數(shù)組編號(hào),參數(shù)組的數(shù)據(jù)參數(shù)號(hào)及其在參數(shù)組中的位置。
3 基于CAN總線的汽車數(shù)字儀表系統(tǒng)設(shè)計(jì)
3.1 硬件電路設(shè)計(jì)
該汽車數(shù)字儀表系統(tǒng)由信號(hào)采集和處理顯示等模塊組成,如圖1所示。通過(guò)模擬量信號(hào)分壓,濾波整形脈沖信號(hào),CAN總線信號(hào)通過(guò)收發(fā)器發(fā)送至中央處理器,然后再將處理后的信號(hào)通過(guò)步進(jìn)電機(jī)控制器控制步進(jìn)電機(jī),驅(qū)動(dòng)LCD液晶屏顯示。其中信號(hào)采集模塊包含CAN總線數(shù)據(jù)采集和傳感器數(shù)據(jù)采集。在實(shí)際的車載環(huán)境中,該系統(tǒng)設(shè)計(jì)遵循SAEJ1939協(xié)議在CAN總線上獲取發(fā)動(dòng)機(jī)轉(zhuǎn)速、水溫和故障代碼,而其他信息包括車速、油量、機(jī)油壓力、制動(dòng)氣壓則從相應(yīng)傳感器以模擬量和脈沖量形式讀取。通過(guò)測(cè)量車速傳感器脈沖信號(hào)獲取車速信號(hào),油量傳感器的信號(hào)經(jīng)分壓后直接發(fā)送給中央處理器內(nèi)A/D轉(zhuǎn)換器處理。
圖2給出信號(hào)采集模塊電路。圖中,采用帶隔離的通用CAN收發(fā)器CTM825lT接收CAN總線信號(hào)。CTM8251T內(nèi)部集成所有必需的CAN隔離及CAN收發(fā)器,可實(shí)現(xiàn)CAN節(jié)點(diǎn)的收發(fā)與隔離功能,從而替代了傳統(tǒng)設(shè)計(jì)中采用光電耦合器、DC-DC隔離、CAN收發(fā)器等元件實(shí)現(xiàn)的具有隔離功能的CAN收發(fā)電路。該模塊電路可將CAN控制器的邏輯電平轉(zhuǎn)換為CAN總線的差分電平,并具有直流2500V的隔離功能。該模塊電路設(shè)計(jì)體積小,集成度高,可取代PCA82C25l等傳統(tǒng)的CAN總線收發(fā)器及其外圍電路,從而降低了系統(tǒng)設(shè)計(jì)成本。傳感器模擬量信號(hào)經(jīng)分壓傳輸至中央處理器,圖中的VD40和C40兩元件可對(duì)微控制器LM3S2948的引腳提供過(guò)壓保護(hù)。
LM3S2948型微控制器完成信號(hào)處理。它是一款基于ARMCortexM3內(nèi)核的微控制器,采用32位RISC,內(nèi)嵌CAN控制器、A/D轉(zhuǎn)換器、模擬比較器、I2C接口等功能模塊,極大降低了外圍電路設(shè)計(jì)成本。LM3S2948微控制器具有運(yùn)算速度快、功耗小、體積小、價(jià)位低等特點(diǎn)。LM3S2948的CAN控制器模塊支持CAN2.0B協(xié)議,支持符合SAEJ1939協(xié)議的擴(kuò)展幀的報(bào)文傳輸,其傳輸速率可編程設(shè)置為1Mb/s,這些特性完全滿足CAN總線汽車數(shù)字儀表的應(yīng)用要求。采用移位寄存器74HC595實(shí)現(xiàn)信號(hào)的串入并出,采用步進(jìn)電機(jī)驅(qū)動(dòng)器VID6606驅(qū)動(dòng)表針。每片VID6606可同時(shí)驅(qū)動(dòng)四路步進(jìn)電機(jī)。在其頻率控制端輸入脈沖序列F(SCX),即可控制輸出端使步進(jìn)電機(jī)的輸出軸以微步轉(zhuǎn)動(dòng),每個(gè)脈沖對(duì)應(yīng)電機(jī)輸出軸轉(zhuǎn)動(dòng)1/12°,最大角速度可達(dá)600°/s,滿足汽車儀表指示的高精度、快速響應(yīng)的要求。表針采用步進(jìn)電機(jī)VID一29驅(qū)動(dòng)。圖3為VID6606驅(qū)動(dòng)儀表電路。LCD驅(qū)動(dòng)器采用PCF8566,其內(nèi)部集成LCD驅(qū)動(dòng)器所必需的功能電路。能直接驅(qū)動(dòng)任意靜態(tài)或包含4背極高達(dá)24段的LCD。中央處理器發(fā)送的信號(hào)先經(jīng)PCF8566T功率放大后,然后送至液晶屏F2000LCD顯示。
3.2 軟件設(shè)計(jì)
該汽車數(shù)字儀表系統(tǒng)軟件采用IAR編程調(diào)試軟件編寫(xiě)。該軟件通過(guò)LM一LINK調(diào)試仿真器與LM3S2948的JTAG端口連接,實(shí)現(xiàn)在線仿真調(diào)試。
數(shù)據(jù)接收處理軟件首先初始化系統(tǒng)時(shí)鐘、CAN節(jié)點(diǎn)、LCD液晶屏、步進(jìn)電機(jī)等,并使能CAN中斷,設(shè)置CAN屏蔽碼和驗(yàn)收碼。初始化CAN節(jié)點(diǎn)的具體步驟:
①封裝CAN節(jié)點(diǎn)相關(guān)信息,創(chuàng)建一個(gè)軟件CAN節(jié)點(diǎn)結(jié)構(gòu)體指針pCAN_Node_lnfo;
?、诔跏蓟疌AN控制器;
?、壑袛郈AN控制器;
?、茉O(shè)置CAN節(jié)點(diǎn)接收過(guò)濾。
初始化后,讀取CAN總線和其他傳感器信號(hào)。控制步進(jìn)電機(jī)和液晶屏顯示處理數(shù)據(jù)。等待CAN總線接收中斷產(chǎn)生,判斷總線數(shù)據(jù)是否滿足屏蔽條件,即逐位比較接收的29位標(biāo)識(shí)符報(bào)文與驗(yàn)收碼、屏蔽碼值,屏蔽碼用于定位相關(guān)位(0=相關(guān),1=不相關(guān))。只有標(biāo)識(shí)符中的相關(guān)位與驗(yàn)收碼相應(yīng)位相同,系統(tǒng)才接收?qǐng)?bào)文。如滿足屏蔽條件則從寄存器讀取數(shù)據(jù)并存入緩存區(qū),再根據(jù)SAEJ1939協(xié)議判斷計(jì)算發(fā)動(dòng)機(jī)轉(zhuǎn)速、水溫和故障代碼信息,傳輸至步進(jìn)電機(jī)和液晶屏顯示。例如:接收的數(shù)據(jù)為:OCF00400XXXXXX4F55XXXXXX(XX為任意數(shù)據(jù)),若設(shè)置驗(yàn)收碼為Ox00000000,屏蔽碼為0xlFFFFFFF,則接收該報(bào)文。根據(jù)SAEJl939-71協(xié)議,此報(bào)文為:PGN61444一電子發(fā)動(dòng)機(jī)控制器。因此,可得第4,5字節(jié)為發(fā)動(dòng)機(jī)轉(zhuǎn)速,并遵循低位在前,高位在后的傳輸方式,則發(fā)動(dòng)機(jī)轉(zhuǎn)速=原始數(shù)×分辨率+偏移量=21831x0.125+0=2728.875r/m。同理可計(jì)算其他汽車儀表所需數(shù)值。圖4為CAN總線數(shù)據(jù)接收程序流程圖。
4 結(jié)語(yǔ)
在研究了汽車CAN總線通訊協(xié)議及SAEJ1939協(xié)議的基礎(chǔ)上,實(shí)現(xiàn)基于CAN總線的汽車數(shù)字儀表系統(tǒng)設(shè)計(jì)。該系統(tǒng)設(shè)計(jì)利用LM3S2948、CTM8251、VID6606等器件的功能,最大程度地降低外圍電路成本。該汽車數(shù)字儀表系統(tǒng)工作穩(wěn)定、性能良好,目前正進(jìn)行裝車試驗(yàn)。隨著歐洲排放標(biāo)準(zhǔn)在國(guó)內(nèi)的推廣,基于CAN總線的數(shù)字儀表必將進(jìn)入快速發(fā)展的新階段。
評(píng)論