CAN總線(Controller Area Network Bus)控制器局域網總線(二)

6、錯誤幀

  • 總線上所有設備都會監督總線的數據,一旦發現“位錯誤”或“填充錯誤”或“CRC錯誤”或“格式錯誤”或“應答錯誤” ,這些設備便會發出錯誤幀來破壞數據,同時終止當前的發送設備。
    錯誤幀

7、過載幀

  • 當接收方收到大量數據而無法處理時,其可以發出過載幀,延緩發送方的數據發送,以平衡總線負載,避免數據丟失。
    過載幀

8、幀間隔

  • 將數據幀和遙控幀與前面的幀分離開。
    在這里插入圖片描述

9、位填充

  • 第一列數據,正常連續數據正常后面補位填充位。
  • 第二列數據,位填充數據與后續數組組成連續5個相同電平后,需要隨后再補一個位填充電平。
  • 第三列數據,數據若是有連續多個同樣電平信號,例如10個,此時需要每五個補一個位填充。
  • 位填充適用于數據包(數據幀和遙控幀)中,總線空閑長時間出現的隱性邏輯1不適用。CAN總線連續出現11個隱性邏輯1時,被認為是空閑狀態。
    在這里插入圖片描述

10、波形實例

  • 數據的開頭顯性邏輯0代表SOF起始幀,結尾處的七位連續隱性邏輯代表結束幀EOF。
  • 報文ID是高位先行,是從高位到低位的,正常的讀取即可,所以讀取時需從左往右。
  • 數據段是高位先行的,是高位到低位,正常的讀取即可,讀取時從左往右。
  • 黃色部分是位填充,連續五個同樣的電平后的一位數據就是位填充,讀波形時需要忽略掉。如果連續超過五個的同樣電平說明,發生了錯誤幀或過載幀。
    ①標準數據幀,報文ID為0x555,數據長度1字節,數據內容為0xAA。
    在這里插入圖片描述
    ②標準數據幀,報文ID為0x666,數據長度2字節,數據內容為0x12,0x34。
    在這里插入圖片描述
    ③擴展數據幀,報文ID為0x0789ABCD,數據長度1字節,數據內容為0x56。
    在這里插入圖片描述
    ④標準遙控幀,報文ID為0x088,數據長度1字節,無數據內容。
    在這里插入圖片描述

11、接收方數據采樣

  • CAN總線沒有時鐘線,總線上的所有設備通過約定波特率的方式確定每一個數據位的時長。
  • 發送方以約定的位時長每隔固定時間輸出一個數據位。
  • 接收方以約定的位時長每隔固定時間采樣總線的電平,輸入一個數據位。
  • 理想狀態下,接收方能依次采樣到發送方發出的每個數據位,且采樣點位于數據位中心附近。
    在這里插入圖片描述

12、接收方采樣數據遇到的問題

①接收方以約定的位時長進行采樣,但是采樣點沒有對齊數據位中心附近。
在這里插入圖片描述

②接收方剛開始采樣正確,但是時鐘有誤差,隨著誤差積累,采樣點逐漸偏離。
在這里插入圖片描述

(12)位時序

  • 為了靈活調整每個采樣點的位置,使采樣點對齊數據位中心附近,CAN總線對每一個數據位的時長進行了更細的劃分,分為同步段(SS)、傳播時間段(PTS)、相位緩沖段1(PBS1)和相位緩沖段2(PBS2),每個段又由若干個最小時間單位(Tq)構成。
    在這里插入圖片描述

13、硬同步

  • 每個設備都有一個位時序計時周期,當某個設備(發送方)率先發送報文,其他所有設備(接收方)收到SOF的下降沿(顯性邏輯0)時,接收方會將自己的位時序計時周期撥到SS段的位置,與發送方的位時序計時周期保持同步
  • 硬同步只在幀的第一個下降沿(SOF下降沿)有效
    經過硬同步后,若發送方和接收方的時鐘沒有誤差,則后續所有數據位的采樣點必然都會對齊數據位中心附近
    在這里插入圖片描述

14、再同步

若發送方或接收方的時鐘有誤差,隨著誤差積累,數據位邊沿逐漸偏離SS段,則此時接收方根據再同步補償寬度值(SJW)通過加長PBS1段(接收方時鐘快,發送方時鐘慢),或縮短PBS2段(接收方時鐘慢,發送發時鐘快),以調整同步。SJW=1~4Tq。

  • 再同步可以發生在第一個下降沿之后的每個數據位跳變邊沿。
    在這里插入圖片描述
    在這里插入圖片描述

15、波特率的計算

波特率:每秒傳輸多少個bit。
波特率 = 1 / 一個數據位的時長 = 1 / (TSS + TPTS + TPBS1 + TPBS2)
例如:
SS = 1Tq,PTS = 3Tq,PBS1 = 3Tq,PBS2 = 3Tq
Tq = 0.5us
波特率 = 1 / (0.5us + 1.5us + 1.5us + 1.5us) = 200kbps
在這里插入圖片描述

16、多設備同時發送遇到的問題

CAN總線只有一對差分信號線,同一時間只能有一個設備操作總線發送數據,若多個設備同時有發送需求,該如何分配總線資源?
解決問題的思路:制定資源分配規則,依次滿足多個設備的發送需求,確保同一時間只有一個設備操作總線。
在這里插入圖片描述

17、資源分配規則

①先占先得。
若當前已經有設備正在操作總線發送數據幀/遙控幀,則其他任何設備不能再同時發送數據幀/遙控幀(可以發送錯誤幀/過載幀破壞當前數據)。
任何設備檢測到連續11個隱性電平,即認為總線空閑,只有在總線空閑時,設備才能發送數據幀/遙控幀。
一旦有設備正在發送數據幀/遙控幀,總線就會變為活躍狀態,必然不會出現連續11個隱性電平,其他設備自然也不會破壞當前發送。
若總線活躍狀態其他設備有發送需求,則需要等待總線變為空閑,才能執行發送需求。
②非破壞性仲裁。
若多個設備的發送需求同時到來或因等待而同時到來,則CAN總線協議會根據ID號(仲裁段)(仲裁段的數據進行判斷==報文ID+RTR)進行非破壞性仲裁,ID號小的(優先級高)取到總線控制權,ID號大的(優先級低)仲裁失利后將轉入接收狀態,等待下一次總線空閑時再嘗試發送。
實現非破壞性仲裁需要兩個要求:
線與特性:總線上任何一個設備發送顯性電平0時,總線就會呈現顯性電平0狀態,只有當所有設備都發送隱性電平1時,總線才呈現隱性電平1狀態,即:0 & X & X = 0,1 & 1 & 1 = 1。
回讀機制:每個設備發出一個數據位后,都會讀回總線當前的電平狀態,以確認自己發出的電平是否被真實地發送出去了,根據線與特性,發出0讀回必然是0,發出1讀回不一定是1。
③非破壞性仲裁過程
數據位從前到后依次比較,出現差異且數據位為1的設備仲裁失利。標紅方格之前單元1和單元2的數返回值均相同,但在標紅方格處:單元1發出的是1卻返回的是0,所以就代表此時總線仲裁將數據的發送權轉交給了其他發送器。單元1需要繼續等待。單元2,每次發送數據位時,返回的數據電平值都和發送的一致,說明此時并未失去發送數據權力,即繼續下一位數據發送。
報文ID越小,所出現的電平1的頻率越小,即優先級越高(返回值)。
在這里插入圖片描述

④數據幀和遙控幀的優先級
數據幀和遙控幀ID號一樣時,數據幀的優先級高于遙控幀。理由就在于發送完數據后,讀取總線上電平的反饋值并進行比較,數據幀設置的電平狀態是顯性邏輯0,而遙控幀設置的電平值設置的電平狀態是隱性邏輯1,返回值0的優先級高,即數據幀優先級高的原因。
在這里插入圖片描述

⑤標準格式和擴展格式的優先級
標準格式11位ID號和擴展格式29位ID號的高11位一樣時,標準格式的優先級高于擴展格式(SRR必須始終為1,以保證此要求)
如果此時是相同報文ID的標準遙控幀和擴展數據幀進行仲裁時,因為擴展數據幀的報文ID比較多,且兩者前11+1位完全相同所以直到標準遙控幀結束仲裁段時都沒有分出優先級,但是此時擴展數據幀的仲裁段并沒有結束。第十三位,標準遙控幀的位是IDE數值為0表示標準格式。而擴展數據幀的第十三位是也是IDE數值為1表示擴展格式。直到此時才分出優先級,標準遙控幀勝出,取得仲裁權,繼續發送數據。
在這里插入圖片描述

18、錯誤處理

錯誤共有5種: 位錯誤、填充錯誤、CRC錯誤、格式錯誤、應答錯誤。
在這里插入圖片描述

主動錯誤狀態的設備正常參與通信并在檢測到錯誤時發出主動錯誤幀。
被動錯誤狀態的設備正常參與通信但檢測到錯誤時只能發出被動錯誤幀。
總線關閉狀態的設備不能參與通信。
每個設備內部管理一個TEC和REC,根據TEC和REC的值確定自己的狀態。
在這里插入圖片描述

19、錯誤波形演示

①設備處于主動錯誤狀態,發送標準數據幀,正常傳輸。
ACK界定符+7位EOF結束幀+3位幀間隔==11位隱性邏輯1,表示總線處于空閑狀態。
在這里插入圖片描述

②設備處于主動錯誤狀態,發送標準數據幀,檢測到ACK錯誤。在ACK應答幀結束后發出連續6位的顯性邏輯0,表示錯誤標志。
8位錯誤界定符+3位幀間隔==11位隱性邏輯1,表示總線處于空閑狀態。
在這里插入圖片描述

③設備處于被動錯誤狀態,發送標準數據幀,檢測到ACK錯誤。
在這里插入圖片描述
注意:本文章內容均來源于網絡,如有異議請聯系本作者

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

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

相關文章

LeetCode 317 離建筑物最近的距離

LeetCode 317 題的詳細題目信息如下:題目名稱Shortest Distance from All Buildings(中文譯名:離建筑物最近的距離)題目描述給你一個由 0、1 和 2 組成的二維網格,其中:0 代表空地1 代表建筑物2 代表障礙物…

AI之CodeTool之Kode:Kode(claude_code風格)的簡介、安裝和使用方法、案例應用之詳細攻略

AI之CodeTool之Kode:Kode(claude_code風格)的簡介、安裝和使用方法、案例應用之詳細攻略 目錄 相關文章 LLMs之PE之SystemPrompt:analysis_claude_code的簡介、使用方法、案例應用之詳細攻略 AI之CodeTool之Kode:Kode(claude_code風格)的簡…

網絡請求優化:用 Retrofit 攔截器玩轉日志、重試與緩存,OkHttp 和 Volley 誰更香?

目錄 1. 攔截器:Retrofit 的“超級管理員” 攔截器的本質 為什么用攔截器? 2. 日志攔截器:讓請求和響應“現原形” 引入日志攔截器 實現日志攔截器 日志輸出示例 生產環境注意事項 3. 重試攔截器:網絡不穩定也能穩如狗 設計重試邏輯 集成到 Retrofit 優化重試策…

LeetCode - 283. 移動零

題目 283. 移動零 - 力扣(LeetCode) 思路 我們使用左右兩個指針:左指針left指向已處理好的非零元素的末尾位置,右指針right用于遍歷數組。 算法步驟: 初始化left為-1(表示還沒有處理任何非零元素&…

Redis不同場景下的注意事項

Redis常見的 使用場景: 緩存系統(核心場景) 存儲熱點數據,減少數據庫訪問壓力。提升接口響應速度。技術點: 用String/Hash 存儲結構化數據結合過期時間(TTL)和緩存淘汰策略(如LRU)管理內存。解決緩存問題:穿…

【完整源碼+數據集+部署教程】高速公路施工區域物體檢測系統源碼和數據集:改進yolo11-RepNCSPELAN

背景意義 隨著城市化進程的加快,高速公路建設與維護工作日益頻繁,施工區域的安全管理成為亟待解決的重要問題。在高速公路施工區域,工人和設備的安全是首要考慮因素,而有效的物體檢測系統能夠顯著提高施工現場的安全性與工作效率。…

如何在FastAPI中玩轉全鏈路追蹤,讓分布式系統故障無處遁形?

url: /posts/30e1d2fbf1ad8123eaf0e1e0dbe7c675/ title: 全鏈路追蹤如何讓FastAPI微服務架構的每個請求都無所遁形? date: 2025-08-28T23:40:47+08:00 lastmod: 2025-08-28T23:40:47+08:00 author: cmdragon summary: 全鏈路追蹤是現代微服務架構中監控系統行為的核心技術,通…

Win11 壓縮實測:Win11 的壓縮軟件的最佳配置和使用方式

文章目錄測試環境機器配置被壓縮文件WinRAR7zipLinux子系統準備極限壓縮減小字典的極限壓縮7zipWin11準備極限壓縮7zip系統內置右鍵壓縮菜單極限壓縮總結:Win11 的壓縮軟件的最佳配置和使用方式測試環境 機器配置 Win11系統 16GB內存 8核CPU 被壓縮文件 文件夾內…

CMake構建學習筆記22-libxml2庫的構建

在上一篇文章《CMake構建學習筆記21-通用的CMake構建腳本》中,筆者封裝了一個通用的cmake構建腳本cmake-build.ps1,那么這里筆者就嘗試通過這個腳本來構建libxml2庫。 libxml2是GNOME項目下的XML庫,雖然比不上TinyXML-2輕量,但是…

虛擬私有網絡筆記

VPN應用場景 ——VPN概述 ? 利用公共網絡來構建的私人專用網絡稱為虛擬私有網絡(VPN, Virtual Private Network),用于構建VPN的公共網絡包括Internet 、幀中繼、ATM等。在公共網絡上組建的VPN象企業現有的私有網絡 一樣提供安全性…

Python 輕量級 HTML 解析器 - lxml入門教程

文章目錄初始化解析器路徑查找查找所有標簽查找指定 id 的標簽查找指定 class 的標簽查找包含指定 class 的標簽復雜路徑查找示例1示例2常見操作獲取所有標簽的鏈接獲取 div 標簽的文本內容, 其他標簽類似其他元素操作初始化解析器 from lxml import html from lxml.html impor…

(CVPR-2025)VideoMage:文本生成視頻擴散模型的多主體與動作定制化

VideoMage:文本生成視頻擴散模型的多主體與動作定制化 paper title:VideoMage: Multi-Subject and Motion Customization of Text-to-Video Diffusion Models paper是National Taiwan University發表在CVPR 2025的工作 Code:鏈接 圖1. 多主體與動作定制化…

OpenCV輪廓近似與Python命令行參數解析

在計算機視覺任務中,輪廓分析是目標檢測、形狀識別的核心步驟。而approxPolyDP函數作為輪廓簡化的關鍵工具,能有效減少輪廓頂點數量,降低計算復雜度;同時,argparse庫則能讓Python腳本更靈活、易用。本文將結合具體案例…

基于Springboot在線音樂推薦平臺

目錄 一、項目介紹 二、功能介紹 三、核心代碼 四、效果圖 源碼獲取 前言 在經濟繁榮的浪潮過去后,社會的焦點逐漸從物質追求轉向了文化和生活品質的提升[1]。文化生活的繁榮成為人們關注的焦點之一,而音樂,作為文化的一部分&#xff0…

LeetCode算法日記 - Day 26: 歸并排序、交易逆序對的總數

目錄 1. 歸并排序 1.1 題目解析 1.2 解法 1.3 代碼實現 2. 交易逆序對的總數 2.1 題目解析 2.2 解法 2.3 代碼實現 1. 歸并排序 912. 排序數組 - 力扣(LeetCode) 給你一個整數數組 nums,請你將該數組升序排列。 你必須在 不使用任…

C++(Qt)軟件調試---vcpkg安裝crashpad(34)

C(Qt)軟件調試—vcpkg安裝crashpad(34) 文章目錄C(Qt)軟件調試---vcpkg安裝crashpad(34)[toc]1 概述🐜2 環境配置3 qt使用crashpad庫捕獲異常4 cmake中添加crashpad5 相關地址🐐更多精彩內容👉內…

Kafka 副本同步異常與 ISR 收縮故障排查實錄

背景 某高流量 Kafka 集群(原 10G 網卡)在切中心時頻繁觸發帶寬報警,擴容至 25G 網卡后出現副本同步異常: 操作流程:停機→升級網卡→重啟→觸發分區同步→切換首選 Leader現象: 寫入流量上升后&#xff0c…

頂點 (VS)vs 片段(FS):OpenGL紋理滾動著色器的性能博弈與設計哲學

一個微妙的選擇,影響整個應用性能表現在實時圖形渲染中,實現紋理滾動效果是一種常見需求。但當我們在頂點著色器和片段著色器之間做出不同實現選擇時,會對性能產生顯著影響。今天,我們將深入探討這兩種實現的差異,幫助…

基于博客系統的自動化測試項目

目錄 一、引言 二、項目背景 三、項目功能 1)初始登錄界面 2)博客首頁 3)博客詳情頁 4)博客編輯頁 四、測試工具 1)基礎操作系統環境 2)瀏覽器環境 3)開發與測試工具環境 4&#xf…

R 語言 eulerr 包繪制韋恩圖:比例精準

在數據可視化中,韋恩圖是展示多組數據交集關系的常用工具,尤其在生物信息(如基因差異表達分析)、統計分析等領域高頻使用。但傳統繪圖工具常面臨橢圓比例失衡、數值顯示混亂、樣式調整繁瑣等問題,而 R 語言的eulerr包恰好能解決這些痛點 —— 它支持按數據比例自動適配圖形…