stm32之CAN總線基礎

can總線協議概述:

  CAN是Controller Area Network的縮寫,由德國博世公司開發;CAN通過ISO11891以及ISO11519進行了標準化;

      

CAN總線的特點:

    1、多主控制

      在總線空閒時,所有單元都可以開始發送消息(多主控制);

      最先訪問總線的單元獲得發送權(辨別方式:“CSMA/CA方式”);

      多個單元同時開始發送時,發送高優先級ID消息的單元可獲得發送權;

    2、消息的發送

      在can協議中,所有消息都是以固定格式發送。總線空閒時,所有與總線相連的單元都可以開始發送新消息。兩個以上的單元同時開始發送消息時,根據標識符(ID)決定優先級。ID並不是表示發送消息的目的地址,而是表示訪問總線的消息優先級。兩個以上的單元同時開始發送消息時,對各消息ID的每個位進行逐個仲裁比較,仲裁獲勝(優先級最高)的單元繼續發送消息,仲裁失利的單元則立刻停止發送而進行接收工作;

    3、系統的柔軟性

      與總線相連的單元沒有類似於“地址”的信息,因此在總線上增加單元時,連接在總線上的其他單元的軟硬件及應用層都不需要改變;  

    4、通信速度

      根據整個網絡的規模,可設定適合的通信速度。最高1Mbps;

      在同一網絡中,所有單元必須設定成統一通信速度,即使有一個單元的的通信速度與其他的不一樣,此單元也會輸出錯誤信號,妨礙整個網絡的通信,不同網絡間則可以有不同的通信速度;

    5、遠程數據請求

      可通過發送“遙控幀”,請求其他單元發送數據;

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

      所有的單元都可以檢測錯誤(錯誤檢測功能)

      檢測出錯誤的單元會立即同時通知其他所有單元(錯誤通知功能)

      正在發生消息的單元一旦檢測出錯誤,會強制結束當前的發送。強制結束髮送的單元會不斷反覆地重新發送此消息直到成功發送(錯誤恢復功能);

    7、故障封閉

      CAN可以判斷出錯誤的類型是總線上暫時的數據錯誤(如外部噪聲)還是持續數據錯誤(如單元內部故障、驅動器錯誤)。由此功能,當總線上發送持續錯誤時,可能引起此故障的單元從總線上隔離出去;

    8、連接

      CAN總線是可同時連接多個單元的總線。可連接的單元總數理論上是沒有限制的。但實際上可連接的單元數受總線上的時間延遲及電氣負載的限制。降低通信速度,可連接的單元數增加,提高通信速度,則可連接的單元數減少;

CAN總線協議:

 CAN總線涵蓋了OSI規定的傳輸層、數據鏈路層、物理層;

                  

物理層:

  決定了位編碼方式(NRZ編碼,6個位插入填充位),位時序(位時序、位的採樣)、同步方式(根據同步段ss實現同步,並具有再同步功能);但具體的說:信號電平,通信速度,採樣點,驅動器和總線的電氣特點,連接器的形態都沒有定義,需要用戶自行確定;

傳輸層:

  定義了再發送控制;

數據鏈路層:

  數據鏈路層分LLC(邏輯鏈路控制 Logic Link control)子層 和MAC(媒介訪問控制Media access control)子層;

    LLC子層,執行接收消息選擇(點到點、廣播、組播)、過載通知(通知接收準備尚爲完成)、錯誤恢復功能(再次發送);

    MAC層: 進行數據幀化(4種幀類型),連接方式控制(競爭方式),消息仲裁(ID仲裁),故障擴散抑制(自動識別暫時錯誤和持續錯誤,排除故障節點),錯誤通知(CRC錯誤、填充位錯誤、位錯誤、ACK錯誤、格式錯誤),錯誤檢測,應答方式(ACK, NACK),通信方式(半雙工)等設置;

  MAC子層是CAN協議的核心,數據鏈路層的功能是將物理層的信號組成有意義的消息,並提供傳送錯誤控制等傳輸控制的流程。數據鏈路層的功能通常是在CAN控制器的硬件中執行;

幀的概念:

  數據幀:用於發送單元想接收單元傳送數據的幀;

  遙控幀(請求幀): 用於接收單元向具有相同ID的發送單元請求數據的幀;

  錯誤幀:用於當檢測出錯誤時向其它單元通知錯誤的幀;

  過載幀:用於接收單元通知 其尚未做好接收準備的幀;

  幀間隔:用於將數據幀及遙控幀與前面的幀分離開來的幀;沒有實際意義

數據幀和遙控幀 都有標準格式和擴展格式兩種格式。標準格式有11個位的標識符Identifier,以後稱ID),擴展格式有29個位的ID;

  數據幀:

  (1)、幀起始(標準、擴展格式相同)

    表示幀開始的段,1個位的顯性位;

   (2)、總線上的電平有顯性和隱性電平兩種;

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

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

  (3)、仲裁段

      表示數據的優先級的段

      標準格式和擴展格式在此的構成有所不同;

      ID:

    標準格式的ID有11個位,從ID28到ID18被依次發送,禁止高7位都爲隱性;

    擴展格式有29個位;基本ID從ID28到ID18,擴展ID由ID17到ID0;

  遙控幀:

  遙控幀沒有數據段;沒有數據段的數據幀與遙控幀的區別:RTR位;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章