郭創建 王琳煜

摘 ?要:隨著自動駕駛、車聯網等汽車領域技術的發展,傳統CAN總線已逐漸無法滿足高帶寬、高傳輸速率的要求,而CAN FD的到來,為CAN總線帶來了帶寬及速率的升級。雖然CAN FD為CAN總線帶來了升級,但目前CAN FD仍未普及,因此市場上帶CAN FD控制器的微控制器仍為數不多,或微控制器所帶的CAN FD控制器數不足以支撐應用需求,為此我們采用MCP2517FD——一款SPI轉CAN FD控制器模塊,來擴展CAN FD控制器。微控制器僅需支持SPI控制器,即可擴展CAN FD,從而實現CAN FD通信。本文從探究CAN總線技術出發,比較了CAN與CAN FD的差異。同時,對MCP2517FD控制器的相關特性進行說明,闡述了基于MCP2517FD的CAN FD通信實現,驗證了MCP2517FD模塊CAN FD報文收發的性能。
關鍵詞:有線通信技術;MCP2517FD;CAN FD通信;CAN總線
中圖分類號:TN925 ? ? 文獻標識碼:A 文章編號:2096-4706(2019)16-0067-03
Abstract:With the development of auto fields such as automatic driving and internet of vehicles,the traditional CAN bus has been unable to meet the requirements of high bandwidth and high transmission rate. However,the arrival of CAN FD has brought the upgrade of bandwidth and rate for CAN bus. Although CAN FD brings an upgrade to CAN bus,CAN FD is still not popular at present. There are still a few microcontrollers with CAN FD controller in the market,or the number of CAN FD controllers with microcontroller is not enough to support the application demand. Therefore,we adopt MCP2517FD——an SPI to CAN FD controller module to expand CAN FD controller. The microcontroller only needs to support SPI controller to extend CAN FD and realize CAN FD communication. Based on the research of CAN bus technology,this paper compares the differences between CAN and CAN FD. At the same time,the related characteristics of MCP2517FD controller are explained,the CAN FD communication implementation based on MCP2517FD is expounded,and the performance of MCP2517FD module CAN FD message send-receive is verified.
Keywords:wired communication technology;MCP2517FD;CAN FD communication;CAN bus
0 ?引 ?言
當今社會,汽車已經成為人們生活中不可或缺的一部分。人們希望汽車不僅僅是一種代步工具,更希望汽車智能化,為生活帶來更多的便利,因此自動駕駛、車聯網等汽車智能化技術得到了快速發展。而隨著汽車智能化技術的發展,越來越多的功能集成到汽車上,對汽車通訊上的數據吞吐量和數據傳輸速率要求越來越高,傳統的CAN總線應對這些新技術顯得越來越力不從心。因此,CAN FD應運而生。CAN FD的出現,為傳統的CAN總線帶來了數據吞吐量與傳輸速率的提升,CAN FD傳輸數據量由傳統CAN的8字節升級到了64字節,傳輸速率由傳統CAN的最高1Mbps升級到了最高15Mbps。雖然CAN FD為CAN總線帶來了升級,但目前市面上帶有CAN FD控制器的MCU(微控制單元)并不多,或MCU所帶CAN FD控制器數不足以支撐用戶的應用需求,為此我們采用外置的SPI轉CAN FD模塊——MCP2517FD,來實現CAN FD控制器的擴展。目前,絕大部分MCU都帶有SPI控制器,通過MCU的SPI總線來與MCP2517FD通訊,可快速實現CAN FD控制器的擴展,從而實現CAN FD通信。
1 ?CAN總線技術
1.1 ?CAN總線概述
CAN(Controller Area Network)總線是由Bosch公司發明的一種基于消息廣播模式的串行通信總線,它起初用于實現汽車內ECU(電子控制單元)之間可靠的通信,后因其簡單、實用、可靠等特點,而被廣泛應用于工業自動化、船舶、醫療等其他領域。CAN總線是國際上應用最廣泛的現場總線之一,目前已經成為汽車計算機控制系統和嵌入式工業控制局域網的標準總線。
CAN總線采用串行通信方式,即同一時刻只傳送一位。其通常使用兩根電纜(CANH和CANL)傳輸信號,使用差分傳輸方式,具有較強的抗干擾能力。每一位有兩種可能的電平狀態:當其中的CANH(2.5V)與CANL(2.5V)壓差為0V時,為隱性電平;當CANH(3.5V)與CANL(1.5V)壓差為2V時為顯性電平。
CAN總線傳輸的波特率最高可達1Mbps,在該波特率下最高可傳輸40m。
1.2 ?CAN報文格式
CAN報文支持兩種報文格式:標準幀(CAN2.0A定義)和擴展幀(CAN2.0B定義)。其主要區別在于幀ID的位數不同,標準幀ID為11位,擴展幀ID為29位。以上幀格式被稱為數據幀,而除了數據幀之外,CAN報文還定義了遠程幀。遠程幀不包含數據,主要用于遙控通知目標節點。
一幀CAN報文分為:幀起始、仲裁段、控制段、數據段、CRC(循環冗余校驗)段、ACK段(應答段)、幀結束。
幀起始(SOF)由一個顯性位組成,只能在總線空閑時發送。
仲裁段主要包含幀ID,通過幀ID來解決報文仲裁。
控制段由6個位構成,標準幀和擴展幀的兩位保留位含義稍有不同,但都包含四位的數據長度碼(DLC),這個值決定了數據段的字節長度。遠程幀中,由于不包含數據段,則標明請求發送的字節數。
數據段可包含0~8個字節數據,從最高位(MSB)開始傳送。
CRC段包含15位CRC序列和1位CRC界定符,用于對當前報文校驗,檢測當前報文傳輸是否正確。
ACK段包含1位的應答間隙和1位的應答界定符。發送器在發送CRC界定符后,會再發送2個隱性位,分別是應答間隙、應答界定符。當接收到正確報文,總線上的接收器都會在應答間隙,將隱性電平修改為顯性電平,做出應答。
幀結束(EOF)由7個隱性位組成。
1.3 ?CAN FD協議升級
CAN FD繼承了CAN總線的主要特性,提高了CAN總線的網絡通信帶寬,改善了錯誤幀漏檢率,同時可以保持網絡系統中的物理層不變。其相對于傳統CAN總線的更新如下。
1.3.1 ?傳輸速率的變化
CAN FD的速率包含兩個段的速率:仲裁段和數據段。其中仲裁段包括仲裁域和ACK域等部分,該段沿用CAN 2.0的規范,最高速率為1Mbit/s;而數據段包含數據與CRC段,其波特率是可變速的,即可與仲裁段不一致,但必須高于或等于仲裁段,數據段波特率最高可達15Mbit/s(最高波特率由控制器決定)。
1.3.2 ?傳輸報文長度的變化
CAN FD對數據場的長度作了很大的補充,數據長度碼(DLC)最大可以傳輸64字節有效數據,這意味著CAN FD具有更高的有效傳輸負載。
1.3.3 ?報文格式的變化
CAN FD數據幀在控制場中新添加了EDL位、BRS位、ESI位。
EDL位用于判斷報文是否為CAN FD報文,該位為原CAN幀中的保留位,隱性表示CAN FD報文,顯性表示CAN報文。
BRS位表示位速率轉換,表示數據段波特率是否與標稱段不一致。
ESI位表示節點當前錯誤狀態,可判斷當前發送該報文的節點為主動錯誤或被動錯誤狀態。
1.3.4 ?CRC段的變化
CAN FD對CRC段做了改善,CRC以含填充位的位流進行計算,改善了錯誤幀漏檢率。
2 ?MCP2517FD通信實現
2.1 ?MCP2517FD模塊概述
MCP2517FD是Mircochip(微芯)公司推出的一款低成本、小尺寸的外部CAN FD控制器。其可通過SPI接口輕松地添加到微控制器中,以解決微控制器中缺少CAN FD外設或沒有足夠CAN FD控制器的問題。其有如下特點:
(1)符合ISO 11898-1:2015標準;
(2)支持CAN2.0B和CAN FD;
(3)SPI時鐘速度高達20MHz;
(4)31個FIFO可配置為發送或接收;
(5)支持驗收濾波,最高支持32條濾波;
(6)仲裁域波特率高達1Mbps,數據波特率高達8Mbps。
2.2 ?硬件設計
電路主要分為微控制器(RT1052)、MCP2517FD、CAN FD收發器。其硬件設計如圖1所示。
微控制器(MCU)部分采用NXP公司RT1052(Cortex- M7),其主頻可高達528MHz。
MCU與MCP2517FD通過SPI連接,用于數據通訊。此外,MCU提供一個GPIO與MCP2517FD的INT管腳連接,用于觸發中斷,以通知MCU讀取接收報文、報文發送完成或總線錯誤等信息。
收發器采用致遠電子的CTM3MFD隔離CAN FD收發器,其支持CAN FD波特率可高達5Mbps。
2.3 ?軟件實現
軟件基于ZLG公司的AWorks嵌入式物聯網軟件開發平臺實現,其主要分為MCP2517FD初始化、報文發送、報文接收三個部分。
2.3.1 ?模塊初始化
模塊初始化部分主要完成對MCP2517FD模塊的初始化配置,包括CAN FD模式配置、控制器工作模式(正常/只聽)配置、波特率配置、報文收發FIFO配置、配置中斷觸發、啟動控制器等。
2.3.2 ?報文發送
調用報文發送接口后,將軟件向模塊寫入一幀CAN FD報文,等待發送完成中斷,當得知報文發送完成后,繼續下幀報文發送。由于MCP2517FD無法獲取發送完成標志,僅能依賴發送FIFO是否為空標志判斷是否發送。而默認未發送數據前,發送FIFO為空,則會一直產生中斷。因此,軟件僅設置FIFO為1幀報文深度。每次發送時,在填充報文后使能發送FIFO為空中斷。發送完成后進入中斷后,關閉發送FIFO為空的中斷。
2.3.3 ?報文接收
當接收到CAN(FD)報文時,MCP2517FD模塊INT管腳將拉低,觸發MCU中斷。觸發中斷后,軟件將通知消息處理線程。線程將讀取報文數據,填入緩沖區中,等用戶讀取報文接口。
2.4 ?模塊收發性能
在微控制器主頻528MHz,MCP2517FD時鐘為40MHz,SPI傳輸速率在20MHz條件下,可實現接收CAN FD報文不丟幀(波特率:1Mbps/5Mbps),發送長度為64字節的CAN FD報文可達3500幀每秒。
3 ?結 ?論
本文針對CAN總線技術及CAN升級后的CAN FD帶來的變化進行了探究,分析了CAN FD帶來的數據吞吐量和傳輸速率上的提升。通過對CAN FD技術的探究,本文給出了基于MCP2517FD的CAN FD通信實現,解決了微控制器無CAN FD控制器或沒有足夠CAN FD控制器情況下的CAN FD通信實現的問題。同時基于該實驗驗證了MCP2517FD模塊的收發性能。
參考文獻:
[1] 周立功.CAN-bus現場總線基礎教程 [M].北京:航空航天大學出版社,2012.
[2] 鄔寬明.CAN總線原理和應用系統設計 [M].北京:航空航天大學出版社,2002.
作者簡介:郭創建(1991-),男,漢族,廣東汕頭人,嵌入式軟件工程師,本科,研究方向:通信技術及應用;王琳煜(1992-),男,漢族,廣東汕頭人,嵌入式軟件工程師,本科,研究方向:通信技術及應用。