【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.mzph.cn/bicheng/16299.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

吉林大学计科21级《软件工程》期末考试真题

文章目录 21级期末考试题一、单选题(2分一个,十个题,一共20分)二、问答题(5分一个,六个题,一共30分)三、分析题(一个10分,一共2个,共20分&#xf…

【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 …

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库可以…

浅谈网络通信(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元组 三…

python冰雹序列的探索与编程实现

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、冰雹序列的奥秘 二、编程实现冰雹序列 三、测试与验证 四、总结与展望 一、冰雹序列的…

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;一个好的电子阅览室是需求满意运…

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;同…

把自己的垃圾代码发布到官方中央仓库

参考博客&#xff1a;将组件发布到maven中央仓库-CSDN博客 感谢这位博主。但是他的步骤有漏缺&#xff0c;相对进行补充 访问管理页面 网址&#xff1a;Maven Central 新注册账号&#xff0c;或者使用github快捷登录&#xff0c;建议使用github快捷登录 添加命名空间 注意&…

【Linux】进程通信实战 —— 进程池项目

送给大家一句话: 没有一颗星&#xff0c;会因为追求梦想而受伤&#xff0c;当你真心渴望某样东西时&#xff0c;整个宇宙都会来帮忙。 – 保罗・戈埃罗 《牧羊少年奇幻之旅》 &#x1f3d5;️&#x1f3d5;️&#x1f3d5;️&#x1f3d5;️&#x1f3d5;️&#x1f3d5;️ &a…

flink cdc mysql整理与总结

文章目录 一、业务中常见的需要数据同步的场景CDC是什么FlinkCDC是什么CDC原理为什么是FlinkCDC业务场景flink cdc对应flink的版本 二、模拟案例1.阿里云flink sql2.开源flink sql(单机模式)flink 安装安装mysql3.flink datastream 三、总结 提示&#xff1a;以下是本篇文章正文…

kali基本扫描工具(自带)

免责声明:本文仅做技术交流与学习...请勿非法破坏... 详细用法: 命令 -h/百度/翻译 fping 用法 hostlist 文件里面为ip fping -a -q -f hostlist -a 只看存活的 fping -g 202.100.1.1 202.100.1.255 -a -q > Ahost 输出到Ahost文件上 nping nping -c 1 201.100.2.155-244 …

香橙派AIpro使用SSH远程登录

香橙派AIpro可以连接HDMI显示器使用&#xff0c;也可以远程登录。这里采用MobaXterm软件远程登录开发板。 首先要使得控制电脑和香橙派开发板连接到同一个局域网&#xff0c;两者的IP地址能够ping通。在Windows 下可以使用MobaXterm 远程登录开发板&#xff0c;首先新建一个ss…

属于程序员的浪漫,一颗会跳动的心!!!

绘制一颗会跳动的心❤ 嘿嘿 可以说是程序员的专属浪漫了吧&#xff0c;就像点燃一颗LED灯一样&#xff1f;&#xff08;我瞎说的啊&#xff0c;大家别当真&#xff0c;我很菜的&#xff01;&#xff01;&#xff01;&#xff01;&#xff09; 程序就在下面啦&#xff0c;然…