1. 程式人生 > >CAN匯流排基礎知識(一)

CAN匯流排基礎知識(一)

1.CAN匯流排是什麼?

    CAN(Controller Area Network)是ISO國際標準化的序列通訊協議。廣泛應用於汽車、船舶等。具有已經被大家認可的高效能和可靠性。

    CAN控制器通過組成匯流排的2根線(CAN-H和CAN-L)的電位差來確定匯流排的電平,在任一時刻,總線上有2種電平:顯性電平和隱性電平。

    “顯性”具有“優先”的意味,只要有一個單元輸出顯性電平,總線上即為顯性電平,並且,“隱性”具有“包容”的意味,只有所有的單元都輸出隱性電平,總線上才為隱性電平。(顯性電平比隱性電平更強)。

    總線上執行邏輯上的線“與”時,顯性電平的邏輯值為“0”,隱性電平為“1”。

    下圖顯示了一個典型的CAN拓撲連線圖。

    連線在總線上的所有單元都能夠傳送資訊,如果有超過一個單元在同一時刻傳送資訊,有最高優先順序的單元獲得傳送的資格,所有其它單元執行接收操作。

2.CAN匯流排的特點

     CAN匯流排協議具有下面的特點:

    1) 多主控制

    當匯流排空閒時,連線到總線上的所有單元都可以啟動傳送資訊,這就是所謂的多主控制的概念。

    先佔有匯流排的裝置獲得在總線上進行傳送資訊的資格。這就是所謂的CSMA/CR(Carrier Sense MultipleAccess/Collosion Avoidance)方法

    如果多個裝置同時開始傳送資訊,那麼傳送最高優先順序ID訊息的裝置獲得傳送資格。

    2) 資訊的傳送

    在CAN協議中,所有傳送的資訊要滿足預先定義的格式。當匯流排沒有被佔用的時候,連線在總線上的任何裝置都能起動新資訊的傳輸,如果兩個或更多個裝置在同時刻啟動資訊的傳輸,通過ID來決定優先順序。ID並不是指明資訊傳送的目的地,而是指示資訊的優先順序。如果2個或者更多的裝置在同一時刻啟動資訊的傳輸,在總線上按照資訊所包含的ID的每一位來競爭,贏得競爭的裝置(也就是具有最高優先順序的資訊)能夠繼續傳送,而失敗者則立刻停止傳送並進入接收操作。因為總線上同一時刻只可能有一個傳送者,而其它均處於接收狀態,所以,並不需要在底層協議中定義地址的概念。

    3) 系統的靈活性

    連線到總線上的單元並沒有類似地址這樣的標識,所以,新增或去除一個裝置,無需改變軟體和硬體,或其它裝置的應用層軟體。

    4) 通訊速度

    可以設定任何通訊速度,以適應網路規模。

    對一個網路,所有單元必須有相同的通訊速度,如果不同,就會產生錯誤,並妨礙網路通訊,然而,不同網路間可以有不同的通訊速度。

    5) 遠端資料請求

可以通過傳送“遙控幀”,請求其他單元傳送資料。

    6) 錯誤檢測、錯誤通知、錯誤恢復功能

所有單元均可以檢測出錯誤(錯誤檢測功能)。

檢測到錯誤的單元立刻同時通知其它所有的單元(錯誤通知功能)。如果一個單元傳送資訊時檢測到一個錯誤,它會強制終止資訊傳輸,並通知其它所有裝置發生了錯誤,然後它會重傳直到資訊正常傳輸出去(錯誤恢復功能)。

    7) 錯誤隔離

在CAN總線上有兩種型別的錯誤:暫時性的錯誤(總線上的資料由於受到噪聲的影響而暫時出錯);持續性的錯誤(由於裝置內部出錯(如驅動器壞了、連線有問題等)而導致的)。CAN能夠區別這兩種型別,一方面降低常出錯單元的通訊優先順序以阻止對其它正常裝置的影響,另一方面,如果是一種持續性的錯誤,將這個裝置從總線上隔離開。

    8) 連線

CAN匯流排允許多個裝置同時連線到總線上且在邏輯上沒有數目上的限制。然而由於延遲和負載能力的限制,實際可連線得裝置還是有限制的,可以通過降低通訊速度來增加連線的裝置個數。相反,如果連線的裝置少,通訊的速度可以增加。

3.錯誤

3.1 錯誤狀態

    裝置總是處於下面三個狀態之一:

    1)主動錯誤狀態

    在此狀態下,裝置能夠參加總線上的正常通訊。如果處於主動錯誤狀態的裝置檢測到一個錯誤,它會發送一個主動錯誤標誌,更細節見第6章的“CAN協議”。

    2)被動錯誤狀態

    是指易於引起錯誤的狀態。

    儘管處於被動錯誤狀態的裝置能夠參加總線上的通訊,但是在接收期間,它不可能主動地向其它裝置傳送錯誤通知,以避免影響它們的通訊。處於被動錯誤狀態的裝置即使檢測到一個錯誤,如果其它處於主動錯誤狀態的裝置沒曾檢測到錯誤,那麼也認為在總線上未曾出現過任何錯誤。

    當處於被動錯誤狀態的裝置檢測到一個錯誤的時候,它傳送一個被動錯誤標誌。

    另外,處於被動錯誤狀態的單元在傳送結束後不能立刻再次開始傳送。在開始下次傳送前,在間隔幀期間內必須插入“暫停傳送期”(由8個位的隱性位組成)。

更細節見第6章的“CAN協議”。

    3)匯流排切斷狀態

    處於此狀態下時,裝置不能參加匯流排的通訊。裝置所有的收發操作都被禁止。

    這些狀態是通過傳送錯誤計數器和接收錯誤暫存器來管理,相關錯誤狀態由這些計數器值的組合來標識,錯誤狀態和計數器值之間的關係見表1和圖4。

3.2 錯誤計數器的值

    傳送和接收錯誤計數器的值按照規定的條件來改變。

    表2小結了錯誤計數器值改變的條件。

    在一個數據收發操作中可能會發生多個條件重疊。

    錯誤計數器增加的時間發生在錯誤標誌的第一bit位置。

4.CAN協議的基本概念

    CAN協議包括OSI參考模型的傳輸層、資料鏈路層、物理層。圖5顯示了CAN協議每個層的定義。

    資料鏈路層劃分為MAC(Medium Access Control媒體存取控制)和LLC(Logical Link Control羅輯鏈路控制)。MAC子層組成CAN協議的核心。資料鏈路層的功能是將從物理層接收到的訊號組織成有意義的資訊,提供如傳輸錯誤控制等資料傳輸控制流程。更具體來說,包括:資訊如何封裝成一幀,資料衝突仲裁、應答、錯誤的檢測或通知。資料鏈路層的這些功能通常由CAN控制器硬體來實現。

    物理層定義訊號的實際傳輸方式、位的時序、位的編碼、同步的過程步驟,然而,CAN協議並沒有定義了訊號電平、通訊速度、取樣點值、驅動器和匯流排電氣特徵、聯結器形式。對每個系統,這些特徵由使用者自行確定。

    在BOSCH公司的CAN協議中,並沒有關於收發器和匯流排的電氣特徵的定義,而在ISO CAN協議中,如ISO11898和ISO11519-2卻對此有明確的定義。