当前位置: 首页 > news >正文

CAN总线及通讯的工作原理

一、CAN总线

  CAN是控制器局域网络(Controller Area Network)的简称, 它是由研发和生产汽车电子产品著称的德国BOSCH公司开发的, 并最终成为国际标准(ISO11519),是国际上应用最广泛的现场总线之一。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、工作原理

CAN通讯的工作原理可以概括为以下几点

  1. 报文传输:CAN总线以报文的方式发送数据。每组报文的前十一位是标识符,用于标识消息的类型和优先级,不包括详细发送数据。CAN总线通过标识符的逐位仲裁解决总线访问碰撞问题,确保了报文和时间均不损失。
  2. 帧结构:CAN总线中的数据传输是通过帧(Frame)的方式进行的。帧可以分为数据帧、远程帧、错误帧和过载帧四种类型。数据帧承担着数据从发送器到接收器的传输责任,远程帧由总线单元发出,用于请求发送相同的数据帧。错误帧可由任何单元在检测到总线错误时发出,过载帧用于在两数据帧或远程帧之间提供延时。
  3. 广播通信:CAN总线采用广播通信方式,从一个节点向另一个节点发送数据。当一个节点要发送数据时,它将待发送的数据和标识符发送给本节点的CAN芯片,并使其进入准备阶段。一旦CAN芯片收到总线分配,就变为发送报文阶段,将待发送的数据组成规定的报文格式发出。此时,网络中的其他节点都处于接收阶段,对接收到的报文进行检测,以判断该报文是否是发给自己的。
  4. 面向内容的编址方案:CAN总线采用面向内容的编址方案,使得控制体系的构建更加灵活和方便。在不修改软硬件的情况下,可以向CAN总线中添加新节点,这使得CAN总线系统具有很好的扩展性和适应性。

Standard CAN

在这里插入图片描述
在这里插入图片描述

• SOF–The single dominant start of frame (SOF) bit marks the start of a message, and is used to
synchronize the nodes on a bus after being idle.
• Identifier-The Standard CAN 11-bit identifier establishes the priority of the message. The lower the
binary value, the higher its priority.
• RTR–The single remote transmission request (RTR) bit is dominant when information is required from
another node. All nodes receive the request, but the identifier determines the specified node. The
responding data is also received by all nodes and used by any node interested. In this way, all data
being used in a system is uniform.
• IDE–A dominant single identifier extension (IDE) bit means that a standard CAN identifier with no
extension is being transmitted.
• r0–Reserved bit (for possible use by future standard amendment).
• DLC–The 4-bit data length code (DLC) contains the number of bytes of data being transmitted.
• Data–Up to 64 bits of application data may be transmitted.
• CRC–The 16-bit (15 bits plus delimiter) cyclic redundancy check (CRC) contains the checksum
(number of bits transmitted) of the preceding application data for error detection.
• ACK–Every node receiving an accurate message overwrites this recessive bit in the original message
with a dominate bit, indicating an error-free message has been sent. Should a receiving node detect an
error and leave this bit recessive, it discards the message and the sending node repeats the message
after rearbitration. In this way, each node acknowledges (ACK) the integrity of its data. ACK is 2 bits,
one is the acknowledgment bit and the second is a delimiter.
• EOF–This end-of-frame (EOF), 7-bit field marks the end of a CAN frame (message) and disables bitstuffing, indicating a stuffing error when dominant. When 5 bits of the same logic level occur in
succession during normal operation, a bit of the opposite logic level is stuffed into the data.
• IFS–This 7-bit interframe space (IFS) contains the time required by the controller to move a correctly
received frame to its proper position in a message buffer area.

在这里插入图片描述

Here is a breakdown of the different fields in the Standard CAN Frame:

  1. SOF (Start of Frame):
    • Length: 1 bit
    • Purpose: Indicates the beginning of a CAN frame. It is always dominant bit (0 in CAN).
  2. ID (Identifier):
    • Length: 11 bits
    • Purpose: Represents the priority and the address of the transmitting node. In CAN, the lower the identifier value, the higher the priority.
  3. RTR (Remote Transmission Request):
    • Length: 1 bit
    • Purpose: Used to differentiate a data frame from a remote request frame (RTR = 0 for data frames and RTR = 1 for remote request frames).
  4. Control
    • Length: 6 bits
    • Purpose: Contains control information like the data length code (DLC) which indicates the number of bytes in the data field.
  5. Data:
    • Length: 0 to 64 bits (0 to 8 bytes)
    • Purpose: Contains the actual data being transmitted. Its length is determined by the DLC in the control field.
  6. CRC (Cyclic Redundancy Check):
    • Length: 16 bits
    • Purpose: A polynomial code used to detect errors during data transmission. The transmitting node computers a CRC value based on the frame content and sends it along with the frame. The receiving node then calculates its own CRC from the received frame and compares it to the received CRC. If they match, it’s assumed that the frame was received correctly.
  7. ACK (Acknowledgement):
    • Length: 2 bits (one for the slot and one for the delimiter)
    • Purpose: The ACK slot is overwritten with a dominant bit by nodes that correctly receive the frame. If the transmitting node sees a dominant bit in the ACK slot, it knows that at least one other node on the network received its frame correctly. Following, there is an ACK delimiter bit, which is always recessive (1 in CAN).
  8. EOF (End of Frame):
    • Length: 7 bits
    • Purpose: Marks the end of a CAN frame. It consist of 7 consecutive recessive bits, ensuring that there’s enough separation between consecutive frames.

In addition to the fields described above, actual CAN communication also involves some other fields and error handling mechanisms not depicted in this standard CAN frame. These include:

  • Interframe Space: A time interval between two consecutive frames.
  • Error Frames: If a node detects an error in a frame, it will transmit an error frame to notify other nodes of the error.
  • Overload Frames: Used to introduce a delay between consecutive data or remote transmit frames.

Extended CAN
在这里插入图片描述
在这里插入图片描述

the Extended CAN message is the same as the Standard message with the
addition of:
• SRR–The substitute remote request (SRR) bit replaces the RTR bit in the standard message location
as a placeholder in the extended format.
• IDE–A recessive bit in the identifier extension (IDE) indicates that more identifier bits follow. The 18-bit
extension follows IDE.
• r1–Following the RTR and r0 bits, an additional reserve bit has been included ahead of the DLC bit.

在这里插入图片描述
  此外,CAN总线还采用了差分信号传输方式,即通过两个线路传输一个信号,其中一个线路传输高电平信号,另一个线路传输低电平信号。这种差分信号传输方式可以提供更好的抗干扰性能,确保数据传输的可靠性和稳定性。

在这里插入图片描述
在这里插入图片描述
参考https://blog.csdn.net/gtkknd/article/details/104813633

三、CAN总线特点

  1. 实时性: CAN总线具有优越的实时性能,适用于需要及时传输数据的应用,如汽车控制系统、工业自动化等。仲裁机制和帧优先级的设计保证了低延迟和可预测性。
  2. 多主站结构:CAN总线上的每个节点都可以在任何时刻主动地向网络上的其他节点发送信息,而不分主从。CAN支持多主机系统,多个节点可以同时发送和接收数据。这种分布式控制结构使得系统更加灵活,适用于复杂的嵌入式网络。CAN总线上的节点既可以发送数据又可以接收数据,没有主从之分。但是在同一个时刻,只能由一个节点发送数据,其他节点只能接收数据。
  3. 差分信号传输: CAN使用差分信号传输,通过两个线路(CAN_H和CAN_L)之间的电压差来传递信息。这种差分传输方式提供了良好的抗干扰性能,使得CAN总线适用于工业环境等有电磁干扰的场合。
  4. 仲裁机制: CAN总线采用非破坏性仲裁机制,通过比较消息标识符的优先级来决定哪个节点有权继续发送数据。这种机制确保了总线上数据传输的有序性,避免了冲突。
  5. 广播通信: CAN总线采用广播通信方式,即发送的数据帧可以被总线上的所有节点接收。这种特性有助于信息的共享和同步,同时减少了系统的复杂性。
  6. 低成本: CAN总线的硬件成本相对较低,适用于大规模的系统集成。由于CAN控制器在硬件上实现了仲裁机制,无需额外的主机处理器,减小了成本和复杂性。
  7. 灵活性: CAN协议灵活适应不同的应用场景,支持不同的波特率和通信速率。这使得CAN总线可以被广泛用于各种嵌入式系统,从低速的传感器网络到高速的汽车控制系统。
  8. 错误检测和处理:CAN总线具有强大的错误检测和处理能力。每帧信息都有CRC校验和其他检错措施,保证了通信的可靠性。当检测到错误时,节点会自动重新传输已损坏的信息。此外,如果节点出现严重错误,它可以自动关闭输出功能,以使总线上其他节点的操作不受影响。
  9. 多种帧类型:CAN总线上的节点没有地址的概念。CAN总线上的数据是以帧为单位传输的,帧又分为数据帧、遥控帧等多种帧类型,帧包含需要传输的数据或控制信息。
  10. 线与逻辑:CAN总线具有“线与”的特性,也就是当由两个节点同时向总线发送信号时,一个是发送显性电平(逻辑0),另一个发送隐性电平(逻辑1),则总线呈现为显性电平。这个特性被用于总线总裁,也就是哪个节点优先占用总线进行发送操作。
  11. 特定标识符:每一个帧有一个标识符(Identifier,一下简称ID)。ID不是地址,它表示传输数据的类型,也可以用于总线仲裁时确定优先级。例如,在汽车的CAN总线上,假设用于碰撞检测的节点输出数据帧ID为01,车内温度检测节点发送数据帧的ID为05等。
  12. 滤波特性:每个CAN节点都接收数据,但是可以对接收的帧根据ID进行过滤。只有节点需要的数据才会被接收并进一步处理,不需要的数据会被自动舍弃。例如,假设安全气囊控制器只接受碰撞检测节点发出的ID为01的帧,这种ID的过滤时有硬件完成的,以便安全气囊控制器在发送碰撞时能及时响应。
  13. 半双工:CAN总线通信时半双工的,即总线不能同时发送和接收。在多个节点竞争总线进行发送时,通过ID的优先级进行仲裁,竞争胜出的节点继续发送,竞争失败的节点立刻转入接收状态。
  14. 无时钟信号:CAN总线没有用于同步的时钟信号,所以需要规定CAN总线通信的波特率,所以节点都是用同样的波特率进行通信。
  15. 高传输速率和长距离通信:CAN总线的传输速率最高可以达到1Mbps,而直接通信距离最远可以达到10km(在传输速率低于5kbps的情况下)。
  16. 报文滤波和传输方式:CAN总线通过报文滤波实现点对点、一点对多点及全局广播等几种方式传送数据,无需专门的“调度”。此外,CAN总线支持短帧结构,每帧字节数最多为8个,传输时间短,抗干扰能力强,检错效果好。
  17. 节点数多和扩展性强:CAN总线上的节点数主要取决于总线驱动电路,目前可以达到110个。同时,CAN总线的报文标志符数量也很多,几乎不受限制,这使得CAN总线具有很强的扩展性。
  18. 通信介质灵活:CAN总线的通信介质可以是双绞线、同轴电缆或光纤,选择灵活,适应了不同的应用环境。
  19. 标准化和规范化:CAN总线是目前为止惟一有国际标准的现场总线(国际标准ISO11898),这保证了其广泛的应用和互操作性。
  20. 高性价比:CAN总线的设计使其具有很高的性价比,适用于各种规模和应用场景。

参考:
https://www.autopi.io/blog/can-bus-explained/

https://www.allaboutcircuits.com/technical-articles/introduction-to-can-controller-area-network/

https://www.ti.com/lit/an/sloa101b/sloa101b.pdf

https://mp.weixin.qq.com/s/QZ-VEf2qHqffgeJU0qGfJw

https://blog.csdn.net/wangguchao/article/details/124715519

相关文章:

CAN总线及通讯的工作原理

一、CAN总线 CAN是控制器局域网络(Controller Area Network)的简称, 它是由研发和生产汽车电子产品著称的德国BOSCH公司开发的, 并最终成为国际标准(ISO11519),是国际上应用最广泛的现场总线之一。 二、工作原理 …...

linux下修改网卡MAC地址

我建议你使用 macchanger,但如果你不想使用它,那么可以使用另一种方法在 Linux 中更改 MAC 地址。 首先,使用以下命令关闭网卡: sudo ip link set dev enp0s31f6 down 接下来,使用以下命令设置新的 MAC:…...

47、WEB攻防——通用漏洞Java反序列化EXP生成数据提取组件安全

文章目录 序列化和反序列化的概念: 序列化:把java对象转换成字节流的过程;反序列化:把字节流恢复为java对象的过程。 对象的序列化主要有两种用途: 把对象的字节流永久的保存在硬盘上,通常存放在一个文件…...

phpstorm console xdebug

1.所有配置跟浏览器http请求一样 2.记得Current File 必须是controller文件 注意:如果没有出发断点,则echo phpinfo(),查看remote_port 和phpstorm 配置是否对上。...

Vue template到render过程

Vue template到render过程 vue的模版编译过程主要如下:template -> ast -> render函数(1)调用parse方法将template转化为ast(抽象语法树)(2)对静态节点做优化(3)生…...

【你也能从零基础学会网站开发】Web建站之HTML+CSS入门篇 CSS常用属性

🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享 🐋 希望大家多多支持, 我们一起学习和进步! 🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注 CSS常用属性…...

Golang 写日志到文件

package mainimport ("log""os""time" )func main() {printLog("auto", "报警内容AA") }func printLog(filename string, content string) {t : time.Now().Format(time.DateOnly)file : filename "." t "…...

数字孪生10个技术栈:数据处理的六步骤,以获得可靠数据。

一、什么是数据处理 在数字孪生中,数据处理是指对采集到的实时或历史数据进行整理、清洗、分析和转化的过程。数据处理是数字孪生的基础,它将原始数据转化为有意义的信息,用于模型构建、仿真和决策支持。 数据处理是为了提高数据质量、整合数…...

运维随录实战(5)之centos搭建jenkins

一,搭建jenkins准备 下载安装jdk环境 -》版本 jdk11 下载安装maven环境 -》版本 maven 3.8.8 git -》版本 1.8.3.1 yum install git jenkins安装版本:2.414.3 下载地址:https://get.jenkins.io/war-stable/2.414.3/jenkins.war 注:jenkins版本与jdk版本有一定的对应关…...

css clip-path polygon属性实现直角梯形

2024.3.8今天我学习了如何用css实现直角梯形的效果, 效果: 具体实现原理: 一、需要三个div: 外面一个大的div,里面左右两个小的div 我们需要先把第一个div变成直角梯形: 大概是这样,设置好之…...

Manz高压清洗机S11-028GCH-High Quality Cleaner 操作使用说明492页

Manz高压清洗机S11-028GCH-High Quality Cleaner 操作使用说明492页...

图像处理与视觉感知---期末复习重点(2)

文章目录 一、空间域图像增强1.1 图像增强1.2 几种变换 二、直方图2.1 直方图定义2.2 直方图均衡化2.3 离散情况2.4 例子2.5 直方图匹配2.6 例子2.7 一道例题 三、空间滤波器3.1 定义3.2 例子 四、平滑空间滤波器4.1 作用与分类4.2 线性滤波器 五、统计排序滤波器5.1 定义与分类…...

【机器学习】三要素——数据、模型、算法

机器学习三要素 数据模型模型是怎么得到的?算法 我 在学习过程中,对于“模型”和“算法”的概念不清晰,一直混淆,通过查阅了一些资料在此总结一下。 数据、模型与算法被称为机器学习的三要素,因为它们在机器学习中具有不可分割的作…...

Spring框架Bean对象的五个作用域

一、前言:Bean对象简介 在Spring项目中,那些由Spring IoC容器所管理的对象,称为bean。简单地讲,bean就是由Spring容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什么区别了。 而…...

IoT数据采集网关在企业应用中扮演着关键角色-天拓四方

随着物联网(IoT)技术的不断发展,越来越多的企业开始利用IoT技术实现智能化、自动化的生产和管理。在这个过程中,IoT数据采集网关作为连接物理世界与数字世界的桥梁,发挥着至关重要的作用。 IoT数据采集网关是一种硬件…...

【动态规划】完全背包

欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 🏠个人专栏:题目解析 🌎推荐文章:【LeetCode】winter vacation training 目录 👉🏻完全背包 👉🏻…...

从零开始学习Diffusion Models: Sharon Zhou

How Diffusion Models Work 本文是 https://www.deeplearning.ai/short-courses/how-diffusion-models-work/ 这门课程的学习笔记。 文章目录 How Diffusion Models WorkWhat you’ll learn in this course [1] Intuition[2] SamplingSetting Things UpSamplingDemonstrate i…...

全天候购药系统(微信小程序+web后台管理)

PurchaseApplet 全天候购药系统(微信小程序web后台管理) 传统线下购药方式存在无法全天候向用户提供购药服务,无法随时提供诊疗服务等问题。为此,运用软件工程开发规范,充分调研建立需求模型,编写开发文档…...

L2-003 月饼(Java)

月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。 注意:销售时允许取出一部分库存。样例给出的情形是这样的&#…...

vue面试--101, 1vue3为啥比vue2好 2 vue3为什么使用proxy

1vue3为啥比vue2好 2 vue3为什么使用proxy...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

Cursor实现用excel数据填充word模版的方法

cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...