can總線基本概念
CAN 是Controller Area Network 的縮寫(以下稱為CAN),是ISO國際標準化的串行通信協議。在汽車產業中,出于對安全性、舒適性、方便性、低公害、低成本的要求,各種各樣的電子控制 系統被開發了出來。由于這些系統之間通信所用的數據類型及對可靠性的要求不盡相同,由多條總線構成的情況很多,線束的數量也隨之增加。為適應“減少線束的 數量”、“通過多個LAN,進行大量數據的高速通信”的需要,1986 年德國電氣商博世公司開發出面向汽車的CAN 通信協議。此后,CAN 通過ISO11898 及ISO11519 進行了標準化,在歐洲已是汽車網絡的標準協議。
CAN總線使用總結
一,can總線是由德國BOSCH公司提出,目的是為了解決汽車內部硬件信號線的復雜走線
二,CAN:controller area area:控制器局域網絡
三,can總線的特點:
與一般的通信總線相比,CAN總線的數據通信具有突出的可靠性、實時性和靈活性。
1,CAN為多主方式工作,網絡上任一節均可在任意時刻主動向網絡上其他節點發送信息,不分主從
?。玻茫粒喂澒濣c只需通過對報文的標志符進行濾波就可以方便的實現點對點,點對多點及全局廣播等
幾種傳送接收方式;
?。?,CAN總線采用非破壞總線仲裁技術。當發生沖突時,優先級低的節點自動退出發送,而優先級高
的節點可不受影響地繼續傳輸數據,從而大大節省了總線沖突仲裁時間。尤其是在負載很重的情況下,也不
會出現癱瘓情況(以太網則可能)。
?。?,在報文標識符上,CAN上的節點分成不同的優先級,可滿足不同的實時要求,優先級高的數據
最多可在134us內得到傳輸;
?。?,CAN的直接通信距離最遠可達10KM(速率在5kbps以下),通信速率最高可達1Mbps,
(此時通信距離最長為40m);
6,CAN上的節點數主要取決于總線驅動電路,目前可達110個;
7,報文采用短幀結構,傳輸時間短,受干擾概率低,保證了數據出錯率極低;
?。?,CAN的每幀信息都在CRC校驗及其他檢錯措施,具有極好的檢錯效果;
?。?,CAN的通信介質為雙絞線、同軸電纜或光纖,選擇靈活;
10,CAN節點在錯誤嚴重的情況下具有自動關閉輸出功能,以使總線上其他節點的操作不受影響;
?。保保茫粒慰偩€具有較高的性價比。
四,can總線的系統構成及數據傳輸原理
(一),系統構成
1,CAN控制器:接收來自微控制器的數據,并處理發送給收發器,同時,也接收來自收發器的數據,處理傳給微控制器。
2,CAN收發器:總線驅動
四,can總線的的通信協議
(一),網絡層次結構
可分為三個層:目標層,傳送層,物理層,如下圖所示
物理層:規定了信號的傳輸過程中的電氣特性(如傳輸方式及傳輸介質)及信號特性;
傳送層:幀組織,總線仲裁,錯誤檢測等;
目標層:信息識別,為應用層提供接口;
其上述分層按iso/osi也可以分為兩層:物理層,數據鏈路層(即目標層和傳送層)。
(二),位表達
CAN協議中有兩種邏輯位表達方式
1. 當總線線上發送的都是弱位時,總線的狀態就是弱位(邏輯1);
2.當總線上有強位出現時,弱位信號讓位于強位信號,即總線上顯示強位信號(邏輯0);
(三),幀類型
1. 數據幀:傳送數據,攜帶數據從一個節點到另一個節點或多個節點,結構如下圖(標準格式)所示。
數據幀由7種不同的位域組成:起始域,仲裁域,控制域,數據據域,CRC域,應答域,幀結束域。
起始域:表示數據幀或遠程幀的開始,它由一個強位組成,主要用于接收狀態下的CAN控制器的硬同
步。
仲裁域:由信息標志符及RTR位組成,當多個CAN控制器同時發送數據時,在仲裁域要進行面向位的
沖突仲裁。對于標準格式里,標志符由11位組成,用于提供信息地址和優先級,其發送的順序為ID28~ID18
(注:高7位不允許均為弱的現象);對于擴展格式,仲裁域由11位的基本ID(ID28~ID18)和18位
的擴展ID(ID17~ID0)組成,格式與標準格式略有不同,詳見書P25。RTR為:遠地請求發
送位,數據幀里為顯性,遠程幀里為隱性。當can總線上接收節點想請求某節點發送數據時,就向網絡上發
送一遠程幀,用標志符指出節點地址,同時置RTR位為高。如果尋址節點立即發送數據,則使用相同的標
志符,總線不會產生沖突,因為此時數據幀的RTR位為低(數據強位)。在擴展幀里SRR位取代了RTR
位。
控制域:由6個位組成,包括2個保留位(IDE,ro)用于CAN協議擴展,4位數據長度碼,允許數據的
長度值為0~8。
數據域:發送緩沖區按照長度碼指示的數據長度進行發送,接收的數據同樣如此,第一個字節的最高有
效位第一個被發送/接收。
循環冗余校驗域(CRC):由CRC序列位(15位)和一個CRC邊界符(1個弱位)組成。CRC的范圍
包括起始域、仲裁域、控制域、數據域、CRC序列。之所以選用這種幀校驗方式,因為:這種CRC碼對于
少于127位的幀最佳。
應答域:應答域由發送方發送的兩位弱位組成(應答空隙和應答分界位),當接收器正確地接收到有
效的報文時,接收器就會在應答間隙期間(發送ACK信號)向發送器發送一顯性位以示應答。因此發送節
點一直監測總線信號以確認網絡中至少有一個節點正確接收到發信息。應答分界位是應答域中的第二個弱
位,有此可見,應答空隙兩邊有兩個弱位:CRC分界位和應答分界位。
幀結束域:每一個數據幀或遠程幀一串7位的弱位幀結束域結束。
2. 遠程幀:請求數據
遠程幀由6個域組成:起始域、仲裁域、控制域、CRC域、應答域、幀結束域。
遠程幀與數據幀不同之處在于:RTR位為高,無數據域。
3. 錯誤指示幀:用于指示傳送過程中的錯誤信息
錯誤指示幀由兩個不同的域組成:第一個域反映來自控制器的錯誤標志,第二個域為錯誤分界符。
錯誤標志:有兩種,一個由6個強位組成的主動錯誤標志;另一個由6個弱位組成的被動錯誤標志,
它是被其他CAN控制器強位改寫。 處于主動錯誤狀態的CAN節點檢測到錯誤發出主動錯誤標志,該錯誤標
志不滿足位填充規則,或者是破壞應答域或結束域固定格式,所有其他節點都檢測到錯誤狀態,并發出該錯
誤標志。因此,這些從總線上監測到的強位串是不同節點發出錯誤標志的結果,這一標志最短為6個,最長
為12個。被動錯誤標志(不太理解。。。后續)
錯誤分界:它由8個弱位組成,與過載分界有相同的格式,當錯誤標志發生后,每一個CAN節點監測
總線,直到檢測到一個強位出現,這表明所有CAN節點已經完成錯誤標志的發送,并開始發送8個弱位的分
界符,之后網絡上的主動錯誤節點便可同時開始其他的發送。如果數據幀或遠程幀在發送過程中發現錯誤
后,當前的信息作廢,并啟動重新發送。如果CAN節點發現錯誤指示幀錯誤,則重發,當連續多次出現此錯
誤時,則相應的節點變為被動錯誤節點。為正確結束錯誤標志,被動態節點需要至少3個位周期。
4. 過載幀:用于后續幀的延時
過載幀由兩個域組成:過載標志和過載分界。
以下情況可以導致過載幀發送:
(1). 接收未準備好即接收方需要過多的時間處理當前的數據;
(2).在幀間空隙的第一位或第二位發現顯性位信號;
過載幀發送條件:
(1).在幀間空隙域的第一個位周期;
(2).在幀間空隙域中檢測到強位信號一個位周期后,方可啟動過載幀發送。
過載標志:由6個顯性位組成,與錯誤標志格式相同,當超載標志發生后,每個節點監測總線狀態,當發
現線上有弱位后,此時所有節點已完成超載標志的發送,并開始發8個弱位串;
過載分界符:由8個隱性位組成,與錯誤分界符格式相同;
英飛凌(infineon)單片機XC800之CAN總線
CAN內部硬件結構,如下圖所示
一,CAN處理機制
發送:根據報文緩存中的報文對象,由位流處理器產生的通過can總線發送的數據幀和過程幀,即從報
文緩存中取出的報文對象,位流處理器給它加上起始域,結束域和CRC校驗數據,組成一個完整的數據幀
和遠程幀,此時位流控制器還在對總線進行監測,當發現總線空閑時,就啟動數據的傳送,傳送過程中監測
總線的信息,當發現與傳送的信息不相符時,就會產生一個“最近錯誤”中斷請求。
接收:數據幀或遠程幀通過總結接口,到CAN節點,位流控制器對其進行CRC域進行檢測,驗證數據的
一致性,當檢測到錯誤時,產生一個“最近錯誤”中斷請求,并產生一個錯誤幀,發送到總線上。對一個無
錯誤的幀,位流處理器將它分解成數據部分和標識符部分,列表控制器將其以鏈表的形式存儲于報文緩存
中,執行遠程幀或數據幀處理。
在上述數據傳送和處理過程中,會出現一些狀態字,指示操作完成或出現錯誤,這些狀態字或引發中
斷,進行中斷處理。
二,從上述結構框圖可以看出,主要包括:CAN節點,報文控制器,中斷處理單元
(一),CAN節點
(1),位流控制器(Bitstream Prosessor)
主要任務:處理數據幀,遠程幀,錯誤幀和過載幀,同時還進行串行數據流與輸入/輸出寄存器之間
轉換工作(Perdiv data frame ,remote frame ,error frame and overload,conversion thd seiral data
stream and the input/output register)。
詳述:位流控制器:對于發送:根據報文緩存中的報文對象,由位流處理器產生通過CAN總線的數據
幀和遠程幀。該的控制器控制CRC產生器,且給新的遠程幀和數據幀加上校驗和信息。在加入‘幀起始
位’和‘幀
結束域’之后,位流處理器開始CAN總線仲裁過程,且當發現總線空閑時連續進行幀發送。進行數據發送
的同時,位流控制器連續地監測I/O線的的電平和發送移位寄存器當前送出位的邏輯狀態之間檢測到失配,
產生一個‘最近錯誤’中斷請求,錯誤碼由位域NSRX.LEC給出。
對于接收:通過驗證CRC相關域,確定接收到的幀是否有問題,或有問題,產生一個‘最近錯
誤’中斷請求,同時產生一個錯誤幀,并發送到總線上。若接收的幀無錯誤,將接收到的幀分解成標志符和
數據部分,并將接收到的信息傳給報文緩存,執行遠程幀或數據幀處理,中斷產生和狀態處理。
(2),位時序單元(Bit timing unit)
考慮到傳播延遲和相移,根據用戶設置確定采樣點和位時間長度,同時也處理再同步操作(define a
length of a bit time and the location of the sample point according to the user settings,takeing into
accout propration delays and phase shift errors and re-sychronization).
(3),錯誤處理單元(error handling unit)
對發送和接收過程中錯誤進行計數,當計數值達到一定時,進入不同的錯誤指示狀態:錯誤激活,錯
誤認可,關閉總線。
(4),節點控制單元(Node control unit)
A, 使能/禁止節點的傳送
B, 使能/禁止可引發中斷的特定節點事件
C 幀計數管理
(5),中斷控制單元(interrupt control unit)
控制CAN產生的不同類型的事件的中斷
(二),報文控制器
(三),列表控制器
(四),中斷處理單元