当前位置: 首页 > 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...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...