can总线的工作方式与流程是怎样的?
CAN总线是具有通信速率高、容易实现、且性价比高等诸多特点的一种已形成国际标准的现场总线。
更多
CAN总线(Controller Area Network)是一种高度可靠、分布式、实时性强的串行通信总线系统,广泛应用于汽车、工业自动化、医疗设备等领域。其核心设计目标是在恶劣电气环境中实现低成本、高效率、多节点间的可靠通信。
以下是CAN总线的主要工作方式与流程:
一、核心特性与工作方式
-
多主多从结构:
- 没有传统意义上的“主节点”控制总线。总线上的每个节点(ECU - Electronic Control Unit)既是主机也是从机。
- 任何节点都可以在它认为总线空闲时发起通信。节点发送消息的依据是自身的状态变化或设定的调度规则。
-
广播式通信:
- 当一个节点向总线上发送消息(称为“CAN帧”)时,该消息会广播给所有连接到总线上的节点。
- 每个节点都“监听”总线上的所有信息流。
-
基于ID的寻址:
- CAN帧的头部包含一个唯一的标识符(ID)。
- ID决定了该消息的内容含义(即“消息类型”)和其优先级,ID值越小,优先级越高。
- 节点接收时,通过检查ID来决定是否接收和处理该消息。每个节点可以配置为只接收特定ID的消息(即过滤)。
- ID不是接收节点的地址,而是消息内容的标签。
-
非破坏性位仲裁:
- 这是CAN总线区别于其他总线、实现多主和实时性的核心机制。
- 原理: 当多个节点同时开始发送消息时,它们在发送ID的同时也在监听着总线。CAN总线协议是“线与”(Wire-AND)逻辑:显性位(逻辑0)会覆盖隐性位(逻辑1)。
- 仲裁过程:
- 不同节点在发送ID时,从最高位(MSB)开始一位一位地比较。
- 当一个节点发送隐性位(1)而检测到总线为显性位(0)时,它立即知道自己在这场竞争中失败了。
- 失败的节点会立刻停止发送,转为接收模式,并且不会破坏赢得仲裁节点发送的数据帧(这就是“非破坏性”的含义)。
- 最终,ID最小的消息(即优先级最高)赢得仲裁并继续完成其整个帧的发送。失败的节点会在总线再次空闲时自动重试。
-
事件驱动型传输:
- CAN总线的传输通常由节点内部事件触发(例如传感器读数变化、用户输入、定时器到期等)。
- 这使得通信具有很高的实时性和效率,信息在产生时被及时发送。
二、通信流程(一次消息传输)
以节点A向其他节点发送一条消息为例:
-
消息准备(节点A):
- 节点A内的应用程序将需要发送的数据准备好。
- 节点A的CAN控制器会根据数据结构将其封装成一个标准的CAN帧(包含ID、数据长度码、数据域、CRC校验码等)。
-
总线空闲检测:
- 节点A的CAN控制器持续监视总线状态。
- 当检测到总线处于连续11个位的隐性电平(逻辑1)时,认为总线空闲。
-
发送开始与仲裁:
- 当总线空闲并且节点A有数据要发送时,它开始发送帧起始位(SOF - Start of Frame),一个显性位(0),标志传输开始。
- 紧接着,节点A开始发送标识符(ID)。
- 如果在发送ID期间(直到ID结束),没有其他更高优先级(更小ID)的节点同时发送,节点A赢得仲裁。
- 如果有更高优先级节点也尝试发送,节点A在发送ID过程中一旦检测到它发送的是1(隐性)而总线上是0(显性),它就立刻停止发送并转为接收模式。
-
赢得仲裁后继续发送:
- 赢得仲裁的节点(比如节点A)继续发送帧的剩余部分:
- 控制段: 包含数据长度码。
- 数据段: 实际要传输的数据(0-8字节)。
- CRC段: 循环冗余校验码,用于接收方检查帧传输错误。
- 确认段(ACK Slot):
- 发送节点在此处发送一个隐性位(1)。
- 总线上所有正确接收到该帧(无CRC错误)的节点,都会在这个ACK Slot时间段内,发送一个显性位(0)覆盖掉发送方的隐性位。因此发送节点如果监测到ACK Slot位被拉低为显性位,说明至少有一个节点正确收到(这是主动确认机制)。
- 如果发送节点在ACK Slot位时间内检测到的还是隐性位(1),则表示没有任何节点确认收到有效帧,将触发错误。
- 帧结束(EOF): 7个连续的隐性位,标志帧结束。
- 赢得仲裁的节点(比如节点A)继续发送帧的剩余部分:
-
错误检测与处理:
- 全程检测: 发送节点和接收节点都会持续检测传输中的错误(位错误、填充错误、帧格式错误、ACK错误、CRC错误)。
- 错误标志: 一旦任意一个检测到错误的节点(可能是发送节点本身或接收节点),会主动在下一个位时间内发送一个错误帧(由6个显性位和随后的8个隐性位组成),强行中断当前总线上正在进行的错误传输。
- 错误计数器: 每个CAN控制器内部维护着发送错误计数器和接收错误计数器。错误会增加计数器值,成功通信会减少计数器值。当错误计数达到特定阈值时,节点会进入被动错误模式(只能被动发送错误帧)或总线关闭模式(断开通信),防止故障节点持续干扰总线。
-
接收消息(所有节点):
- 总线上的所有节点都在监听。
- 过滤: 每个节点的CAN控制器会检查接收到的帧的ID,如果该ID在控制器配置的接受过滤列表中,则接收该帧(存入本地接收缓存区)。
- 校验: 对接收到的帧进行CRC校验。
- ACK响应: 如上所述,正确接收的节点在ACK Slot位置发送显性位进行确认。
- 向上层传递: 如果接收成功且消息是给自己的(或需要处理的),CAN控制器将数据帧中的有效数据提取出来,交给节点内部的微处理器或应用程序进行处理。
-
总线恢复:
- 在帧结束(EOF)后或错误帧结束后,总线开始空闲计数(连续11个隐性位),然后新的通信可以开始。
总结关键点
- 多主竞争: 所有节点平等竞争总线,ID小的消息胜出。
- 非破坏仲裁: 仲裁失败者自动退出不破坏成功者。
- 广播过滤: 消息广播发送,接收者按ID决定是否接收。
- 强健错误处理: 内置多种错误检测机制(CRC、ACK、格式等)和自动处理(中断传输、错误计数)。
- 事件驱动: 消息传输由节点事件触发。
- 高可靠性: 差分信号抗干扰,完善的错误处理,使其适用于苛刻环境。
这种工作方式使CAN总线非常适合于需要多个子系统之间进行高速、可靠、优先级分明的实时通信的应用场景,例如汽车内部各个控制单元(引擎控制、刹车控制、门窗控制等)之间的信息交互。
最常见的直流负载工作方式
最常见的直流负载工作方式 直流负载工作方式是指在直流电路中使用的各种负载方式。直流负载是用于测试和测量直流电源输出能力和能效的设备,可以模拟真
2024-01-18 15:12:36
汽车控制系统的工作方式
电路原理图如下:首先交代下新能源汽车的电源状态,共有6个状态:在每个状态下BCM(车身域控制器)都会发送相关的报文到can总线上。在这里再补充一下汽车控制系统的
2022-03-01 07:33:53
AD级联的工作方式配置和AD双排序的工作方式配置详细说明
本文档的主要内容详细介绍的是AD级联的工作方式配置和AD双排序的工作方式配置详细说明
资料下载
淡然之心
2019-12-23 08:00:00
7天热门专题
换一换
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 芯片的工作原理是什么?
- ssd是什么意思
- 什么是蓝牙?它的主要作用是什么?
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- dtmb信号覆盖城市查询
- 怎样挑选路由器?
- 华为芯片为什么受制于美国?
- 元宇宙概念股龙头一览
- type-c四根线接法图解
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- BLDC电机技术分析
- 复位电路的原理及作用
- dsp是什么意思?有什么作用?
- iphone13promax电池容量是多少毫安
- 苹果无线充电器怎么使用?
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 传感器常见类型有哪些?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机