從AUTOSAR角度理解CAN以及CANFD

一、AUTOSAR對CAN和CAN FD的基礎定位

  • CAN:基于傳統CAN 2.0B協議,是AUTOSAR早期版本(如4.0.3及之前)的核心車載通信協議,支持最大8字節 payload,仲裁段波特率通常≤1Mbps,適用于低帶寬、高實時性場景(如車身控制、底盤控制)。
  • CAN FD:作為CAN的擴展協議,在AUTOSAR 4.2.2及以上版本中被正式支持,解決了傳統CAN帶寬限制問題,支持可變數據速率(仲裁段保持低波特率兼容傳統CAN,數據段可提升至8Mbps)和更長payload(最大64字節,部分硬件支持2048字節),適用于高帶寬場景(如自動駕駛傳感器數據、診斷報文)。

二、AUTOSAR通信棧模塊中的CAN與CAN FD差異

AUTOSAR通信棧對CAN/CAN FD的支持通過分層模塊實現,核心模塊包括Can Driver(硬件驅動層)、CanIf(CAN接口層)、CanTp(CAN傳輸協議層)、PDU Router(PDU路由層)等,兩者的差異主要體現在以下模塊:

1. Can Driver(硬件抽象層,MCAL層)
  • 功能定位:直接與CAN控制器硬件交互,負責幀的發送/接收、波特率配置、錯誤檢測等底層操作。
  • CAN與CAN FD的核心差異
    • 波特率配置
      • CAN僅需配置單一波特率(仲裁段=數據段);
      • CAN FD需配置雙波特率
        • 標稱波特率(Nominal Bit Rate):仲裁段使用,需與傳統CAN節點兼容(如500kbps);
        • 數據波特率(Data Bit Rate):數據段使用,可更高(如2Mbps、5Mbps),由BRS(Bit Rate Switch)位觸發切換。
    • 位時間配置
      • CAN的位時間由SYNC_SEG+PROP_SEG+PHASE_SEG1+PHASE_SEG2組成(固定結構);
      • CAN FD需分別配置仲裁段位時間(與CAN兼容)和數據段位時間(更短,支持高速率),且需設置SJW(同步跳轉寬度)適配時鐘偏差。
    • 幀格式支持
      • CAN僅支持標準幀(11位ID)和擴展幀(29位ID),payload≤8字節;
      • CAN FD支持FD幀(含FDF位標識),payload可配置為64字節(基礎)或2048字節(擴展,需硬件支持),且需處理EDL(擴展數據長度)、BRSESI(錯誤狀態指示)等新增控制位。
2. CanIf(CAN接口層,服務層)
  • 功能定位:作為Can Driver與上層模塊(如CanTpPDU Router)的中間層,負責幀的路由、優先級管理、狀態反饋等。
  • CAN與CAN FD的核心差異
    • 幀類型區分
      • CanIf需通過PduId區分CAN幀和CAN FD幀,在配置中明確幀的類型(CanIfFrameTypeCAN_FRAME_STD/CAN_FRAME_EXT vs CAN_FD_FRAME_STD/CAN_FD_FRAME_EXT)。
    • payload長度適配
      • 對于CAN幀,CanIf限制payload≤8字節;
      • 對于CAN FD幀,CanIf需支持64/2048字節的payload,并確保與下層Can Driver的緩沖區大小匹配(配置CanIfTxBufferSizeCanIfRxBufferSize)。
    • 回調函數擴展
      • 新增針對CAN FD的狀態回調(如CanIf_Callback_FdTxConfCanIf_Callback_FdRxInd),通知上層CAN FD幀的發送確認/接收指示。
3. CanTp(CAN傳輸協議層,服務層)
  • 功能定位:負責長幀的分段與重組(基于ISO 15765-2),支持超過8字節的payload傳輸。
  • CAN與CAN FD的核心差異
    • 分段需求減少
      • 傳統CAN因payload≤8字節,長幀需大量分段(如100字節數據需13個分段幀);
      • CAN FD支持64字節payload,長幀分段數顯著減少(如100字節僅需2個分段幀),降低CanTp的處理開銷。
    • 超時配置適配
      • CAN FD數據段波特率更高,CanTp需調整超時參數(如N_AsN_Ar),避免因傳輸速度提升導致的超時誤判。
4. 診斷與錯誤管理
  • 錯誤處理
    • CAN與CAN FD共享基礎錯誤檢測機制(如CRC校驗、位填充錯誤、ACK錯誤),但CAN FD的CRC字段更長(32位,傳統CAN為15位),錯誤檢測能力更強;
    • AUTOSAR的Can模塊通過Can_GetErrorState接口反饋錯誤狀態(如CAN_ERROR_ACTIVE/CAN_ERROR_PASSIVE),CAN FD需額外處理因波特率切換導致的同步錯誤。
  • 診斷報文
    • 診斷服務(如UDS)通過CanTp傳輸,CAN FD可支持更長的診斷報文(如大容量DTC數據),減少交互次數。

三、AUTOSAR配置工具中的CAN與CAN FD差異

在AUTOSAR配置工具(如Vector DaVinci Configurator、EB tresos Studio)中,CAN與CAN FD的配置差異主要體現在:

  • 控制器配置:需為CAN FD控制器單獨設置Nominal Bit RateData Bit Rate,并關聯對應的位時間參數(TSEG1TSEG2SJW)。
  • 幀配置:在CanIf模塊中,需為CAN FD幀指定Frame FormatCAN_FD,并設置Max Data Length(64/2048)。
  • 硬件抽象層(MCAL)適配:需選擇支持CAN FD的Can Driver(如Vector VN1630的驅動),并配置控制器的FD Mode使能。

四、兼容性與遷移要點

  • 向下兼容:CAN FD節點可與傳統CAN節點共存于同一總線(仲裁段波特率兼容),但傳統CAN節點無法解析CAN FD幀(會將其視為錯誤幀)。
  • AUTOSAR版本依賴:若需支持CAN FD,ECU的AUTOSAR版本需≥4.2.2,且CanCanIfCanTp模塊需啟用FD功能(通過CanFdSupport開關配置)。

總結

從AUTOSAR角度看,CAN FD是對傳統CAN的功能擴展,而非替代:

  • 兩者共享核心通信棧架構(Can DriverCanIfCanTp),但CAN FD在波特率配置、payload長度、幀格式上引入了新特性;
  • AUTOSAR通過分層模塊的功能擴展(如雙波特率支持、長幀處理),實現了對CAN FD的兼容,同時保持與傳統CAN的互操作性;
  • 實際應用中需根據帶寬需求(低帶寬用CAN,高帶寬用CAN FD)和AUTOSAR版本,選擇合適的協議并配置對應的模塊參數。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/92043.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/92043.shtml
英文地址,請注明出處:http://en.pswp.cn/web/92043.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第27章:服務部署與容器化

1. 課程引言 在前面的章節中,我們已經完成了電商項目核心服務的開發。然而,開發完成只是項目生命周期的一部分,如何將這些服務高效、可靠地部署到生產環境,是決定項目成敗的關鍵一步。本章將聚焦于服務的部署,重點介紹…

力扣148:排序鏈表

力扣148:排序鏈表題目思路代碼題目 給你鏈表的頭結點 head ,請將其按 升序 排列并返回 排序后的鏈表 。 思路 當我們第一眼看見這道題時心中其實是有思路的,我們不想這是個鏈表就當它是一個整型數組。那么自然而然就會想到各種各樣的排序方法&#xf…

基于k8s環境下的pulsar常用命令(下)

#作者:Unstopabler 文章目錄permissionSchemapermission pulsar的權限控制是在namespace級別的 kubectl exec pulsar-toolset-0 -n pulsar – bin/pulsar-admin namespaces grant-permission mytenant/mynamespace –actions produce,consume –role admin10 注…

2.4 組件通信

Props 和 Events&#xff08;父子組件通信&#xff09;Props&#xff1a;父組件向子組件傳遞數據使用 props。子組件通過聲明 props 來接收來自父組件的數據。<!-- 父組件 --> <template><ChildComponent :message"parentMessage" /> </templat…

PCL學習之路-基礎知識-(一)

文章目錄1.西門子S7系列PLC類型劃分(1).大型PLC&#xff1a;S7-400(2).中型PLC&#xff1a;S7-300(3).小型PLC&#xff1a;S7-200系列2.西門子S7外形結構(1).總覽&#xff1a;PLC的“器官”分工邏輯3.輸出電路(1).小型繼電器輸出形式(2).大功率晶體管/場效應管輸出形式(3).雙向…

leetcode654:最大二叉樹(遞歸與單調棧雙解法)

文章目錄一、 題目描述二、 核心思路&#xff1a;分而治之與遞歸構造三、代碼實現與深度解析四、 關鍵點與復雜度分析五、拓展解法單調棧解法兩種解法對比LeetCode 654. 最大二叉樹&#xff0c;【難度&#xff1a;中等&#xff1b;通過率&#xff1a;82.6%】&#xff0c;這道題…

Python 循環語法詳解

在編程中&#xff0c;循環是一種非常常見的控制結構。很多時候&#xff0c;我們需要重復做一些事情&#xff0c;比如遍歷列表、處理數據、嘗試直到成功等。這時候&#xff0c;就離不開循環了。Python 提供了兩種主要的循環結構&#xff1a;for 循環 和 while 循環。本篇文章會從…

一個小巧神奇的 USB數據線檢測儀

一個小巧的數據線檢測儀&#xff0c;檢測各種USB數據線是否損壞、通斷&#xff0c;TYPE_C、MICRO_B、蘋果線、燒錄線、網線都可檢測。嵌入式開發者的稱手工具。 這個是我個人制作的&#xff0c;SMT和連接器比較貴&#xff0c;特別是24PIN的C口連接器&#xff0c;我掛在黃色小魚…

37.【.NET8 實戰--孢子記賬--從單體到微服務--轉向微服務】--擴展功能--增加Github Action

在第二部分&#xff08;微服務基礎工具與技術&#xff09;中我們講解了GitHub Action的相關知識&#xff0c;那么在這一節中&#xff0c;我們將為已有的微服務增加GitHub Action的支持。 一、什么是GitHub Action 雖然前面已經介紹過GitHub Action的相關知識&#xff0c;但這里…

ROS2 通過 命令行 發布速度控制指令 控制 麥克娜姆輪

在 ROS2 中&#xff0c;要通過命令行發布速度控制指令來控制麥克娜姆輪機器人&#xff0c;你需要知道機器人所使用的速度控制話題和消息類型。通常麥克娜姆輪機器人使用geometry_msgs/Twist消息類型來接收速度指令。 以下是通過命令行發布速度控制指令的方法&#xff1a; 首先確…

多層Model更新多層ListView

一、總體架構QML (三層 ListView)└─ C 單例 DataCenter (QQmlContext 注冊)├─ L1Model (一級節點)│ └─ 內部持有 QList<L2Model*>│ └─ L2Model (二級節點)│ └─ 內部持有 QList<L3Model*>│ └─ L3Model (三級節…

Git基礎操作教程

本文目的是掌握Git基礎操作教程一、Git簡介Git&#xff1a;分布式版本控制系統&#xff0c;使用倉庫(Repository)來記錄文件的變化最流行的版本控制系統有兩種&#xff1a;集中式&#xff08;SVN&#xff09;、分布式&#xff08;Git&#xff09;二、Git操作1.創建倉庫倉庫(Rep…

Android 之 Kotlin

變量變量的聲明Kotlin使用var&#xff0c;val來聲明變量&#xff0c;注意&#xff1a;Kotlin不再需要;來結尾var 可變變量&#xff0c;對應java的非final變量var b 1val不可變變量&#xff0c;對應java的final變量val a 1兩種變量并未聲明類型&#xff0c;這是因為Kotlin存在…

Design Compiler:布圖規劃探索(ICC)

相關閱讀 Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482 簡介 在Design Compiler Graphical中&#xff0c;可以用布圖規劃探索(Floorplan Exploration)功能&#xff0c;打開IC Compiler進行布圖規劃的創建、修改與分…

《藍牙低功耗音頻技術架構解析》

《2025GAS聲學大講堂—音頻產業創新技術公益講座》低功耗藍牙音頻系列專題LE Audio & Auracast?專題講座第1講將于8月7日周四19點開講&#xff0c;本次邀請了藍牙技術聯盟 技術與市場經理 魯公羽 演講&#xff0c;講座主題&#xff1a;《藍牙低功耗音頻技術架構解析》。&…

ubuntu apt安裝與dpkg安裝相互之間的關系

0. 問題解釋 在linux系統中&#xff0c;使用neofetch命令可以看到現在系統中使用dpkg, flatpak, snap安裝的包的數量&#xff0c;那么使用apt安裝的包被統計在什么位置了呢&#xff0c;使用apt的安裝流程和使用flatpak的安裝流程有什么關系和區別呢?1. apt 安裝的包在哪里&…

YooAsset源碼閱讀-Downloader篇

YooAsset源碼閱讀-Downloader 繼續 YooAsset 的 Downloader &#xff0c;本文將詳細介紹如何創建下載器相關代碼 CreateResourceDownloaderByAll 關鍵類 PlayModeImpl.csResourceDownloaderOperation.csDownloaderOperation.csBundleInfo.cs CreateResourceDownloaderByAll 方法…

豆包新模型與 PromptPilot 實操體驗測評,AI 輔助創作的新范式探索

摘要&#xff1a;在 AI 技術飛速發展的當下&#xff0c;各類大模型及輔助工具層出不窮&#xff0c;為開發者和創作者帶來了全新的體驗。2025 年 7 月 30 日廈門站的火山方舟線下 Meetup&#xff0c;為我們提供了近距離接觸豆包新模型與 PromptPilot 的機會。本次重點體驗了實驗…

深入探討AI在測試領域的三大核心應用:自動化測試框架、智能缺陷檢測和A/B測試優化,并通過代碼示例、流程圖和圖表詳細解析其實現原理和應用場景。

引言隨著人工智能技術的飛速發展&#xff0c;軟件測試領域正在經歷一場深刻的變革。AI技術不僅提高了測試效率&#xff0c;還增強了測試的準確性和覆蓋范圍。本文將深入探討AI在測試領域的三大核心應用&#xff1a;自動化測試框架、智能缺陷檢測和A/B測試優化&#xff0c;并通過…

音視頻學習筆記

0.vs應用其他庫配置1基礎 1.1視頻基礎 音視頻錄制原理音視頻播放原理圖像表示rgb圖像表示yuvhttps://blog.51cto.com/u_7335580/2059670 https://blog.51cto.com/cto521/1944224 https://blog.csdn.net/mandagod/article/details/78605586?locationNum7&fps1 視頻主要概念…