引言
在當前的汽車產業中,出于對安全性、舒適性、方便性、低公害、低成本的要求,各種各樣的電子控制系統被開發了出來。由于這些系統之間通信所用的數據類型及對可靠性的要求不盡相同,由多條總線構成的情況很多,線束的數量也隨之增加。為適應“減少線束的數量”、“通過多個LAN,進行大量數據的高速通信”的需要,1986年德國電氣商博世公司開發出面向汽車的CAN(Controller Area Network)通信協議。此后,CAN通過ISO11898及ISO11519進行了標準化,現在在歐洲已是汽車網絡的標準協議。CAN即控制器局域網,它能有效支持高安全等級的分布實時控制。CAN的應用范圍很廣,從高速的網絡到低價位的多路接線都可以使用CAN。本文通過微控制器LPC2109的CAN功能接口,實現冷藏車溫度數據在CAN總線上的傳輸。
CAN總線的基本特征
CAN總線有如下基本特點:
廢除傳統的站地址編碼,代之以對通信數據塊進行編碼,可以多主方式工作;采用非破壞性仲裁技術,當兩個節點同時向網絡上傳送數據時,優先級低的節點主動停止數據發送,而優先級高的節點可不受影響繼續傳輸數據,有效避免了總線沖突;采用短幀結構,每一幀的有效字節數為8個,數據傳輸時間短,受干擾的概率低,重新發送的時間短;每幀數據都有CRC校驗及其他檢錯措施,保證了數據傳輸的高可靠性,適于在高干擾環境下使用;節點在錯誤嚴重的情況下,具有自動關閉總線的功能,切斷它與總線的聯系,以使總線上其他操作不受影響;可以點對點,一對多及廣播集中方式傳送和接受數據。
CAN總線的優點:
具有實時性強、傳輸距離較遠、抗電磁干擾能力強、成本低等優點;采用雙線串行通信方式,檢錯能力強,可在高噪聲干擾環境中工作;具有優先權和仲裁功能,多個控制模塊通過CAN控制器掛到CAN-bus上,形成多主機局部網絡;可根據報文的ID決定接收或屏蔽該報文;可靠的錯誤處理和檢錯機制;發送的信息遭到破壞后,可自動重發;節點在錯誤嚴重的情況下具有自動退出總線的功能;報文不包含源地址或目標地址,僅用標志符來指示功能信息、優先級信息。
硬件電路的設計方案
CAN總線接口芯片的選擇
目前廣泛流行的CAN總線器件有兩大類:一類是獨立的CAN控制器,如PCA82C200、SJAl000及等,另一類是帶有片上CAN的微控制器,如STM32F103、LPC2109等。設計選用PHILIPS(飛利浦)公司的LPC2109微控制器以及PCA82C250總線收發器。
LPC2109有8K的RAM空間和64K的Flash空間,足以燒寫和運行CAN通訊代碼,工作溫度-40℃~+85℃,適合冷藏車的工作環境。因為LPC2109自帶高性能CAN通訊接口,省去了使用獨立CAN控制器的開銷。而且,相對于獨立的CAN控制器而言,LPC2109的CAN接口更加完善。在傳統的獨立CAN控制器SJA1000中,接收過濾只能滿足一些規律性較高的ID篩選過濾,或個數較少的ID(一般小于10~15個)進行任意篩選過濾,難以實現更復雜的任意ID進行篩選過濾,這無疑增加了系統軟件設計及運行時負擔。LPC2109微控制器中為自身CAN控制器提供了全局的接收標識符查詢功能。它包含一個512×32(2k字節)的RAM,通過軟件處理,可在RAM中存放1~5個標識符表格。整個AFRM可容納1024個標準標識符或512個擴展標識符,或兩種類型混合的標識符。由于允許的表格范圍有2k字節,所以能容易地滿足設計復雜ID接收過濾的要求。
總線收發器P C A 8 2 C 2 5 0是LPC2109微控制器和物理傳輸線路之間的接口,它們可以用高達1Mbit/s的位速率在兩條有差動電壓的總線電纜上傳輸數據。最低-40℃的工作溫度決定它可以穩定地工作在冷藏車中。
溫度采集芯片的選擇
設計選用DALLAS(達拉斯)公司的DS18B20溫度傳感器,測溫范圍-55℃~+125℃,固有測溫分辨率0.5℃,適合冷凍庫等測溫環境使用。DS18B20擁有獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通訊。
硬件設計原理框圖
硬件設計原理框圖參見圖1。
軟件設計方案
溫度采集程序設計
DS18B20在使用前需要初始化,根據芯片的時序特點,通過復位和置位芯片引腳,編寫初始化函數Init_DS18B20( ),讀函數unsigned char ReadOneChar( )以及寫函數WriteOneChar(unsigned char dat)。
在初始化完成后,微控制器向溫度傳感器DS18B20發送啟動溫度轉換命令0x44可以啟動溫度采集,再通過
CAN功能的初始化
通過對相關寄存器的訪問和修改,設置CAN通訊波特率,CAN驗收濾波方式,錯誤警告邊界以及CAN通訊的中斷處理方式,初始化完成之后,LPC2109的CAN模塊進入工作模式。在初始化的過程中用到的寄存器有工作模式寄存器CANMOD,中斷使能寄存器CANIER,總線時序寄存器CANBTR,出錯警告邊界寄存器CANEWL,命令寄存器CANCMR等。因為需要對總線上的數據進行過濾,需要設置在驗收過濾RAM中設置需要接收的節點ID號。初始化流程圖如圖2所示。
CAN數據的發送與接收
接收程序是通過CAN接收中斷來實現的,中斷的設置在初始化中完成。當接收到相應節點發出的數據時,觸發CAN接收中斷,LPC2109開始處理中斷服務子程序,只需從接收緩沖區中讀出數據。通過分析該數據,如果發現該數據是一個節點發出的讀取冷藏車溫度的命令,那么微控制器將啟動溫度傳感器DS18B20的溫度采集函數,并將該函數的返回值通過CAN數據發送程序發送給對應節點。數據發送程序將取出的溫度值組信息幀,將信息幀發送到CAN控制器的發送緩沖區中,同時把LPC2109的CAN節點ID地址,填入發送幀信息寄存器中。最終通過置位命令寄存器CANCMR中的相應位,啟動CAN緩沖區的數據發送。
結語
基于LPC2109的冷藏車CAN總線溫度采集系統將具有高可靠性和良好錯誤檢測能力的CAN總線用于冷藏車的溫度采集上,極大地提高了當前冷藏車在溫度采集上的實時性和準確性,另外,由于LPC2109微控制器自身集成CAN控制器,不用再選擇獨立CAN控制器,大大降低了硬件成本。
參考文獻:
[1] 杜春雷.ARM體系結構與編程[M].北京:清華大學出版社,2003
[2] 王黎明,夏立,邵英,等.CAN現場總線系統的設計與應用[M].北京:電子工業出版社,2008
[3] 饒運濤,鄒繼軍.現場總線CAN原理與技術應用[M].北京:北京航空航天大學出版社,2003
[4] NXP Inc..LPC21xx and LPC22xx User manual[Z].2008
[5] 崔清玲.基于CAN總線的采集模塊在機艙監測系統中的應用研究[D].武漢理工大學,2008