日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于FPGA的CAN接口开发

發布時間:2023/12/20 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于FPGA的CAN接口开发 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基于Xilinx的A7系列FPGA的CAN總線協議開發

一、CAN總線協議介紹

CAN是 Controller Area Network 的縮寫(以下稱為 CAN ),是 ISO 國際標準化的串行通信協議。可以用來滿足“多總線通信時,線束的數量過多”、“通過多個 LAN ,進行大量數據的高速通信”的需要。它的出現為分布式控制系統實現各節點之間實時、可靠的數據通信提供了強有力的技術支持。

CAN控制器根據兩根線上的電位差來判斷總線電平。總線電平分為顯性電平和隱性電平,二者必居其一。發送方通過使總線電平發生變化,將消息發送給接收方。
CAN協議具有以下特點:

  • CAN 總線是一種多主總線,總線上任意節點可在任意時刻主動地向網絡上其他節點發送信息而不分主次,因此可在各節點之間實現自由通信。
  • CAN 總線采用非破壞性總線仲裁技術。當多個節點同時向總線發送信息時,優先級低的節點會主動退出發送,而最高優先級的節點可以不受影響地繼續傳輸數據,從而大大節省總線沖突的仲裁時間。即使在網絡負載很重的情況下也不會發生網絡癱瘓情況。
  • CAN 總線的通信介質可以是雙絞線、同軸電纜或光導纖維,選擇靈活。
  • CAN 總線的通信速率可達 1Mbit/s(此時通信距離最長為 40 米),通信距離最遠可達 10km(速率在 5kbit/s 以下)。
  • CAN 總線上的節點信息分成不同的優先級,可以滿足不同級別的實時要求,高優先級的數據可以在 134μs 內得到傳輸。
  • CAN 總線通過報文濾波即可實現點對點、一點對多點及全局廣播等幾種方式傳送數據,無需專門的調度。
  • CAN 總線的數據采用短幀結構,傳輸時間短,受干擾概率低,具有極好的檢錯效果。
  • CAN 總線采用 CRC 檢驗并可提供相應的錯誤處理功能,保證了數據通信的可靠性。
  • CAN 總線上的器件可被置于無任何內部活動的睡眠方式,相當于未連接到總線上,可以有效降低系統功耗。
  • CAN總線采用差分信號傳輸,通常情況下只需要兩根信號線就可以進行正常的通信。在差分信號中,邏輯0和邏輯1是用兩根差分信號線的電壓差來表示。當處于邏輯1,CAN_H和CAN_L的電壓差小于0.5V,稱為隱性電平(Recessive);當處于邏輯0,CAN_H和CAN_L的電壓差大于0.9V,稱為顯性電平(Dominant)。

    CAN有四種幀類型:

    ◆ 數據幀:發送單元向接收單元傳送數據的幀
    ◆ 遠程幀:總線單元發出遠程幀,請求發送具有同一識別符的數據幀
    ◆ 錯誤幀:由檢測到錯誤的任何節點發送的幀
    ◆ 過載幀:在數據或遠程幀之間注入延遲的幀

    數據幀是唯一實際傳輸數據的幀,結構上由7個段組成,其中根據仲裁段ID碼長度的不同,分為標準幀(CAN2.0A)和擴展幀(CAN2.0B):
    ? 標準幀格式:具有11個標識符位
    ? 擴展幀格式:具有29個標識符位
    標準數據幀的構成如下圖所示:

    數據幀一般由7個段構成,即:
    (1)幀起始:表示數據幀開始的段。
    (2)仲裁段:表示該幀優先級的段。
    (3)控制段:表示數據的字節數及保留位的段。
    (4)數據段:數據的內容,一幀可發送0~8個字節的數據。
    (5)CRC段:檢查幀的傳輸錯誤的段。
    (6)ACK段:表示確認正常接收的段。
    (7)幀結束:表示數據幀結束的段。

    (詳細的CAN介紹可以參看 CAN介紹.pdf)

    二、xilinx Artix 7系列FPGA介紹

    Artix7系列是7系列中的普通青年,相對Spartan7系列則增加了串行收發器和DSP功能,其邏輯容量也更大,適合邏輯一些稍微復雜的中低端應用。

    三、FPGA的相關設計介紹

    設計思路一:在FPGA內部編寫CAN通信控制器

    采用這個設計方案,本質上是在FPGA內部設計了一款CAN通信控制芯片。技術門檻較高。下面這個設計實例仿照的是SJA1000 CAN通信控制器的工作流程,用Verilog語言完成了CAN控制接口的開發。

    CAN 總線的通信協議由 CAN 通信控制器完成。CAN 通信控制器由實現 CAN 總線協議部分和微控制器部分的電路組成。下面將通過一個實例講解如何用 FPGA 實現 CAN 通信控制器的功能。這個實例從功能和結構上完全參照 SJA 1000 CAN 通信控制器。

    網址一:基于FPGA的CAN總線控制器的設計(上) - 知乎 (zhihu.com)

    網址二:基于FPGA的CAN總線控制器的設計(中) - 知乎 (zhihu.com)

    網址三:基于FPGA的CAN總線控制器的設計(下) - 知乎 (zhihu.com)

    上述資料是按照SJA1000 CAN通信控制器的內部結構用FPGA進行了重新設計。

    設計思路二:用FPGA通過串口或者SPI去配置外部的CAN控制器芯片實現通信。

    這個設計方案一般用在單片機作主控的項目中,如果用FPGA作主控,有這么幾個缺點,成本高、硬件設計繁瑣、受限于控制芯片的性能和發揮不出FPGA的性能。

    CAN通信控制芯片:

    • MCP2515(SPI通信)

    • SJA1000


    CAN接口驅動芯片:

    • TJA1050芯片引腳圖


    常用的外設電路設計

    如上圖所示,CAN_TX和CAN_RX接CAN通信控制芯片,實現對驅動芯片轉換后的信息流的處理。

    設計參考:

    [參考一:xilinx 7系列FPGA分類簡介(轉)_我看唔人生-CSDN博客](xilinx 7系列FPGA分類簡介(轉)_我看唔人生-CSDN博客)

    [參考二:基于FPGA的CAN總線控制器的設計(上) - 知乎 (zhihu.com)](基于FPGA的CAN總線控制器的設計(上) - 知乎 (zhihu.com))

    [參考三:基于FPGA的CAN總線控制器的設計(中) - 知乎 (zhihu.com)](基于FPGA的CAN總線控制器的設計(中) - 知乎 (zhihu.com))

    [參考四:基于FPGA的CAN總線控制器的設計(下) - 知乎 (zhihu.com)](基于FPGA的CAN總線控制器的設計(下) - 知乎 (zhihu.com))

    [參考五:【正點原子】開拓者FPGA開發板資料 資料盤(A盤)_免費高速下載|百度網盤-分享無限制 (baidu.com)](https://pan.baidu.com/s/11TVUTU89Hu-oTR4jUIn5cA#list/path=%2Fsharelink1102113311042-567528871234027%2F[正點原子]開拓者FPGA開發板資料 資料盤(A盤)%2F[正點原子]開拓者FPGA開發板 資料盤(A盤)&parentPath=%2Fsharelink1102113311042-567528871234027)

    總結

    以上是生活随笔為你收集整理的基于FPGA的CAN接口开发的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。