STM32 CAN位同步、錯誤處理

一、接收方數據采樣

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

二、位時序

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

若是數據跳變沿正好出現在SS段(同步段),那就說明當前設備與波形達成同步。

PTS(傳播時間段):用于吸收網絡上的物理延時(發送單元的輸出延時,總線上信號的傳播延遲、接收單元的輸入延遲)

PBS1、PBS2(相位緩沖段):確定采樣點的位置,采樣點會在這兩個之間,通過調節這兩個的長度(還有PTS),就可以調節采樣點的位置。

三、硬同步

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

四、再同步?

  • 若發送方或接收方的時鐘有誤差,隨著誤差積累,數據位邊沿逐漸偏離SS段,則此時接收方根據再同步補償寬度值SJW)通過加長PBS1段,或縮短PBS2段,以調整同步
  • 再同步可以發生在第一個下降沿之后的每個數據位跳變邊沿

注:SJW = 1~4Tq,SJW是補償的最大限值,例如有2TQ的延遲,此時給SJW為3,則只會補償給時序段兩個,而不是SJW的3個。但是有3Tq的延遲,此時SJW為2,則只補償2Tq

五、波特率的計算

六、資源分配原則

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

(1)資源分配規則1 - 先占先得

(2)資源分配規則2 - 非破壞性仲裁

注:回讀機制,就是為了檢測自己是否與?仲裁段的ID和RTR相同,仲裁失利后就等到下一次再發送。

(3)數據幀和遙控幀的優先級

當A設備想使用遙控幀請求C設備的數據,同時B設備想用數據幀對C傳輸數據時。

數據幀和遙控幀ID號一樣時,數據幀的優先級高于遙控幀

(4)標準格式和擴展格式的優先級

標準格式11位ID號和擴展格式29位ID號的高11位一樣時,標準格式的優先級高于擴展格式(SRR必須始終為1,以保證此要求)

七、錯誤處理

錯誤共有5種: 位錯誤填充錯誤CRC錯誤格式錯誤應答錯誤

位錯誤:六-(2)講到的回讀機制,但是在仲裁段的回讀錯誤視為仲裁失利,而不是一個錯誤

(一)錯誤狀態

在此之前先復習一下先前的 五-(三)?錯誤幀:CAN簡介及幀格式

  • 主動錯誤狀態的設備正常參與通信并在檢測到錯誤時發出主動錯誤幀,可以破壞別設備的數據,權力較大,若是頻繁發出錯誤,則會轉到下面的被動錯誤狀態。主動錯誤狀態是設備的初始狀態,是比較可靠的狀態
  • 被動錯誤狀態的設備正常參與通信但檢測到錯誤時只能發出被動錯誤幀,不可以破壞別設備的通信,若是還是頻繁,則轉到下面總線關閉狀態
  • 總線關閉狀態的設備不能參與通信
  • 每個設備內部管理一個TEC和REC,根據TEC和REC的值確定自己處于上面三個當中的哪個狀態

TEC:發送錯誤計數器,每發現一個錯誤,則增加一次,正常發送一次,則減小一次

REC:接收錯誤計數器,每接收一個錯誤,則增加一次,正常接收一次,則減小一次

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

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

相關文章

django serializer __all__中 額外添加外鍵里的某一個屬性

在Django中使用序列化器(Serializer)時,你可能會遇到需要將模型(Model)中的外鍵字段轉換成其關聯對象的一部分屬性的情況。默認情況下,序列化器會自動序列化外鍵字段,但如果你想要在序列化結果中…

Redis快的原因

Redis 高性能的核心原因 Redis 之所以能達到極高的性能(10萬 QPS),主要源于以下幾個關鍵設計: 1. 純內存操作 核心優勢:所有數據存儲在內存中,避免了磁盤 I/O 瓶頸 內存訪問速度比磁盤快 10萬倍以上&am…

【大模型微調】6.模型微調實測與格式轉換導出

引言 本文繼續研究 LLaMA-Factory 微調數據的流程,側重于微調結果與模型導出。 數據集準備 首先參考 LLaMA-Factory 核心開發者的文章[1],下載用于微調的公開的商品文案數據集 AdvertiseGen。 下載地址:https%3A//cloud.tsinghua.edu.cn/…

3085. 成為 K 特殊字符串需要刪除的最少字符數

3085. 成為 K 特殊字符串需要刪除的最少字符數 給你一個字符串 word 和一個整數 k。 如果 |freq(word[i]) - freq(word[j])| < k 對于字符串中所有下標 i 和 j 都成立&#xff0c;則認為 word 是 k 特殊字符串。 此處&#xff0c;freq(x) 表示字符 x 在 word 中的出現頻…

分布式系統中的 Kafka:流量削峰與異步解耦(二)

Kafka 在分布式系統中的應用案例 電商訂單系統 在電商領域&#xff0c;訂單系統是核心業務模塊之一&#xff0c;涉及多個復雜的業務環節和系統組件之間的交互。以常見的電商購物流程為例&#xff0c;當用戶在電商平臺上下單后&#xff0c;訂單創建服務會首先接收到用戶的訂單…

從事登高架設作業需要注意哪些安全事項?

從事登高架設作業&#xff08;如腳手架搭設、高空維修、外墻清洗等&#xff09;屬于高風險特種作業&#xff0c;必須嚴格遵守安全規范。以下是關鍵安全注意事項&#xff0c;涵蓋作業前準備、作業中操作、應急處理三大環節&#xff0c;符合國家《高處作業安全技術規范》&#xf…

RA4M2開發IOT(6)----涂鴉模組快速上云

RA4M2開發IOT.6--涂鴉模組快速上云 概述視頻教學樣品申請硬件準備參考程序涂鴉官網鏈接創建一個項目選擇對應產品產品基本配置添加標準功能APP界面配置硬件選擇產品配置硬件詳情PCB原理圖涂鴉調試文件下載進入調試涂鴉模塊串口協議心跳檢測查詢產品信息查詢工作模式AP配網APP鏈…

AI時代SEO關鍵詞革新

內容概要 在人工智能&#xff08;AI&#xff09;技術快速發展的背景下&#xff0c;搜索引擎優化&#xff08;SEO&#xff09;關鍵詞策略正經歷根本性變革。本文將系統闡述AI如何重塑關鍵詞研究、優化及效果評估的全流程。具體而言&#xff0c;首先解析智能研究方法在挖掘用戶意…

JavaEE初階第三期:解鎖多線程,從 “單車道” 到 “高速公路” 的編程升級(一)

專欄&#xff1a;JavaEE初階起飛計劃 個人主頁&#xff1a;手握風云 目錄 一、認識線程 1.1. 概念 1.2. 為什么要使用線程 1.3. 進程和線程的關系 1.4. 多線程模型 二、多線程的創建 2.1. 繼承Thread類 2.2. 實現Runnable接口 2.3. 匿名內部類 2.4. lambda表達式 一、…

【StarRocks系列】建表優化

目錄 一、數據模型選擇 (核心優化) 二、分區與分桶策略 (數據分布優化) 三、字段類型與壓縮 四、索引策略 五、高級特性應用 六、建表示例&#xff08;關鍵優化整合&#xff09; 參考官網 優化性能 | StarRocks 在 StarRocks 中創建表時&#xff0c;合理的表設計是性能優…

linux-vim編輯器

linux-vim編輯器 前言一、命令模式1. 跳轉功能2. 文本編輯3. 模式切換 二、輸入模式1. 進入輸入模式2. 快捷鍵 三、末行模式1. 進入末行模式2. 文件操作3. 查找與替換4. 行操作 四、替換模式五、可視模式1. 進入可視模式2. 文本操作 六、相關配置 前言 vim - Vi IMproved, a p…

SQL關鍵字三分鐘入門: 表結構管理與分區設計。(ALTER、MODIFY、CHANGE、DEFAULT、VALUES、LESS THAN、RANGE)

前面我們已經學習了如何查詢數據&#xff08;SELECT&#xff09;、篩選數據&#xff08;WHERE&#xff09;等操作。現在我們要進入數據庫的另一個重要領域 —— 表結構管理與分區設計。 本文帶你快速認識以下關鍵字&#xff1a; ? ALTER? MODIFY? CHANGE? DEFAULT? VALU…

深度剖析:RTTI輕量框架實現原理與架構(C++ 17 高級編程)

&#x1f680; C RTTI反射系統深度設計文檔 &#x1f30c; 核心架構圖 #mermaid-svg-aWkaWoFklq1ylap6 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-aWkaWoFklq1ylap6 .error-icon{fill:#552222;}#mermaid-svg-a…

03-D3.js SVG text標簽?

Data Visualization D3.js ? SuperHiLearn how to create interactive, engaging experiences using HTML, CSS, SVG and Javascript.https://www.superhi.com/catalog/data-visualization-with-d3 text - SVG&#xff1a;可縮放矢量圖形 | MDNtext元素定義了一個由文字組成…

Python 使用Gitlab Api

代碼 REST API 見自帶幫助文檔 python 安裝python-gitlab pip install --upgrade python-gitlab使用API 參考&#xff1a;https://python-gitlab.readthedocs.io/en/stable/api-usage.html import gitlab# anonymous read-only access for public resources (GitLab.com…

中醫體質識別:理論、方法與應用的簡要綜述

中醫體質識別&#xff1a;理論、方法與應用的簡要綜述 摘要 中醫體質識別是中醫“治未病”及個性化診療的關鍵環節。本文系統闡述中醫體質識別&#xff0c;涵蓋理論基礎、常見體質類型、識別方法、現代技術應用及臨床實踐。中醫體質理論源遠流長&#xff0c;《黃帝內經》奠定…

稀疏表原理及應用場景

1 概述 稀疏表&#xff08;Sparse Table&#xff0c;ST&#xff09;是一種用于高效解決 靜態區間查詢&#xff08;Range Query&#xff09; 問題的數據結構&#xff0c;主要用于 可重復貢獻問題&#xff08;Idempotent Range Queries&#xff09;&#xff0c;例如區間最小值&a…

【深度學習與機器學習的區別】從本質到應用的全景對比

目錄 前言 一、三者關系&#xff1a;深度學習是機器學習的子集 1.1 概念關系 1.2 類比理解&#xff1a;動物 vs 哺乳動物 1.3 舉個例子更清楚 1.4 為什么“機器學習 ≠ 深度學習”&#xff1f; 1.5 最容易搞混的地方 二、核心區別總覽&#xff08;對比表&#xff09; …

Masscan常用命令詳解

一、工具介紹 Masscan是一款開源、高速的網絡端口掃描工具&#xff0c;設計目標是實現最快的掃描速度。它能夠在極短的時間內完成大規模的網絡掃描&#xff0c;適用于互聯網級別的掃描任務。它采用異步傳輸和自定義TCP/IP協議棧技術&#xff0c;最快可實現每秒160萬數據包的掃…

STM32的內部RC與外部晶振電路

內部RC是“能用”&#xff0c;外部晶振是“用得準”。 一、STM32芯片內部的“晶振電路”是什么&#xff1f; STM32內部確實集成了兩個RC&#xff08;電阻-電容&#xff09;振蕩器&#xff1a; HSI&#xff08;高速內部振蕩器&#xff09;&#xff1a;通常8MHz&#xff0c;精…