本發(fā)明涉及汽車電子技術(shù)領(lǐng)域,特別是涉及一種基于CAN-LIN網(wǎng)絡(luò)的汽車電子微控制器通信方法。
背景技術(shù):
汽車電子是車體汽車電子控制裝置和車載汽車電子控制裝置的總稱。汽車電子化被認(rèn)為是汽車技術(shù)發(fā)展進(jìn)程中的一次革命,是改進(jìn)汽車性能最重要的技術(shù)措施。近年來,隨著信息技術(shù)的快速發(fā)展以及汽車制造業(yè)水平的不斷提升,電子設(shè)備在汽車總成本中所占的比例也隨之攀升,據(jù)統(tǒng)計,從1970年至2014年,全球汽車電子設(shè)備的成本占比從2%上漲到了50%以上。近10年來汽車產(chǎn)業(yè)70%的創(chuàng)新來源于汽車電子技術(shù)及其產(chǎn)品的開發(fā)應(yīng)用,汽車電子技術(shù)的應(yīng)用水平已成為衡量汽車檔次水平的主要標(biāo)志,其應(yīng)用程度的提高是汽車生產(chǎn)企業(yè)提高市場競爭力的重要手段。
汽車電子技術(shù)的快速發(fā)展帶來了汽車領(lǐng)域的革新,使汽車越來越智能化,汽車電子技術(shù)的研究在整車研發(fā)工作中的占比也不斷增加。面向汽車電子的微控制器的應(yīng)用基礎(chǔ)研究是汽車電子技術(shù)的重要內(nèi)容之一。2014年恩智浦推出了基于ARM Cortex M0+內(nèi)核的面向汽車電子KEA系列微控器,相比于一般微控制器,KEA系列微控制器具有更寬的溫度范圍及更高的可靠性。因其具有性能好、可靠性高、價格低等突出特點,將是汽車電子領(lǐng)域的重要成員,也能更好地應(yīng)用于其他對可靠性要求較高的領(lǐng)域。
CAN、LIN模塊是汽車電子微控制器中的重要組成部分,它們實現(xiàn)了車內(nèi)各個控制模塊之間的互聯(lián)通信,但現(xiàn)有的汽車電子微控制器中通信的抗干擾性、錯誤檢測及成本方面有明顯的不足。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種基于CAN-LIN網(wǎng)絡(luò)的汽車電子微控制器通信方法。
為了實現(xiàn)上述目的,本發(fā)明實施例提供的技術(shù)方案如下:
一種基于CAN-LIN網(wǎng)絡(luò)的汽車電子微控制器通信方法,所述通信方法包括:
上電啟動,開總中斷,輸入開關(guān)信號;
進(jìn)入CAN接收中斷,通過CAN總線接收開關(guān)信號組成的CAN總線幀;
解析CAN總線幀并處理后組成LIN總線幀;
通過LIN總線接收LIN總線幀,根據(jù)LIN總線幀對車燈進(jìn)行控制。
作為本發(fā)明的進(jìn)一步改進(jìn),所述CAN總線幀包括數(shù)據(jù)幀、遠(yuǎn)程幀、錯誤幀、過載幀四種報文幀。
作為本發(fā)明的進(jìn)一步改進(jìn),所述數(shù)據(jù)幀由幀起始、仲裁場、控制場、數(shù)據(jù)場、CRC場、應(yīng)答場、幀結(jié)束共7個不同的位場組成。
作為本發(fā)明的進(jìn)一步改進(jìn),所述方法中還包括:
通過一個或多個接收過濾器對CAN總線幀進(jìn)行標(biāo)識符ID匹配,若匹配成功,則進(jìn)行數(shù)據(jù)傳輸,否則,停止數(shù)據(jù)傳輸。
作為本發(fā)明的進(jìn)一步改進(jìn),所述LIN總線幀由幀頭和應(yīng)答兩部分組成。
作為本發(fā)明的進(jìn)一步改進(jìn),所述幀頭包括同步間隔段、同步段以及PID段,應(yīng)答包括數(shù)據(jù)段和校驗和段。
作為本發(fā)明的進(jìn)一步改進(jìn),所述PID段的前6位為幀ID,加上兩個奇偶校驗位后為受保護(hù)ID,幀ID的范圍在0x00~0x3F之間。
作為本發(fā)明的進(jìn)一步改進(jìn),LIN總線幀包括:
信號攜帶幀,幀ID為0x00~0x3B,包括無條件幀、事件觸發(fā)幀及偶發(fā)幀;
診斷幀,包括幀ID為0x3C的主機(jī)請求幀和幀ID為0x3D的從機(jī)應(yīng)答幀;
保留幀,幀ID為0x3E或0x3F。
作為本發(fā)明的進(jìn)一步改進(jìn),所述校驗和段的校驗方法具體為:
將校驗對象的各字節(jié)按照二進(jìn)制“帶進(jìn)位加”的方式計算,并將所得最終的和逐位取反,以該結(jié)果作為要發(fā)送的校驗和;
接收方根據(jù)校驗和類型,對接收數(shù)據(jù)作相同的帶進(jìn)位二進(jìn)制加法,最終的和不取反,并將該和與接收到的校驗和作加法,如果結(jié)果為0xFF,則校驗和無誤。
作為本發(fā)明的進(jìn)一步改進(jìn),所述LIN總線幀還包括用于枚舉LIN總線狀態(tài)的LIN狀態(tài)位,LIN狀態(tài)位包括IDLE,_BREAK,SYNCH,PROTECTED_IDENTIFIER,DATA_0,DATA_1,DATA_2,DATA_3,DATA_4,DATA_5,DATA_6,DATA_7,CHECKSUM共13種狀態(tài),LIN總線的初始狀態(tài)為IDLE,每次接收到LIN總線幀的一個字節(jié)后,將LIN狀態(tài)位加1,發(fā)送下字節(jié)數(shù)據(jù)之前,檢查LIN總線幀的狀態(tài)位是否正確。
本發(fā)明的有益效果是:
CAN總線幀可以分出優(yōu)先級,可以進(jìn)行實時性控制,在抗干擾以及錯誤檢測等方面的性能大大提高;
LIN總線通信協(xié)議的數(shù)據(jù)格式與UART相同,基于普通UART/SCI接口的低成本硬件實現(xiàn)LIN節(jié)點間通信,成本較低。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明中記載的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明一實施方式中基于CAN-LIN網(wǎng)絡(luò)的汽車電子微控制器通信方法的流程示意圖;
圖2為本發(fā)明一實施方式中CAN總線幀的示意圖;
圖3為本發(fā)明一實施方式中LIN總線幀的示意圖。
具體實施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明中的技術(shù)方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
參圖1所示,本發(fā)明一實施方式中公開了一種基于CAN-LIN網(wǎng)絡(luò)的汽車電子微控制器通信方法,其包括:
上電啟動,開總中斷,輸入開關(guān)信號;
進(jìn)入CAN接收中斷,通過CAN總線接收開關(guān)信號組成的CAN總線幀;
解析CAN總線幀并處理后組成LIN總線幀;
通過LIN總線接收LIN總線幀,根據(jù)LIN總線幀對車燈進(jìn)行控制。
優(yōu)選地,在開總中斷前,本實施方式中還需包括:
關(guān)總中斷,并初始化CAN模塊、LIN模塊。
以下對本實施方式中CAN-LIN網(wǎng)絡(luò)的通信方式進(jìn)行詳細(xì)說明。
CAN總線是ISO國際標(biāo)準(zhǔn)化的串行通信協(xié)議,CAN網(wǎng)絡(luò)上的任何一個節(jié)點均可作為主節(jié)點主動地與其他節(jié)點交換數(shù)據(jù);CAN網(wǎng)絡(luò)節(jié)點的信息幀可以分出優(yōu)先級,這為有實時性要求的控制提供了方便;CAN的物理層及數(shù)據(jù)鏈路層有獨特的設(shè)計技術(shù),使其在抗干擾以及錯誤檢測等方面的性能大大提高。CAN的上述特點使其成為諸多工業(yè)測控領(lǐng)域中首選的現(xiàn)場總線。
需要說明的是,目前常用的CAN通信協(xié)議解決方案包括FlexCAN與MSCAN兩種,本實施方式中KEA128芯片采用MSCAN作為CAN通信解決方案。本發(fā)明在敘述時提到的CAN通信方法均指的是KEA128芯片中MSCAN模塊所實現(xiàn)的功能。
CAN總線幀結(jié)構(gòu):
CAN總線幀中有四種報文幀(Message Frame),它們分別是數(shù)據(jù)幀、遠(yuǎn)程幀、錯誤幀、過載幀。其中數(shù)據(jù)幀和遠(yuǎn)程幀,與用戶編程相關(guān);錯誤幀和過載幀由CAN控制硬件處理,與用戶編程無關(guān)。
在CAN節(jié)點之間的通信中,要將數(shù)據(jù)從一個節(jié)點發(fā)送器傳輸?shù)搅硪粋€節(jié)點的接收器,必須發(fā)送數(shù)據(jù)幀,而總線上節(jié)點發(fā)送遠(yuǎn)程幀目的在于請求發(fā)送具有同一標(biāo)識符的數(shù)據(jù)幀,因此實現(xiàn)CAN節(jié)點間的通信,理解數(shù)據(jù)幀的組成至關(guān)重要。
數(shù)據(jù)幀由7個不同的位場組成:幀起始(Start Of Frame symbol,SOF)、仲裁場、控制場、數(shù)據(jù)場、CRC場、應(yīng)答場、幀結(jié)束(End Of Frame,EOF)。數(shù)據(jù)幀組成如圖2所示。
CAN模塊波特率:
波特率也稱位速率(Bit rate),是指每秒發(fā)送的位數(shù),位時間(Bit Time),是指發(fā)送一位所需要的時間,二者的關(guān)系如公式1所示。
波特率(位速率)=1/位時間 (公式1)
在分析CAN通信的波特率(位速率)之前,需要了解一個概念:時間沖量(Time quanta,Tq),Tq是MSCAN處理需要的原子單位時間,從CANCLK的預(yù)分頻得到時間沖量。預(yù)分頻值由MSCAN總線時序寄存器0(MSCAN_CANBTR0)的BRP決定,取值范圍為1~64,其之間的關(guān)系如公式2所示。
Tq=CANCLK/BRP (公式2)
CAN通信的位時間分為三段,如Bosch CAN規(guī)范所述:
(1)SYNC_SEG:該段為1個固定長度的Tq,信號邊沿預(yù)計出現(xiàn)在本段。
(2)時段1(TSEG1):本段包括CAN標(biāo)準(zhǔn)的PROP_SEG(傳播段)和PHASE_SEG1(相位段1),可包含4-16個Tq。
(3)時段2(TSEG1):本段包括CAN標(biāo)準(zhǔn)的PHASE_SEG2(相位段2),可包含2-8個Tq。
MSCAN總線時序寄存器1(MSCAN_CANBTR1)的TSEG1和TSEG2字段分別設(shè)置時段1和時段2包含的Tq的個數(shù)。假設(shè)時段1和時段2包含的Tq的個數(shù)分別為T1和T2,故位時間的值如公式3所示。
位時間=SYNC_SEG+TSEG1+TSEG2=(1+T1+T2)Tq (公式3)
由公式1、公式2和公式3可得,波特率(位速率)的計算公式如公式4所示。
波特率(位速率)=CANCLK/((1+T1+T2)*BRP) (公式4)
本發(fā)明設(shè)計的CAN模塊樣例程序中設(shè)置的模塊時鐘CANCLK為24MHz、預(yù)分頻器值為2、時間段1為16個Tq,時間段2為7個Tq,因此位速率為500kbps。
標(biāo)識符ID匹配
KEA128芯片的MSCAN模塊使用標(biāo)識符接收過濾器進(jìn)行標(biāo)識符匹配處理,這種模式可以降低CPU的負(fù)載。MSCAN模塊的標(biāo)識符接收過濾模式有四種,分別為2個32位的接收過濾器、4個16位的接收過濾器、8個8位接收過濾器和過濾器關(guān)閉模式。在MSCAN標(biāo)識符接收控制寄存器(MSCAN_CANIDAC)的標(biāo)識符接收模式(IDAM)控制選擇模式,在過濾器關(guān)閉模式,接收不到消息。
本實施方式中的MSCAN模塊驅(qū)動采用32位的接收過濾器進(jìn)行標(biāo)準(zhǔn)幀ID過濾,需要說明的是,MSCAN模塊包括2個32位接收過濾器,其中,第一個32位的過濾器段(CANIDAR0~3,CANIDMR0~3)產(chǎn)生過濾器0命中,第二個32位的過濾器段(CANIDAR4~7,CANIDMR4~7)產(chǎn)生過濾器1命中,本課題在設(shè)計驅(qū)動時僅采用第一個32位接收過濾器進(jìn)行ID過濾。
例如,采用第一個過濾器中的CANIDAR0寄存器(CANIDAR_BANK_1[0])用于過濾標(biāo)準(zhǔn)幀ID的3~10位,CANIDAR1寄存器(CANIDAR_BANK_1[1])用于過濾標(biāo)準(zhǔn)幀ID的0~2位。因此,將想要接收的節(jié)點的ID(acc_id)進(jìn)行移位處理分別放在CANIDAR_BANK_1[0]和CANIDAR_BANK_1[1]中,并設(shè)置CANIDMR_BANK_1[0]和CANIDMR_BANK_1[1]進(jìn)行匹配。若二者的值完全匹配則表示對應(yīng)數(shù)據(jù)可以被接收,此時即表示過濾器命中。
LIN總線是一個串行通信協(xié)議,它有效地支持汽車應(yīng)用中分布式電子節(jié)點的控制??偩€上的節(jié)點采用單主機(jī)/多從機(jī)模式,即沒有總線仲裁;從機(jī)節(jié)點不需要石英或陶瓷諧振器即可以實現(xiàn)自同步,節(jié)省了從機(jī)節(jié)點的硬件成本;由于LIN總線通信協(xié)議的數(shù)據(jù)格式與UART相同,基于普通UART/SCI接口的低成本硬件實現(xiàn)LIN節(jié)點間通信,成本較低。因此,LIN通信方式適用于對網(wǎng)絡(luò)的帶寬、性能及容錯功能沒有過高要求的應(yīng)用,例如:門、方向盤、座椅、空調(diào)、照明燈等。
LIN總線幀結(jié)構(gòu):
LIN總線幀由幀頭和應(yīng)答兩部分組成,主機(jī)節(jié)點發(fā)送幀頭,從機(jī)節(jié)點接收幀頭并對幀頭所包含的信息進(jìn)行解析,然后決定是發(fā)送應(yīng)答,還是接收應(yīng)答,還是不做反應(yīng)。
幀頭包括同步間隔段、同步段以及PID(Protected Identifier,受保護(hù)ID)段,應(yīng)答包括數(shù)據(jù)段和校驗和段,如圖3所示。
LIN報文幀ID:
幀ID標(biāo)識了幀的類型和目的地。圖3中LIN總線幀中受保護(hù)ID段的前6位叫作幀ID(ID0~I(xiàn)D5),加上兩個奇偶校驗位(P0~P1)后稱作受保護(hù)ID。幀ID的范圍在0x00~0x3F之間,共64個。從機(jī)任務(wù)對于幀頭作出的反應(yīng)(接收/發(fā)送/忽略應(yīng)答部分)都是依據(jù)幀ID判斷的。依據(jù)幀ID不同將幀進(jìn)行分類,如表1所示。
表1幀的類型
校驗和方式選擇:
校驗和分為標(biāo)準(zhǔn)型校驗和及增強(qiáng)型校驗和,如表2所示。采用哪種校驗和是由主機(jī)節(jié)點所決定的,發(fā)布節(jié)點和各收聽節(jié)點根據(jù)幀ID來判斷采用哪種校驗和。
校驗方法將校驗對象的各字節(jié)按照二進(jìn)制“帶進(jìn)位加”的方式計算(每當(dāng)結(jié)果大于等于256時就減去255),并將所得最終的和逐位取反,以該結(jié)果作為要發(fā)送的校驗和。接收方根據(jù)校驗和類型,對接收數(shù)據(jù)作相同的帶進(jìn)位二進(jìn)制加法,最終的和不取反,并將該和與接收到的校驗和作加法,如果結(jié)果為0xFF,則校驗和無誤,這在一定程度上保證了數(shù)據(jù)傳輸?shù)恼_性。LIN總線幀結(jié)構(gòu)中的校驗和段是對幀中所傳輸?shù)膬?nèi)容進(jìn)行校驗。
表2校驗和類型
本實施方式中的LIN總線幀結(jié)構(gòu)如表3所示。由于LIN協(xié)議中數(shù)據(jù)段最大長度為8個字節(jié),本設(shè)置數(shù)據(jù)段長度為5個字節(jié),由于車燈的控制實際上是對應(yīng)GPIO引腳狀態(tài)的設(shè)置,在制作的具有封裝性的GPIO驅(qū)動中,引腳狀態(tài)的類型是無符號8位數(shù)即1個字節(jié),因此每個方位車燈的編碼也為1個字節(jié),便于解析與賦值。
表3通信幀格式
本實施方式中,主機(jī)模塊通過解析按鍵模塊發(fā)送的數(shù)據(jù)幀,判斷該按鍵對應(yīng)的車燈控制模式,然后將數(shù)據(jù)打包成符合表3的通信幀,通過LIN總線與從機(jī)模塊進(jìn)行通信,從而實現(xiàn)對相應(yīng)車燈的控制。
為了保證數(shù)據(jù)傳輸?shù)恼_性和可靠性,對主機(jī)模塊與從機(jī)模塊之間的通信增加了握手機(jī)制。在LIN總線幀的數(shù)據(jù)段增加1個字節(jié)的LIN狀態(tài)位,將LIN總線的狀態(tài)進(jìn)行枚舉分為IDLE,_BREAK,SYNCH,PROTECTED_IDENTIFIER,DATA_0,DATA_1,DATA_2,DATA_3,DATA_4,DATA_5,DATA_6,DATA_7,CHECKSUM,共13種狀態(tài)。LIN總線的初始狀態(tài)為IDLE,只有在從機(jī)模塊每次接收到LIN總線幀的一個字節(jié)后,將狀態(tài)位加1。主機(jī)模塊發(fā)送下字節(jié)數(shù)據(jù)之前,要檢查LIN的狀態(tài)位是否正確。如果不正確,程序進(jìn)入死循環(huán),即主機(jī)模塊和從機(jī)模塊不能通信,超時會自動復(fù)位,從而保證數(shù)據(jù)的正確性傳輸。
由上述技術(shù)方案可以看出,本發(fā)明具有以下有益效果:
CAN總線幀可以分出優(yōu)先級,可以進(jìn)行實時性控制,在抗干擾以及錯誤檢測等方面的性能大大提高;
LIN總線通信協(xié)議的數(shù)據(jù)格式與UART相同,基于普通UART/SCI接口的低成本硬件實現(xiàn)LIN節(jié)點間通信,成本較低。
對于本領(lǐng)域技術(shù)人員而言,顯然本發(fā)明不限于上述示范性實施例的細(xì)節(jié),而且在不背離本發(fā)明的精神或基本特征的情況下,能夠以其他的具體形式實現(xiàn)本發(fā)明。因此,無論從哪一點來看,均應(yīng)將實施例看作是示范性的,而且是非限制性的,本發(fā)明的范圍由所附權(quán)利要求而不是上述說明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化囊括在本發(fā)明內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標(biāo)記視為限制所涉及的權(quán)利要求。
此外,應(yīng)當(dāng)理解,雖然本說明書按照實施方式加以描述,但并非每個實施方式僅包含一個獨立的技術(shù)方案,說明書的這種敘述方式僅僅是為清楚起見,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)將說明書作為一個整體,各實施例中的技術(shù)方案也可以經(jīng)適當(dāng)組合,形成本領(lǐng)域技術(shù)人員可以理解的其他實施方式。