當前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]1 引言 CAN(Controller Area Network,即控制器局域網(wǎng))是上世紀80年代初由德國Bosch公司提出專用于汽車的串行總線。由于其數(shù)據(jù)傳輸率高,傳輸距離遠,實時性好,可靠性高等眾多優(yōu)點已在汽車工業(yè)、航空工業(yè)、工業(yè)

1  引言
CAN(Controller Area Network,即控制器局域網(wǎng))是上世紀80年代初由德國Bosch公司提出專用于汽車的串行總線。由于其數(shù)據(jù)傳輸率高,傳輸距離遠,實時性好,可靠性高等眾多優(yōu)點已在汽車工業(yè)、航空工業(yè)、工業(yè)測控等領(lǐng)域廣泛應(yīng)用。在某些通信性能要求不高的場合為了降低網(wǎng)絡(luò)控制的成本,1998年由汽車制造商奧迪、寶馬等汽車公司、火山通信技術(shù)公司以及半導(dǎo)體生產(chǎn)商摩托羅拉(Motorola)公司共同創(chuàng)建了LIN協(xié)會,其目的是為汽車網(wǎng)絡(luò)系統(tǒng)提供一個開放的A類(低速率、低成本)串行總線通信標準。由于LIN總線性價比極高,非常適合用于車燈、車門、座位等對通信要求不高,對成本敏感的部件。
目前,高級汽車一般采用分級網(wǎng)絡(luò)控制,對發(fā)動機、傳動系統(tǒng)、制動系統(tǒng)等重要,且對通信性能要求高的部件采用CAN總線控制;對車身,如車燈、車門等對通信性能要求不高,而對成本敏感的部件采用LIN總線控制,CAN總線與LIN總線間通過CAN/LIN網(wǎng)關(guān)數(shù)據(jù)轉(zhuǎn)換以實現(xiàn)CAN設(shè)備與LIN設(shè)備的相互訪問。這種分級網(wǎng)絡(luò)控制模式也適用于工業(yè)控制、安全防護等領(lǐng)域。本文討論一種基于實時操作系統(tǒng)Salvo的通用CAN/LIN網(wǎng)關(guān)。
2  網(wǎng)關(guān)模型
網(wǎng)關(guān)是連接兩個通信協(xié)議和結(jié)構(gòu)不同的網(wǎng)絡(luò)設(shè)施。對于CAN/LIN網(wǎng)關(guān),它的工作就是對信息拆除封裝和重新封裝,以使它們能被CAN總線和LIN總線上的網(wǎng)絡(luò)節(jié)點讀取,即實現(xiàn)CAN總線和LIN總線之間協(xié)議數(shù)據(jù)單元(PDU)的轉(zhuǎn)換。CAN/LIN網(wǎng)關(guān)的模型如圖1所示。
500)this.style.width=500;" border="0" />

依照國際標準化組織制定的開放系統(tǒng)互連參考模型OSI/RM,CAN總線和LIN總線都包括物理層和數(shù)據(jù)鏈路層。應(yīng)用層由各種應(yīng)用系統(tǒng)各自定義,其中CAN總線已有一些應(yīng)用較廣的高層協(xié)議,如CANOpen、NetDevice等。CAN/LIN網(wǎng)關(guān)的分層結(jié)構(gòu)如圖2所示。
500)this.style.width=500;" border="0" />

3  網(wǎng)關(guān)硬件
CAN總線和LIN總線協(xié)議數(shù)據(jù)單元的數(shù)據(jù)量小,系統(tǒng)采用高速8位微處理器――Microchip新型增強FLASH單片機PIC18F4680。PIC18F4680片內(nèi)集成64KB FLASHROM作為程序存儲器、3KB RAM作為數(shù)據(jù)存儲器,能滿足處理CAN總線和LIN總線協(xié)議數(shù)據(jù)單元轉(zhuǎn)換所需的程序代碼和數(shù)據(jù)存儲的需求;PIC18F4680片內(nèi)集成1KB EEPROM可用于存放系統(tǒng)狀態(tài)信息,即使掉電重啟也能恢復(fù)到掉電前狀態(tài)。另外,PIC18F4680片內(nèi)集成支持CAN2.0B的CAN控制模塊,CAN數(shù)據(jù)鏈路層協(xié)議可由CAN控制模塊執(zhí)行,從而減輕MCU處理CAN協(xié)議的數(shù)據(jù)處理壓力;PIC18F4680還集成可支持LIN1.3的USART,進一步減輕MCU處理LIN協(xié)議的數(shù)據(jù)處理壓力。
     為增強CAN總線的抗干擾能力,CAN總線驅(qū)動器MCP2551與PIC18F4680間采用高速光偶6N137隔離,并且獨立供電,PIC18F4680采用LIN總線驅(qū)動器MCP201的電源模塊供電;MCP2551采用專用DC/DC變換器供電。
實時多任務(wù)系統(tǒng)對于相同優(yōu)先級任務(wù)采用以時隙為單位的時間片循環(huán)方式(round-robin)切換。為提高時隙精度,從而提高切換時間精度,PIC18F4680的定時計數(shù)器1(TMR1)外接標準時鐘晶振32768Hz。系統(tǒng)時基由TMR1通過標準時鐘晶振振蕩產(chǎn)生。網(wǎng)關(guān)硬件電路如圖3所示。
500)this.style.width=500;" border="0" />

4  網(wǎng)關(guān)軟件
CAN總線與LIN總線比較相似,協(xié)議數(shù)據(jù)單元比較接近,網(wǎng)關(guān)軟件數(shù)據(jù)處理量不大;而且,網(wǎng)關(guān)軟件本身功能相對單一,一般不需要操作系統(tǒng)支持。但本文討論的是一個通用網(wǎng)關(guān),針對不同場合系統(tǒng)功能需要適當?shù)牟眉艉蛿U充,有操作系統(tǒng)的支持更便于系統(tǒng)功能的裁剪和擴充,提高系統(tǒng)的可移植性,增加系統(tǒng)通用性。另外,有操作系統(tǒng)的支持系統(tǒng)開發(fā)時間大大縮短,而且可靠性也大大提高。
4.1  實時操作系統(tǒng)Salvo
系統(tǒng)軟件開發(fā)采用實時操作系統(tǒng)RTOS會占用部分系統(tǒng)硬件資源,目前大多數(shù)RTOS 適用于ARM 或X86 等可配備豐富硬件資源的微處理器系統(tǒng)。實時操作系統(tǒng)Salvo 占用系統(tǒng)硬件資源少,且功能強大,適合硬件資源相對貧乏的單片機,尤其是存儲器資源貧乏的PIC 系列單片機。Salvo 占用程序存儲器容量取決于用戶調(diào)用的系統(tǒng)函數(shù),一般典型系統(tǒng)占用1~2K 程序存儲器。占用數(shù)據(jù)存儲器容量取決于用戶定義的變量、任務(wù)和事件的數(shù)量,以PIC16 系列單片機為例,每個全局變量占10b,任務(wù)占5b,事件占3b,一般典型系統(tǒng)占用50~100b 數(shù)據(jù)存儲器。
Salvo 是一個基于優(yōu)先級任務(wù)切換,支持事件驅(qū)動的多任務(wù)實時操作系統(tǒng)。Salvo 共支持16 個任務(wù)優(yōu)先級,且多個任務(wù)可以共用一個優(yōu)先級,任務(wù)按優(yōu)先級高低切換,對于多個同一優(yōu)先級的任務(wù),以時間片循環(huán)方式切換。Salvo 支持任務(wù)和事件的數(shù)量不限,取決于RAM 的大小。
4.2  任務(wù)分割及功能確定
基于RTOS 的軟件開發(fā)主要工作是任務(wù)分割、任務(wù)功能確定和任務(wù)代碼編寫。任務(wù)分割的基本原則是任務(wù)內(nèi)的內(nèi)聚度強而任務(wù)間的偶合性弱。為減少Salvo在任務(wù)切換時占用過多的系統(tǒng)資源,任務(wù)分割盡量減少任務(wù)數(shù),系統(tǒng)分割成5個任務(wù)(參見圖4):
500)this.style.width=500;" border="0" />

CAN_TXD任務(wù):由ENCANTXD信號觸發(fā),將經(jīng)PDU_Conversion任務(wù)轉(zhuǎn)換的數(shù)據(jù)送到CAN模塊的發(fā)送緩沖寄存器,并啟動CAN發(fā)送器發(fā)送數(shù)據(jù)。
CAN_RXD任務(wù):由ISR_CANRXD中斷服務(wù)程序發(fā)送ENCANRXD事件觸發(fā),接收CAN模塊接收緩沖器的數(shù)據(jù),發(fā)送CANTOLIN信號觸發(fā)PDU_Conversion任務(wù)。
LIN_RXD任務(wù):由ISR_LINRXD中斷服務(wù)程序發(fā)送ENLINRXD事件觸發(fā),接收USART模塊發(fā)送來的數(shù)據(jù)。根據(jù)LIN協(xié)議分析標識場確定報文的內(nèi)容和長度,分析校驗和場確定報文的正確性,發(fā)送LINTOCAN信號觸發(fā)PDU_Conversion任務(wù)。
LIN¬_TXD任務(wù):由ENLINTXD信號觸發(fā),將經(jīng)PDU_Conversion任務(wù)轉(zhuǎn)換的數(shù)據(jù)送到USART模塊,并控制USART模塊安LIN協(xié)議發(fā)送數(shù)據(jù)。
PDU_Conversion任務(wù):由LINTOCAN或CANTOLIN信號觸發(fā),將服務(wù)數(shù)據(jù)單元SDU轉(zhuǎn)換成CAN協(xié)議數(shù)據(jù)單元或LIN協(xié)議數(shù)據(jù)單元,并通過ENCANTXD信號或ENNLINTXD信號觸發(fā)CAN_TXD任務(wù)或LIN_TXD任務(wù)向CAN總線或LIN總線發(fā)送數(shù)據(jù)。
4.3  任務(wù)間通信及任務(wù)優(yōu)先級
現(xiàn)場總線一般對實時性要求較高,為提高系統(tǒng)的實時性,減少數(shù)據(jù)在網(wǎng)關(guān)的延時,系統(tǒng)采用中斷方式接收CAN總線和LIN總線的數(shù)據(jù)。若CAN總線上有節(jié)點發(fā)送數(shù)據(jù),網(wǎng)關(guān)的CAN模塊接收器接收數(shù)據(jù),存于信息集中緩沖器MAB,同時根據(jù)接收屏蔽器信息,比較接收過濾器與接收信息標示區(qū)是否相符,若相符將信息集中緩沖器信息裝入接收緩沖器(RXB0或RXB1,PIC18F4680的CAN模塊有兩個接收緩沖器),并通過中斷標志寄存器PIR3的RXB0IF或RXB1IF(CAN模塊接收緩沖器中斷標志位)申請中斷,CPU進入ISR_CANRXD中斷服務(wù)程序,在ISR_CANRXD中發(fā)送ENCANRXD事件觸發(fā)CAN_RXD任務(wù)啟動。CAN_RXD任務(wù)讀取接收緩沖器中SDU數(shù)據(jù),存入一個CANSDU全局數(shù)組,并發(fā)送CANTOLIN信號觸發(fā)PDU_Conversion任務(wù)啟動。PDU_Conversion任務(wù)接收全局數(shù)組CANSDU數(shù)據(jù),轉(zhuǎn)換成LIN總線的協(xié)議數(shù)據(jù)單元,存于LINPDU全局數(shù)組,并發(fā)送ENLINTXD信號觸發(fā)LIN_TXD任務(wù)啟動。LIN_TXD任務(wù)接收全局數(shù)組LINPDU數(shù)據(jù),控制USART模塊按LIN總線協(xié)議發(fā)送數(shù)據(jù)。以上是CAN/LIN網(wǎng)關(guān)從CAN總線接收數(shù)據(jù)發(fā)送到LIN總線的各任務(wù)同步及通信過程,CAN/LIN網(wǎng)關(guān)從LIN總線接收數(shù)據(jù)發(fā)送到CAN總線的各任務(wù)同步及通信過程基本與其相似。
各任務(wù)和中斷服務(wù)程序優(yōu)先級的設(shè)置對系統(tǒng)完成正常功能影響較大。為防止CAN總線和LIN總線上數(shù)據(jù)丟失,接收任務(wù)(CAN_RXD任務(wù)和LIN_RXD任務(wù))優(yōu)先級高于發(fā)送任務(wù)優(yōu)先級(CAN_TXD任務(wù)和LIN_TXD任務(wù))。為防止大量數(shù)據(jù)在網(wǎng)關(guān)中來不及轉(zhuǎn)換或發(fā)送而丟失,系統(tǒng)開辟了多個接收緩沖器(CANSDU和LINSDU數(shù)組)和發(fā)送緩沖器(LINPDU和CANPDU數(shù)組)。PIC18F4680的CAN模塊是獨立的硬件電路,可以不依賴于CPU獨立工作,且內(nèi)有3個接收緩沖器(包括MAB)和3個發(fā)送緩沖器,而LIN協(xié)議的數(shù)據(jù)處理由CPU的程序控制USART完成,為防止LIN總線數(shù)據(jù)丟失,LIN總線任務(wù)(LIN_RXD任務(wù)和LIN_TXD任務(wù))優(yōu)先級高于CAN總線任務(wù)(CAN_RXD任務(wù)和CAN_TXD任務(wù))。系統(tǒng)各任務(wù)和中斷服務(wù)程序的優(yōu)先級參見表1。
500)this.style.width=500;" border="0" />

5  結(jié)論
基于CAN/LIN總線的分級網(wǎng)絡(luò)控制系統(tǒng)正逐漸從汽車電子領(lǐng)域推廣到其它,如:工業(yè)測控、安全防護等鄰域中應(yīng)用,在基于CAN/LIN總線的分級網(wǎng)絡(luò)控制系統(tǒng)中CAN/LIN網(wǎng)關(guān)是一個核心部件,它為CAN總線設(shè)備和LIN總線設(shè)備的互訪提供連接橋梁。本文討論的基于Salvo的通用CAN/LIN網(wǎng)關(guān)采用新型集成CAN2.0B模塊和可支持LIN1.3的USART模塊的PIC18F4680微處理器,軟件設(shè)計采用商用RTOS――Salvo,大大提高了系統(tǒng)的穩(wěn)定性和可靠性,增加了系統(tǒng)的可移植性和可擴展性,通過系統(tǒng)功能的裁剪和擴充可應(yīng)用于各種分級網(wǎng)絡(luò)控制領(lǐng)域,是一種通用性很強的CAN/LIN網(wǎng)關(guān)。
本文作者創(chuàng)新點:采用RTOS――Salvo設(shè)計一個通用CAN/LIN網(wǎng)關(guān),傳統(tǒng)的CAN/LIN網(wǎng)關(guān)主要專用于汽車電子通用性不強,采用RTOS設(shè)計的網(wǎng)關(guān)功能裁剪和擴充方便,可移植性和通用性大大增強。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉