【HMGD】STM32/GD32 CAN通信

各種通信協議速度分析

協議最高速度(btis/s)
I2C400K
CAN1M
CAN-FD5M
48510M
SPI36M

CAN協議圖和通信幀

在這里插入圖片描述

在這里插入圖片描述

CubeMX CAN配置說明

CAN通信波特率 = APB1頻率 / 分頻系數 /(BS1 + BS2 + 同步通信段)* 1000

? = 42 / 1 / (1+1+1) * 1000

? = 14,000 KHz

? = 14000000 bit/s

CAN最高只有1M,支持CAN-FD的單片機可以為8M

在這里插入圖片描述

Time Triggered Communication Mode:

時間觸發模式,用于生成時間戳,可以實現分時同步功能

Automatic Bus-Off Management

自動離線管理,當節點檢測到它發送錯誤或接收錯誤超過一定值時,會自動進入離線狀態

Automatic Wake-Up Mode

自動喚醒功能,CAN 外設可以使用軟件進入低功耗的睡眠模式,如果使能了這個自動喚醒功能,當 CAN 檢測到總線活動的時候,會自動喚醒

Automatic Retransmission

報文自動重傳功能,設置這個功能后,當報文發送失敗時會自動重傳至成功為止

Receive Fifo Locked Mode

FIFO 鎖定模式,該功能用于鎖定接收 FIFO。鎖定后,當接收 FIFO 溢出時,會丟棄下一個接收的報文。若不鎖定,則下一個接收到的報文會覆蓋原報文

Transmit Fifo Priority

報文發送優先級的判定方法,ID 優先級還是報文存進郵箱的順序來發送

Operating Mode:

CAN模式

在這里插入圖片描述
自發自收模式配置

在這里插入圖片描述

示例程序

在這里插入圖片描述

如果是GD32系列單片機需要在stm32f4xx_hal_can.c文件中添加如下代碼,解決初始化CAN死機問題

CLEAR_BIT(hcan->Instance->MCR, CAN_MCR_SLEEP);

在這里插入圖片描述

// 申明使用到的變量
uint8_t TX_data[20];
uint8_t RX_data[20];
uint32_t mailbox;
int back;
static CAN_TxHeaderTypeDef Tx_Header;
static CAN_FilterTypeDef can_filter;// CAN接收回調
void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)
{if(hcan->Instance == CAN1){CAN_RxHeaderTypeDef RxHeader;// 當接收到數據后放到TX數組,把數據返回去HAL_CAN_GetRxMessage(&hcan1, CAN_RX_FIFO0, &RxHeader, TX_data);//HAL_CAN_GetRxMessage(&hcan1, CAN_RX_FIFO0, &RxHeader, RX_data);HAL_GPIO_WritePin(GPIOD, GPIO_PIN_5, GPIO_PIN_SET);}
}int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_DMA_Init();// 初始化CAN1MX_CAN1_Init();// 啟用CAN的中斷通知功能HAL_CAN_ActivateNotification(&hcan1, CAN_IT_RX_FIFO0_MSG_PENDING);// 啟動CAN1HAL_CAN_Start(&hcan1);// 設置CAN過濾器(CAN配置詳解請看下一點)can_filter.FilterActivation = CAN_FILTER_ENABLE; can_filter.FilterMode = CAN_FILTERMODE_IDMASK;can_filter.FilterScale = CAN_FILTERSCALE_32BIT;can_filter.FilterIdHigh = 0x0000;      can_filter.FilterIdLow = 0x0000;can_filter.FilterMaskIdHigh = 0x0000;  can_filter.FilterMaskIdLow = 0x0000;can_filter.FilterBank = 0;can_filter.FilterFIFOAssignment = CAN_RX_FIFO0;can_filter.SlaveStartFilterBank = 14; HAL_CAN_ConfigFilter(&hcan1, &can_filter);// 初始數據TX_data[0] = 0x01;TX_data[1] = 0x02;TX_data[2] = 0x03;TX_data[3] = 0x01;TX_data[4] = 0x02;TX_data[5] = 0x03;TX_data[6] = 0x01;TX_data[7] = 0x02;while (1){	// 設置CAN發送信息Tx_Header.StdId=0x12345678;        Tx_Header.ExtId=0;                 Tx_Header.IDE=CAN_ID_STD;            Tx_Header.RTR=CAN_RTR_DATA;          Tx_Header.DLC=8;            // 發送數據back = HAL_CAN_AddTxMessage(&hcan1, &Tx_Header, TX_data, &mailbox);if(back == HAL_OK){// 發送成功亮燈HAL_GPIO_WritePin(GPIOD, GPIO_PIN_4, GPIO_PIN_SET);}HAL_Delay(1000);HAL_GPIO_WritePin(GPIOD, GPIO_PIN_4, GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOD, GPIO_PIN_5, GPIO_PIN_RESET);HAL_Delay(1000);}
}

https://download.csdn.net/download/hmxm6/89341938

CAN過濾器配置說明

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

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

相關文章

吉林大學計科21級《軟件工程》期末考試真題

文章目錄 21級期末考試題一、單選題(2分一個,十個題,一共20分)二、問答題(5分一個,六個題,一共30分)三、分析題(一個10分,一共2個,共20分&#xf…

前端自定義Echarts 圖的時候,重新渲染,頁面還保存原來的數據

自定義 setAxisSingleOption(optionData){var options this.axisSingleOptionoptions.title.text optionData.title.textoptions.xAxis.data optionData.xAxis.dataoptions.legend.data optionData.legend.dataoptions.series optionData.seriesoptions.grid optionData…

【C語言】10.C語言指針(1)

文章目錄 1.內存和地址1.1 內存1.2 究竟該如何理解編址 2.指針變量和地址2.1 取地址操作符(&)2.2 指針變量和解引?操作符(*)2.2.1 指針變量2.2.2 如何拆解指針類型2.2.3 解引?操作符 2.3 指針變量的?? 3.指針變量類型的意…

匯編:字符串的輸出

在16位匯編程序中,可以使用DOS中斷21h的功能號09h來打印字符串;下面是一個簡單的示例程序,演示了如何在16位匯編程序中打印字符串: assume cs:code,ds:data ? data segmentszBuffer db 0dh,0ah,HelloWorld$ //定義字符串 data …

【C++】哈夫曼編碼:高效的壓縮算法

哈夫曼編碼:高效的壓縮算法 什么是哈夫曼編碼? 哈夫曼編碼是一種用于數據壓縮的無損編碼方法,由David A. Huffman于1952年提出。它利用了字符出現頻率的不均勻性,通過構建最優前綴碼,能夠有效減少數據的冗余&#xf…

Flutter仿照微信實現九宮格頭像

一、效果圖 2、主要代碼 import dart:io; import dart:math;import package:cached_network_image/cached_network_image.dart; import package:flutter/material.dart;class ImageGrid extends StatelessWidget {final List<String> imageUrls; // 假設這是你的圖片URL…

關于Iterator 和ListIterator的詳解

1.Iterator Iterator的定義如下&#xff1a; public interface Iterator<E> {} Iterator是一個接口&#xff0c;它是集合的迭代器。集合可以通過Iterator去遍歷集合中的元素。Iterator提供的API接口如下&#xff1a; forEachRemaining(Consumer<? super E> act…

VS2022通過C++網絡庫Boost.Asio創建一個簡單的同步TCP服務器和客戶端

Boost.Asio是一個用于網絡和異步編程的C庫。它提供了一種跨平臺的方式來處理網絡編程和異步操作&#xff0c;使開發人員能夠創建高性能的網絡應用程序&#xff0c;asio幾乎支持所有你能夠想到的網絡協議&#xff0c;比如tcp、udp、ip、http、icmp等&#xff0c;C通過asio庫可以…

找出第 K 大的異或坐標值

問題 給你一個二維矩陣 matrix 和一個整數 k &#xff0c;矩陣大小為 m x n 由非負整數組成。 矩陣中坐標 (a, b) 的 值 可由對所有滿足 0 < i < a < m 且 0 < j < b < n 的元素 matrix[i][j]&#xff08;下標從 0 開始計數&#xff09;執行異或運算得到。…

淺談網絡通信(1)

文章目錄 一、認識一些網絡基礎概念1.1、ip地址1.2、端口號1.3、協議1.4、協議分層1.5、協議分層的2種方式1.5.1、OSI七層模型1.5.2、TCP/IP五層模型[!]1.5.2.1、TCP/IP五層協議各層的含義及功能 二、網絡中數據傳輸的基本流程——封裝、分用2.1、封裝2.2、分用2.2.1、5元組 三…

基于大模型和RAG技術實現的開源項目

基于大模型和RAG技術實現的開源項目 為解決大模型的不足&#xff0c;使用RAG技術增強大模型生成內容的針對性和可讀性能力&#xff0c;有很多不錯的開源項目。例如下面的項目。 1 ragflow 優點&#xff1a;可以對文檔和知識庫進行管理&#xff0c;構建不同的知識庫&#xff…

python冰雹序列的探索與編程實現

新書上架~&#x1f447;全國包郵奧~ python實用小工具開發教程http://pythontoolsteach.com/3 歡迎關注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目錄 一、冰雹序列的奧秘 二、編程實現冰雹序列 三、測試與驗證 四、總結與展望 一、冰雹序列的…

整理好了!2024年最常見 20 道 Redis面試題(八)

上一篇地址&#xff1a;整理好了&#xff01;2024年最常見 20 道 Redis面試題&#xff08;七&#xff09;-CSDN博客 十五、Redis 的性能調優有哪些方法&#xff1f; Redis的性能調優是一個多方面的工作&#xff0c;涉及到硬件、配置、代碼層面的優化等多個方面。以下是一些常…

openEuler 22.03 LTS SP3源碼編譯部署OpenStack-Caracal

openEuler 22.03 LTS SP3源碼編譯部署OpenStack-Caracal 說明機器詳情安裝操作系統注意事項基礎準備Controller節點 && Compute節點 && Block節點關閉防火墻關閉selinux設置靜態IP更新安裝前準備Controller節點 && Compute節點 && Block節點設…

第十課,while循環

一&#xff0c;認識循環是什么 循環普遍存在于日常生活中&#xff0c;同樣&#xff0c;在程序中&#xff0c;循環功能也是至關重要的基礎功能。 當程序需要重復執行某一段代碼&#xff0c;利用循環可以輕松完成工作 例如我要你打印100次上課&#xff0c;直接寫100次print&…

python調用阿里云通義千問(q-wen-max)API-只能總結pdf文檔內容

文章目錄 通義千問插件PDF解析插件調用案例通義千問插件 Dashscope插件功能能夠使得大模型的生成內容與外部三方應用結合,使得模型生成的內容更加準確和豐富,模型將擁有更好的生成能力。您也可以通過開發自定義插件,來使得模型生成更符合您預期的結果。 使用插件功能,大模…

電子閱覽室在管理時需注意什么

關于如今的絕大多數人來說&#xff0c;想必都聽說過“電子閱覽室”這一概念。它首要運用在校園中&#xff0c;給學生們供給愈加豐厚的常識儲藏。它也是一個獨立的局域網&#xff0c;在校園網絡中作為重要的一個組成部分而存在。但是&#xff0c;一個好的電子閱覽室是需求滿意運…

LORA學習筆記3——訓練參數

訓練步長 Step&#xff08;步&#xff09;:模型訓練時ai模型會根據標注生成一個圖片&#xff0c;并與學習圖片進行對比&#xff0c;通過對比的結果調整嵌入向量。這樣的一個流程就被稱為“一步”。 如果一個訓練集中有50張圖片&#xff0c;每張圖片設定為要訓練10次&#xff…

CCF20231201——倉庫規劃

CCF20231201——倉庫規劃 代碼如下&#xff1a; #include<bits/stdc.h> using namespace std; int main() {int n,m,a[1001][11],b[1001]{0};cin>>n>>m;for(int i1;i<n;i){for(int j1;j<m;j)cin>>a[i][j];}for(int i1;i<n;i){bool foundfals…

設計模式在芯片驗證中的應用——模板方法

一、模板方法 模板方法(Template Method)設計模式是一種行為設計模式&#xff0c; 它在父類中定義了一個功能的框架&#xff0c; 允許子類在不修改結構的情況下重寫功能的特定步驟。也就是模板方法定義了一組有序執行的操作&#xff0c;將一些步驟的實現留給子類&#xff0c;同…