MCU常见通信总线串讲(五)—— CAN总线协议

news2024/12/23 23:39:01

🙌秋名山码民的主页
😂oi退役选手,Java、大数据、单片机、IoT均有所涉猎,热爱技术,技术无罪
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
获取源码,添加WX

目录

  • 前言
  • 一、CAN总线概述
  • 二、CAN总线物理层
  • 三、CAN总线协议层
  • 最后


前言

首先明确一个概念,关于MCU中通信总线和通信协议,通信总线是一种用于连接各种外设和模块的物理接口,它可以传输数据和控制信息。通信协议则是指在通信总线上传输数据时所遵循的规则和约定,以确保不同设备之间能够正确地交换信息,我们也可以把他叫做通信总线协议。

系列文章,主要讲解以下几个总线协议,读者可以按需选择:

  1. UART和USART
  2. RS232、RS485总线
  3. IIC总线
  4. SPI总线
  5. CAN总线
  6. USB总线

一、CAN总线概述

CAN总线是控制器局域网络(Controller Area Network)的缩写,它是一种现代的通信协议和物理层总线标准,最初由德国的Bosch公司开发。CAN总线广泛应用于汽车、工业控制系统、航空航天领域以及其他需要可靠的实时通信的领域。CAN网络的消息是广播式的,即在同一时刻网络上所有节点侦测的数据是一致的,它是一种基于消息广播模式的串行通信总线。

can总线的优势:
包括高可靠性、实时性强、抗干扰能力强、通信效率高等优点。它可以支持多个节点之间的通信,并且能够在通信过程中自动进行错误检测和纠正,因此非常适合用于对通信质量要求较高的场合。

二、CAN总线物理层

CAN总线的物理层定义了在CAN总线上进行数据传输时所使用的电气和物理特性。根据CAN总线物理层的标准,有两种常见的物理层实现方式:

  1. CAN高/低速物理层:CAN总线的高/低速物理层适用于不同的通信速率要求。在高速物理层中,数据传输速率可达到最高1 Mbps;而在低速物理层中,数据传输速率通常为10 Kbps或者更低。

  2. 差分信号传输:CAN总线采用差分信号传输,即每个信号线都是成对出现的,一个为CAN_H(高电平),另一个为CAN_L(低电平)。这种差分传输方式可以提供较强的抗干扰能力,使得CAN总线能够在电磁干扰较强的环境中正常工作。

此外,CAN总线还有一些其他的物理层实现方式,如光纤CAN和无线CAN等。不同的应用场景可能需要不同的物理层实现方式,以满足其特定的通信需求。

三、CAN总线协议层

CAN总线协议层是指在CAN总线上进行数据传输时所采用的通信规则和协议。CAN总线协议层主要包括以下几个方面:

  1. 帧格式:CAN总线使用两种不同的帧格式,分别是标准帧和扩展帧。标准帧包含11位标识符,而扩展帧包含29位标识符,允许更多的消息标识符,以支持更大规模的网络和更多的节点。

  2. 通信方式:CAN总线采用基于事件的通信方式,节点之间可以根据消息的优先级进行通信,而无需主从节点的概念。这种通信方式使得CAN总线能够实现实时性较强的数据交换。

  3. 错误处理:CAN总线协议层定义了一套完善的错误处理机制,包括重发机制、错误帧标识和错误状态报告等,以确保数据传输的可靠性和稳定性。

  4. 数据帧和远程帧:CAN总线支持数据帧和远程帧。数据帧用于实际的数据传输,而远程帧用于请求其他节点发送特定的数据帧,从而实现数据的请求和响应。

  5. 过滤和屏蔽:CAN总线协议层支持过滤和屏蔽机制,可以根据标识符对接收到的消息进行过滤和筛选,从而只处理感兴趣的消息。

最后

如果本文对你有所帮助,还请三连支持一下博主!
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1209190.html

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

相关文章

DSP生成hex方法

以下使用两种方法生成的HEX文件,亲测可用 (1)万能法 不管.out文件是哪个版本CCS编译器生成的,只要用HEX2000.exe软件,翻译都可以使用。方法: hex2000 -romwidth 16 -memwidth 16 -i -o 20170817chuankou…

问题 G: Girls and Boys(最大独立集)

由于未知编号对应性别&#xff0c;故进行两次作图 详细看下图&#xff0c; 该图为转载&#xff1a; AC代码&#xff08;较转载代码修改过&#xff0c;源代码无法AC&#xff09;&#xff1a; #include<iostream> #include<string.h> using namespace std; #define …

Hadoop-HDFS架构与设计

HDFS架构与设计 一、背景和起源二、HDFS概述1.设计原则1.1 硬件错误1.2 流水访问1.3 海量数据1.4 简单一致性模型1.5 移动计算而不是移动数据1.6 平台兼容性 2.HDFS适用场景3.HDFS不适用场景 三、HDFS架构图1.架构图2.Namenode3.Datanode 四、HDFS数据存储1.数据块存储2.副本机…

基于 Redis 实现的分布式锁

获取锁 互斥&#xff1a;确保只有一个线程获得锁 # 添加锁 利用setnx的互斥性 127.0.0.1:6379> setnx lock thread1释放锁 手动释放锁 超时释放&#xff1a;获取锁时设置一个超时时间 #释放锁 删除即可 127.0.0.1:6379> del lock两步合成一步 help setSET key value …

轻量封装WebGPU渲染系统示例<31>- 若干线条对象(源码)

线条对象包括: AABB包围盒&#xff0c;OBB包围盒, 曲线&#xff0c;直线&#xff0c;圆&#xff0c;坐标轴&#xff0c;视锥体线框&#xff0c;矩形网格等。 当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/LineOb…

【kafka】 查看节点的消息

对于初学者来说&#xff0c;可能想去节点看看有没有消息产生和消费&#xff0c;可以去kafka的bin目录下执行这个命令&#xff1a; kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic myTopic --from-beginning 这个命令可以理解为&#xff1a;生产过的消…

HarmonyOS分布式文件系统开发指导

分布式文件系统概述 分布式文件系统&#xff08;hmdfs&#xff0c;HarmonyOS Distributed File System&#xff09;提供跨设备的文件访问能力&#xff0c;适用于如下场景&#xff1a; 两台设备组网&#xff0c;用户可以利用一台设备上的编辑软件编辑另外一台设备上的文档。平板…

threejs(13)-着色器设置点材质

着色器材质内置变量 three.js着色器的内置变量&#xff0c;分别是 gl_PointSize&#xff1a;在点渲染模式中&#xff0c;控制方形点区域渲染像素大小&#xff08;注意这里是像素大小&#xff0c;而不是three.js单位&#xff0c;因此在移动相机是&#xff0c;所看到该点在屏幕…

PTE-RS 练习(二)

目录 内容分漏多漏少没有什么关系 Write Essay 感知比记忆强的多 记住骨干&#xff0c;剩下脑补 套上有含义的帽子 &#xff0c; 套上了信息就会很牢固 谁在说&#xff0c;为什么会说这句话 听不懂那个文本如何处理 要产生表达欲 会分为很多的块 做好意群分割…

论文精读 MediaPipe BlazeFace

BlazeFace:Sub-millisecond Neural Face Detection on Mobile GPUs BlazeFace&#xff1a;基于移动GPUs的亚毫秒神经人脸检测 论文地址&#xff1a;arxiv.org/pdf/1907.05047.pdf 源码地址&#xff1a;GitHub - tkat0/PyTorch_BlazeFace: Unofficial PyTorch implementation…

AI大模型的制作:RAG和向量数据库,分别是什么?

目录 一、什么是 AI 大模型 二、RAG 三、向量数据库 四、如何制作一个好的 AI 大模型 一、什么是 AI 大模型 AI大模型是指具有大规模参数和复杂结构的人工智能模型。传统的机器学习模型通常有限的参数量&#xff0c;而AI大模型则通过增加参数量和层数来提升模型的表达能力…

《洛谷深入浅出进阶篇》 P2367语文成绩——差分

上链接&#xff1a;P2367 语文成绩 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P2367 上题干&#xff1a; 题目背景 语文考试结束了&#xff0c;成绩还是一如既往地有问题。 题目描述 语文老师总是写错成绩&#xff0c;所以当她修改成绩的…

【vue+amap】高德地图绘制多边形区域

参考文档&#xff1a; 高德地图参考手册 高德地图示例代码 1、高德地图控制台创建应用&#xff0c;获取权限ak 高德地图控制台 Ps.本项目里按钮等基础控件使用的是element-ui版本控件 2、项目内全局引入 index.html内引入高德地图代码&#xff1a; <script type"te…

【Linux系统编程十七】:(基础IO4)--文件系统(inode与软硬链接)

【Linux系统编程十六】&#xff1a;文件系统&#xff08;inode与软硬链接&#xff09; 一.磁盘硬件二.文件系统(inode)三.软硬链接 一.磁盘硬件 Linux下的文件在磁盘中存储&#xff0c;文件的内容和属性是分开存储的&#xff01; 文件的内容存储在数据块。 文件的属性存储在in…

github 私人仓库clone的问题

github 私人仓库clone的问题 公共仓库直接克隆就可以&#xff0c;私人仓库需要权限验证&#xff0c;要先申请token 1、登录到github&#xff0c;点击setting 打开的页面最底下&#xff0c;有一个developer setting 这里申请到token之后&#xff0c;注意要保存起来&#xff…

【3】Spring Boot 3 集成mybatis-plus+druid+mysql

目录 【3】Spring Boot 3 集成组件&#xff1a;Druid Mybatis Plus Mysql集成方案1. Hikari jdbc mysql 集成方案增加依赖添加配置Spring Testng 测试用例 2. Druid Mybatis Plus Mysql集成方案2.1 配置Druid添加依赖配置启动Spring Boot Web StarterSpring Testng测试用…

VS项目属性变量

VS项目属性变量 $(SolutionDir) 获取解决方案的路径 $(Platform) 平台名字 → x86 / x64 $(ProjectName) 工程名字 $(Configuration) 当前的项目模式 → Debug / Release

第十九章总结:Java绘图

19.1&#xff1a;Java绘图类 19.2&#xff1a;绘制图形 package nineteentn; import java.awt.*; import javax.swing.*;public class DrawCircle extends JFrame {private final int OVAL_WIDTH 80; // 圆形的宽private final int OVAL_HEIGHT 80; // 圆形的高public DrawC…