STM32提高篇: CAN通訊

STM32提高篇: CAN通訊

  • 一.CAN通訊介紹
    • 1.物理層
    • 2.協議層
  • 二.STM32CAN外設
    • 1.CAN控制器的3種工作模式
    • 2.CAN控制器的3種測試模式
    • 3.功能框圖
  • 三.CAN的寄存器介紹
    • 1.環回靜默模式測試
    • 2.雙擊互發測試
  • 四.CAN的HAL代碼解讀

一.CAN通訊介紹

CAN(Controller Area Network 控制器局域網,簡稱CAN或者CAN bus)是一種功能豐富的車用總線標準。被設計用于在不需要主機(Host)的情況下,允許網絡上的單片機和儀器相互通信。
它基于消息傳遞協議,設計之初在車輛上復用通信線纜,以降低銅線使用量,后來也被其他行業所使用。
CAN擁有了良好的彈性調整能力,可以在現有網絡中增加節點而不用在軟、硬件上做出調整。除此之外,消息的傳遞不基于特殊種類的節點,增加了升級網絡的便利性。
在這里插入圖片描述

1.物理層

CAN網絡節點:一個CAN控制器,生成邏輯信號。一個CAN收發器,負責將總線上來的數據轉換成邏輯信號交給控制器,如果想往外發數據控制器將邏輯信號給收發器,收發器再將邏輯信號轉換為高低電平放到總線上。
控制器一般由MCU提供,收發器一般由專門的芯片提供。控制器和收發器間由CAN_Tx和CAN_Rx信號線相連。收發器與CAN總線之間使用CAN_High和CAN_Low信號線相連。
在這里插入圖片描述
CAN網絡節點發數據:
控制器將要發送的二進制編碼通過CANTX線發送到收發器,收發器將邏輯信號轉化為差分信號,通過CANHigh和CANLow線輸出到CAN總線網絡。
在這里插入圖片描述
CAN網絡節點收數據:
收發器把總線上收到的CANHigh及CANLow信號轉化成普通的邏輯電平信號,通過CANRx輸出到控制器中。
在這里插入圖片描述
CAN總線網絡:
在這里插入圖片描述
閉環總線網絡:
在這里插入圖片描述
開環總線網絡:
在這里插入圖片描述
差分信號:
在這里插入圖片描述
優缺點:
在這里插入圖片描述
邏輯電平定義:
在這里插入圖片描述

2.協議層

CAN總線是廣播類型的總線。這意味著所有節點都可以偵聽到所有傳輸的報文。無法將報文單獨發送給指定節點;所有節點都將始終捕獲所有報文。但是CAN硬件能夠提供本地過濾功能,讓每個節點對報文有選擇性地做出響應。
CAN使用短報文 – 最大實用負載是94位。報文中沒有任何明確的地址;相反,可以認為報文是通過內容尋址,也就是說,報文的內容隱式地確定其地址。
CAN總線上有5種不同的報文類型(或“幀”):數據幀,遠程幀,錯誤幀,過載幀和幀間隔。
數據幀 :
數據幀是最常見的報文類型,用于發送單元向接收單元發送數據。
遠程幀(遙控幀):
遠程幀用于接收單元向具有相同id的發送單元請求發送數據。
錯誤幀:
錯誤幀當檢測出錯誤時向其他單元通知錯誤的幀。
過載幀:
過載幀并不常用,因為當今的CAN控制器會非常智能化地避免使用過載幀。
幀間隔:
用于將數據幀及遙控幀與前面的幀分離開來的幀。
其中錯誤幀、過載幀、幀間隔都是由硬件自動完成的,沒有辦法用軟件來控制。對于一般使用者來說,只需要掌握數據幀與遙控幀。數據幀和遙控幀有標準格式與擴展格式。標準格式有11位標識符,擴展格式有29位標識符。
數據幀介紹:
標準格式有2種數據幀,標準幀和擴展幀。
標準幀:
幀起始
在這里插入圖片描述
仲裁段
多個ID同時發顯性位多(0多)勝出。
在這里插入圖片描述
控制段
在這里插入圖片描述
數據段
在這里插入圖片描述
CRC校驗
在這里插入圖片描述
ACK應答
在這里插入圖片描述
EOF段
在這里插入圖片描述
擴展幀和標準幀區別:
在這里插入圖片描述
遠程幀介紹:
與數據幀相比沒有數據段。
在這里插入圖片描述
CAN總線仲裁:
在這里插入圖片描述
CAN的位時序:
在這里插入圖片描述
同步段
在這里插入圖片描述
相位緩沖段
在這里插入圖片描述
采樣點
在這里插入圖片描述
CAN的數據同步:
在這里插入圖片描述
CAN的波特率:
在這里插入圖片描述

二.STM32CAN外設

STM32的芯片中具有bxCAN控制器(Basic Extended CAN),它支持CAN協議2.0A 和2.0B Active標準。(CAN2.0A只能處理標準數據幀且擴展幀的內容會織別錯誤。而CAN2.0 B Active可以處理標準數據幀和擴展數據幀。CAN2.0 B Passive只能處理標準數據幀而擴展幀的內容會被忽略)。
該CAN控制器支持最高的通訊速率為1Mb/s;可以自動地接收和發送CAN報文,支持使用標準ID和擴展ID的報文;外設中具有3個發送郵箱,發送報文的優先級可以使用軟件控制,還可以記錄發送的時間;具有2個3級深度的接收FIFO,可使用過濾功能只接收或不接收某些ID號的報文;可配置成自動重發;不支持使用DMA進行數據收發。

1.CAN控制器的3種工作模式

分別為:初始化模式,正常模式,睡眠模式。
在這里插入圖片描述

2.CAN控制器的3種測試模式

有3種測試模式:靜默模式環回模式環回靜默模式。當控制器進入初始化模式的時候才可以配置測試模式。
靜默模式可以檢測總線的數據流量。環回模式可以用于自檢(影響總線)。環回靜默模式也用于自檢,不會影響總線。
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

3.功能框圖

在這里插入圖片描述
主動內核:
含各種控制/狀態/配置寄存器,可以配置模式、波特率等。在STM32CubeMx中可以非常方便的配置。
發送郵箱:
用來緩存待發送的報文,最多可以緩存3個報文。發送調度決定報文的發送順序。
接收FIFO:
共有2個接收FIFO,每個FIFO都可以存放3個完整的報文。它們完全由硬件來管理。從而節省了CPU的處理負荷,簡化了軟件并保證了數據的一致性。應用程序只能通過讀取FIFO輸出郵箱,來讀取FIFO中最先收到的報文。
接收濾波器(過濾器):
做用:對接到的報文進行過濾。最后放入FIFO 0或FIFO 1。
當總線上報文數據量很大時,總線上的設備會頻繁獲取報文,占用CPU。過濾器的存在,選擇性接收有效報文,減輕系統負擔。
2種過濾模式:
(1)標識符列表模式,它把要接收報文的ID列成一個表,要求報文ID與列表中的某一個標識符完全相同才可以接收,可以理解為白名單管理。
(2)掩碼模式(屏蔽位模式),它把可接收報文ID的某幾位作為列表,這幾位被稱為掩碼,可以把它理解成關鍵字搜索,只要掩碼(關鍵字)相同,就符合要求,報文就會被保存到接收FIFO。
如果使能了篩選器,且報文的ID與所有篩選器的配置都不匹配,CAN外設會丟棄該報文,不存入接收FIFO。
每個CAN提供了14個位寬可變的、可配置的過濾器組(13~0)。每個過濾器組x由2個32位寄存器,CAN_FxR1和 CAN_FxR2組成。
在這里插入圖片描述
說明:
(1)當工作于32位屏蔽位模式時,FR1保存標識符,FR2保存屏蔽。FR2某位是1表示來的ID的這位必須和FR1中對應的位一致,FR2某位是0,表示ID的這位不關心。
(2)當工作于32位標識符模式時。FR1和FR2分別保存兩個標識符。這意味著將來只有兩個ID會匹配成功。
STM32種CAN的位時序:
STM32 外設定義的位時序與我們前面

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

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

相關文章

Java寫數據結構:棧

1.概念: 一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行數據插入和刪除操作的一端稱為棧頂,另一端稱為棧底。棧中的數據元素遵守后進先出LIFO(Last In First Out)的原則。 壓棧:棧的插…

單頁面應用的特點,什么是路由,VueRouter的下載,安裝和使用,路由的封裝抽離,聲明式導航的介紹和使用

文章目錄 一.什么是單頁面應用?二.什么是路由?生活中的路由和Vue中的路由 三.VueRouter(重點)0.引出1.介紹2.下載與使用(5個基本步驟2個核心步驟)2.1 五個基本步驟2.2 兩個核心步驟 四.路由的封裝抽離五.聲明式導航1.導航鏈接特點一:能跳轉特點二:能高亮 2.兩個高亮類名2.1.區…

【C++】模板2.0

最近學習了一些模板的知識,速寫本博客作為學習筆記,若有興趣,歡迎垂閱讀! 1.非類型模板參數 模板參數分類類型形參與非類型形參。 類型形參即:出現在模板參數列表中,跟在class或者typename之類的參數類型名…

目標檢測中的損失函數(二) | BIoU RIoU α-IoU

BIoU來自發表在2018年CVPR上的文章:《Improving Object Localization With Fitness NMS and Bounded IoU Loss》 論文針對現有目標檢測方法只關注“足夠好”的定位,而非“最優”的框,提出了一種考慮定位質量的NMS策略和BIoU loss。 這里不贅…

如何在 Amazon EC2 上部署 Java(Spring Boot 版)

讓我們學習如何將 Java Spring Boot Web 服務器部署到 Amazon EC2。每月只需 3 美元。 使用 Azure,您可能不知道要花費多少錢。 Spring Boot 項目示例 在本教程中,我們將重點介紹如何將 Java Spring Boot 服務器部署到 Amazon EC2,因此我們不…

Git常用命令分類匯總

Git常用命令分類匯總 一、基礎操作 初始化倉庫git init添加文件到暫存區git add file_name # 添加單個文件 git add . # 添加所有修改提交更改git commit -m "提交描述"查看倉庫狀態git status二、分支管理 創建/切換分支git branch branch_name …

mysql——基礎知識

關鍵字大小寫不敏感 查看表結構中的 desc describe 描述 降序中的 desc descend 1. 數據庫的操作 1. 創建數據庫 create database 數據庫名;為防止創建的數據庫重復 CREATE DATABASE IF NOT EXISTS 數據庫名;手動設置數據庫采用的字符集 character set 字符集名;chars…

Redis 哨兵與集群腦裂問題詳解及解決方案

Redis 哨兵與集群腦裂問題詳解及解決方案 本文將深入探討Redis在哨兵模式和集群模式下可能出現的腦裂問題,包括其發生場景、原因以及有效的解決策略。同時,我們還將提供相應的代碼示例和配置方案來幫助讀者理解和實施。 一、腦裂問題概述 腦裂&#x…

國內網絡設備廠商名單(List of Domestic Network Equipment Manufacturers)

國內網絡設備廠商名單 運維工程師必須廣泛熟悉國內外各大廠商的設備,深入掌握其應用場景、功能特點及優勢。這不僅有助于在故障排查時迅速定位問題,還能在系統設計、優化與升級中做出更合理的決策。對設備特性的精準把握,能夠顯著提升運維效…

2、SpringAI接入ChatGPT與微服務整合

2、SpringAI接入ChatGPT與微服務整合 小薛博客AI 大模型資料 1、SpringAI簡介 https://spring.io/projects/spring-ai Spring AI是一個人工智能工程的應用框架。其目標是將Spring生態系統的設計原則(如可移植性和模塊化設計)應用于人工智能領域&#…

基于ubuntu24.10安裝NACOS2.5.1的簡介

基于ubuntu24.10安裝NACOS2.5.1的簡介 官方網站地址: https://nacos.io 可訪問nacos站點 https://nacos.io/zh-cn/ 2025年04月記錄發布 V2.5.1 版本 一、環境預準備 64 bit JDK 1.8; sudo apt update sudo apt install openjdk-8-jdk sudo apt upda…

神經網絡:從基礎到應用,開啟智能時代的大門

在當今數字化時代,神經網絡已經成為人工智能領域最熱門的技術之一。從語音識別到圖像分類,從自然語言處理到自動駕駛,神經網絡的應用無處不在。它不僅改變了我們的生活方式,還為各個行業帶來了前所未有的變革。本文將帶你深入了解…

[k8s實戰]Containerd 1.7.2 離線安裝與配置全指南(生產級優化)

[k8s實戰]Containerd 1.7.2 離線安裝與配置全指南(生產級優化) 摘要:本文詳細講解在無外網環境下部署 Containerd 1.7.2 容器運行時的完整流程,涵蓋二進制包安裝、私有鏡像倉庫配置、Systemd服務集成等關鍵步驟,并提供…

【CPU】結合RISC-V CPU架構回答中斷系統的7個問題(個人草稿)

結合RISC-V CPU架構對中斷系統七個關鍵問題的詳細解析,按照由淺入深的結構進行說明: 一、中斷請求機制(問題①) 硬件基礎: RISC-V通過CLINT(Core Local Interrupter)和PLIC(Platfor…

[密碼學實戰]國密算法面試題解析及應用

以下是密碼學領域常見的面試題及其詳細解析,涵蓋基礎理論、算法實現與應用場景,幫助系統化備戰技術面試 一、基礎概念類 1. 密碼學的主要目標是什么? 答案: 確保數據的機密性(加密防止竊聽)、完整性(哈希校驗防篡改)、認證性(數字簽名驗證身份)和不可否認性(簽名防…

Spring Boot 實現 Excel 導出功能(支持前端下載 + 文件流)

🧠 一、為什么用 EasyExcel? 在 Java 開發中,操作 Excel 的框架主要有: Apache POI(經典但慢、內存占用大) JXL(老舊不維護) Alibaba EasyExcel(阿里出品,…

【論文速遞】2025年06周 (Robotics/Embodied AI/LLM)

目錄 SMOLLM2:當Smol變得大 - 以數據為中心的小語言模型英文摘要中文摘要 OmniHuman-1:重新考慮一階段的人類動畫模型的擴展英文摘要中文摘要 S1:簡單的測試時間縮放英文摘要中文摘要 直接對齊算法間的差異日漸模糊英文摘要中文摘要 VideoJAM…

學習深度學習是否要先學習機器學習?工程師的路徑選擇策略

深度學習與機器學習的關系,如同摩天大樓與地基——前者是后者的高階延伸,但能否繞過地基直接造樓?本文從技術本質、學習曲線、應用場景三個維度剖析這一關鍵問題。 一、技術血脈的承繼關系 概念體系同源: 損失函數、梯度下降、過擬…

開始放飛之先搞個VSCode

文章目錄 開始放飛之先搞個VSCode重要提醒安裝VSCode下載MinGW-w64回到VSCode中去VSCode原生調試鍵盤問題遺留問題參考文獻 開始放飛之先搞個VSCode 突然發現自己的新臺式機上面連個像樣的編程環境都沒有,全是游戲了!!!&#xff…

【2025“華中杯”大學生數學建模挑戰賽】選題分析 A題 詳細解題思路

目錄 2025“華中杯”大學生數學建模挑戰賽選題分析A題:晶硅片產銷策略優化B題:校園共享單車的調度與維護問題C題:就業狀態分析與預測D題:患者院內轉運不良事件的分析與預測 A 題 晶硅片產銷策略優化問題 1:月利潤計算模…