CAN总线协议腾讯云开发者社区

CAN是ControllerAreaNetwork的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。

回顾前面学到的RS232IICSPIRS485等通信

CAN总线通信系统是串行通信的一种,要优于RS485总线,是目前比较常用的一种工业总线,如汽车的电气部分就采用CAN总线实现通信。

与I2C、SPI等具有时钟信号的同步通讯方式不同,CAN通讯并不是以时钟信号来进行同步的,它是一种异步半双工通讯。(同步即在同一个时钟驱动下数据通信,半双工即接受与发送不能同时进行)

汽车工业蓬勃发展,汽车的电子控制单元逐渐增多。各电控单元之间的信号交换导致汽车线束的级数增加,复杂粗大的线束与汽车有限的布线空间之间矛盾越来越突出,繁多的线束导致电气系统可靠性下降,同时增加了重量。

CAN总线将汽车内部各电控单元之间连接成一个局域网络,实现了信息的共享,大大减少了汽车的线束,如下面的示意图:

比如上图中,每个部分的多个器件都挂载在CAN总线上(一个CAN总线上的所有器件通讯速率必须相同),各个部分再汇集到网关,由网关分配实现各个不同速率的部分之间通讯,这样就很方便轻松实现了对汽车整体电控部分的检测与控制。

在汽车、工业控制领域,数据通信的稳定性和正确性要求极高,因为设备的工作环境既有振荡、高温、辐射等各种不定因素,那不是一般的通信协议能够满足的。除此之外,CAN通信还有许多优秀的特点,比如多主控制、故障封闭功能等,非常适用于工控领域方面,将在下文再提。

CAN协议经过ISO标准化后有两个标准ISO11898标准和IS011519-2标准。其中ISO11898是针对通信速率为125Kbps~1Mbps的高速通信标准(闭环),而IS011519-2是针对通信速率为125Kbps以下的低速通信标准(开环)。

CAN的组成一般有两种方式:

1:CPU与CAN控制器集成到一起、再外接CAN收发器;

2:另一种是CPU与CAN控制器分开的,使用的时候需要配置CAN接口电路,比较麻烦。

STM32中就是采用第一种方式,将CAN接口集成在芯片内,使用的时候再外接CAN收发器(顾名思义,可发送,可接收),常用的有TJA1050或者82C250。

CAN收发器是用于TTL电平与差分电压信号相互转换的,TTL电平即单片机引脚直接提供的电平,逻辑0代表低电平,逻辑1代表高电平;而差分电压信号则为固定的电压值。

以ISO11898标准的高速、短距离闭环网络为例,总线最大长度为40m,通信速度最高为1Mbps。在CAN总线的起止端有一个120Ω的终端电阻,是用来来做阻抗匹配,以减少回波反射。

由上图可知,CAN通信是通过两根线完成的:

*一条是黄色的CAN_High

*一条是绿色的CAN_Low

按照定义:

由上图可知,没有数据发送或者发送数据0时,两条线的电平一样都为2.5V,两条线的电压差小于0.5V;当发送数据1时,CAN_High电压升高,CAN_Low电压降低,两条线电压差大于0.9V时,认为数据为逻辑0;

所以CAN使用的是差分信号,差分信号稳定性更好,因为即使环境问题导致CAN_High电压发送变化,则CAN_L也会发送同等变化,两者做差即可抵消由于这个环境引起的变化。

隐性、显性之间存在天然的优先级特性:显性(逻辑0)的优先级比隐性(逻辑1)高;该优先级的特性,可以用来进行多主机的仲裁;

在总线上显性电平具有优先权,只要有一个节点输出显性电平,总线上即为显性电平。而隐形电平则具有包容的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平(显性电平比隐性电平更强)

上图为CAN的收发器:CAN_Rx和CAN_Tx分别是从MCU中接出来的引脚,比如MCU要发送一个逻辑1,则只要将CAN_Tx设置为1,经过CAN收发器转换,CAN_High和CAN_Low线上的电压均为2.5v,即传到总线的电压差Vh-Vl=0V,总线上的状态则就是逻辑1。同样,当CAN_High和CAN_Low读取到CAN总线电压分别3.5V和1.5V,即压差为2V,经过收发器转换,MCU则可通过CAN_Rx读取到信号0。

那么是如何通过一个节点的MCU向总线上那么多节点中的某个节点进行发送信息的?一个节点又是如何知道某个信息是发给自己的或者不是发给自己的?这里或许让你想起IIC中以地址方式进行主从点对点的通信,但其实在CAN中并无地址的概念。

少了像IIC中的SCL地址线、SPI中的片选信号线,简洁的物理层决定了CAN必然要配上一套更复杂的协议。如何用一个信号通道实现同样、甚至更强大的功能呢?答案是对数据或操作命令进行打包。

先规定空闲状态,所谓的空闲状态就是指没有节点正在传输数据的时候;

在CAN协议中,当总线上的上出现连续的11位隐性电平(两根线电压差小于0.5V),表示总线就处于空闲状态。

也就是说对于任意一个节点而言,只要它监听到总线上连续出现了11位隐性电平,那么该节点就会认为总线当前处于空闲状态。

怎么让总线连续出现11位隐形电平呢?由于显性电平的高优先级特性,必须所有CAN主机都连续发送11个隐性电平,或者不发送时,总线才能出现连续11个隐性电平,即处于空闲状态所以,现在可以先简单地理解为,需要在总线一开始工作的时候,所有节点都输出隐性电平;已知在一次传输时该节点输出显性电平,则在传输完成后该节点再输出隐性电平即可,这样就能将总线在无数据传输时保持空闲状态。(真实的实现过程比较复杂,这里仅作为暂时理解,后面会继续提到)

每次发送数据前,节点都会监听总线的状态,如果总线状态为空闲时,它就会立即向总线上发送自己的数据,这个数据里不仅有数据,还有本身的ID信息或者其他的控制指令,应称为数据包(数据帧),也叫做报文。当报文被传输到其它节点时,只要这些节点按格式去解读,就能还原出原始数据。

报文:在原始数据段的前面加上传输起始标签、片选(识别)标签、控制标签,在数据的尾段加上CRC校验标签、应答标签和传输结束标签。类似这样的数据包就被称为CAN的数据帧。为了更有效地控制通讯,CAN一共规定了5种类型的帧,帧也称为报文。

数据帧是在CAN通讯中最主要、最复杂的报文,它以一个显性位(逻辑0)开始,以7个连续的隐性位(逻辑1)结束。在它们之间,分为仲裁段、控制段、数据段、CRC段和ACK段,以标准数据帧为例。

域段

域段名

位宽:bit

描述

帧起始

SOF(StartOfFrame)

1

数据帧起始标志,固定为1bit显性(’b0)

仲裁段

Identify(ID)

11

本数据帧的ID信息,ID信息的作用:①如果同时有多个节点发送数据时,作为优先级依据(仲裁机制);②目标节点通过ID信息来接受数据(验收滤波技术)

RTR

RemoteTransmissionRequestBIT

RTR标识是否是远程帧(0,数据帧;1,远程帧),在数据帧里这一位为显性(‘b0)

IDE

IdentifierExtensionBit

IDE用于区分标准格式与扩展格式,在标准格式中IDE位为显性(‘b0),在扩展格式里IDE位为隐性(’b1)

R0

保留位

1bit保留位,固定为1’b0

DLC

datalength

4

由4位组成,MSB先行(高位先行),它的二进制编码用于表示本报文中的数据段含有多少个字节,DLC段表示的数字为0到8,若接收方接收到9~15的时候并不认为是错误

数据段

data

0~64

据帧的核心内容,它由0~8个字节(0~64位)组成,MSB先行

CRC段

CRC

15

段用于检查帧传输错误,发送方以一定的方法计算包括:帧起始、仲裁段、控制段、数据段;接收方以同样的算法计算CRC值并进行比较,如果不同则会向发送端反馈出错信息,重新发送;计算和出错处理一般由CAN控制器硬件完成或由软件控制最大重发数。

CRC界定符

CRC界定符(用于分隔的位),为隐性位(1’b1),主要作用是把CRC校验码与后面的ACK段间隔起来

ACK槽

ACKslot

在ACK槽位中,发送端发送的为隐性位,而接收端则在这一位中发送显性位以示应答;发送ACK/返回ACK这个过程使用到回读机制,即发送方先在ACK槽发送隐性位后,回读到的总线上的电平为显性0,发送方才知道它发送成功了,不用重发

ACK界定符

在ACK槽和帧结束之间由ACK界定符间隔开,为隐性位

帧结束

EOF

7

由发送端发送7个隐性位表示结束

比如总线上有3个节点,节点1设置ID为00010100010,节点2验收滤波ID表中有节点1的ID号,而节点3中的验收滤波ID表中没有节点1的ID号,节点1向节点2发送1字节的信息。

报文信息:000010100010000000101011000XXXXXXXXXXXXXXX1111111111通过总线发送时,在ID信息发送阶段,只有节点2才能收到总线上的数据,因为节点3的验收滤波ID表中没有节点1的ID号在报文发送到ACK槽时,会等待并回读节点2的反馈,从节点2的角度看,此时总线为空闲状态,当验证CRC正确,则向总线发送显性电平,接着当节点1回读到显性电平,才会继续发送剩下的EOF以上只是简单的理解,实际传输的过程比这个复杂许多,下文继续。

运用到线与机制和回读机制以上只是节点1主动发送数据,但是万一节点1和节点2同时向节点3发送数据的时候,如何判定先后呢?采用非破坏性位仲裁机制,即对各个消息的标识符(即ID号)进行逐位仲裁(比较),如果某个节点发送的消息仲裁获胜,那么这个节点将获取总线的发送权,仲裁失败的节点则立即停止发送并转变为监听(接收)状态。从上文可知,显性的优先级高于隐性,即仲裁比较的就是哪个ID中的0多,0最多的那个就可以获得发送权,比如00000000010就比00000000011的优先级要高,仲裁的过程由硬件实现;同时要注意,仲裁段除了报文ID外,还有RTR、IDE、SRR位(在拓展模式中,下文价绍),也就是说当ID全都一样时,会继续比较接下来的几位。

至于如何做到“0多即胜”,可以理解为一种回读和线与机制,即显性能够将隐性覆盖,将自己要比较的位与总线上的状态相与,只有线与的结果与本身一致时,仲裁才能够通过。

其实在报文发送上去的过程,采用的是广播的方式,在节点1和节点2总裁的同时,总线上所有的节点都能够监听到它们的ID号,只不过也在同时进行验收滤波,只有监听到的ID号存在ID表中,该节点才会选择继续监听后面的报文。

以上已经基本解决了CAN通信的基本问题,可以思考一下,由于CAN没有时钟信号线,而且它的报文中并没有包含用于同步的标志,要怎么做才能对总线的电平进行正确的采样呢?比如我节点1发送3个位出去了,节点2应该在什么时候接收才能保证此时此刻它所接收到的就是第3位或者接收到的电平是正确的?CAN中提出了位同步的方式来确保通讯时序。

CAN的同步分为硬同步和重新同步:

硬同步:在帧起始信号时同步总线上所有器件的位时序,无法确保后续一连串的位时序都是同步的。重新同步:在检测到总线上的时序与节点使用的时序有相位差时(即总线上的跳变沿不在节点时序的SS段范围),通过延长PBS1段或缩短PBS2段,来获得同步。

采样点:读取总线电平的时刻,并将读到的电平作为位值的点。位置在PBS1结束处。延长/缩短PBS段来达到同步:PTS+PBS1小而PBS2加大时采样点前移,PTS+PBS1大而PBS2减小时采样点后移。

同步过程:在硬同步阶段,当节点检测到本身SS段并不在总线电平下降沿跳变处,节点则会把自己的位时序中的SS段平移至总线出现下降沿的部分,后面三段也跟着上去,以获得同步。(可以理解为节点在检测到帧起始信号时才开始“设置段”)

理解上面重新同步过程时,需要知道前一次SS到下一次SS之间的长度是可伸展的(暂时称之为L),当检测到前一次SS出现得太快(还没等到下降沿到来),这就是相位超前了,如果不把L缩短一点,那么下一次SS将也会超前。缩短L的方法就是调整PBS的长度,这个过程由CAN控制器完成,即(新的PBS长度=当前PBS长度-SJW)。

比如总线上有3个节点,节点1设置ID为00010000110,节点2设置ID为00010000111,节点3验收滤波ID表中有节点1和节点2的ID号,节点1和节点2同时向节点3发送1字节的信息。

CAN协议经ISO标准化后有ISO11898标准和ISO11519-2标准两种。ISO11898和ISO11519-2标准对于数据链路层的定义相同,但物理层不同。

在阅读完上文后,对CAN总线中的一个极其重要的知识点需要搞明白:回读机制。指的是节点在向总线上发送报文的过程中,同时也对总线上的二进制位进行“回读”。通过这种机制,节点就可以判断出本节点发出的二进制位与总线上当前的二进制位是否一致。

帧类型

帧用途

数据帧

用于发送单元向接收单元传送数据的帧。

遥控帧

用于接收单元向具有相同ID的发送单元请求数据的帧。

错误帧

用于当检测出错误时向其它单元通知错误的帧。

过载帧

用于接收单元通知其尚未做好接收准备的帧。

帧间隔

用于将数据帧及遥控帧与前面的帧分离开来的帧

另外,数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有11个位的标识符(Identifier:以下称ID),扩展格式有29个位的ID。

关于数据帧的标准格式各个位的介绍可以查看本文的【2.2.2节】,在数据帧的拓展格式中,与标准格式不同处在于:

接收单元向发送单元请求发送数据所用的帧。遥控帧由6个段组成。遥控帧没有数据帧的数据段。举个例子,车钥匙需要知道车门的状态,一个远程帧过去,车门把自己的状态发回来了。

遥控帧与数据帧的不同之处:

用于在接收和发送消息时检测出错误通知错误的帧。错误帧由错误标志和错误界定符构成。

(1)错误标志错误标志包括主动错误标志和被动错误标志两种。①主动错误标志:6个位的显性位。②被动错误标志:6个位的隐性位。(2)错误界定符错误界定符由8个位的隐性位构成。

(3)错误标志之后还有0~6个错误标志重叠部分处于主动错误状态的节点检测到错误时会发送主动错误标志,6个连续显性位会违反位填充规则和位场的固定形式,进而造成其它节点也检测到错误并发送错误标志。所有节点所发送的显性序列叠加组成错误标志重叠部分,错误标志重叠部分的长度在6-12个显性位之间。

对主动错误和被动错误的通俗理解:首先建议把广泛使用的“主动错误”和“被动错误”概念换成“主动报错”和“被动报错”。1.主动报错站点只要检查到错误,它立即“主动地”发出错标识。所谓“出错标识“,它本身就是一个“错误的位序列”(连续的6个显性位,不满足CAN协议的“最多5个连续的同性位”要求),目的是“主动地”告诉大家:即使你们没有发现“刚才我已发现”的错误,现在我“以身作则”出错啦!你们该看到这个错误了吧!2.被动报错站点如果检查到错误,它只能干瞪眼“被动地”等别人(主动报错站点)报错,等待的时候它可不能去动总线,直到识别出由主动报错站点发出的“错误的位序列”,它才松了一口气:有人正式报错了!然后他就可以去竞争总线,该干啥干啥。

(错误帧这里看不明白没关系,后文会有详细介绍)

过载帧是接收节点向总线上其它节点报告自身接收能力达到极限的帧,可以理解为:接收节点Node_A接收报文的能力达到极限了,于是Node_A就会发出过载帧来告诉总线上的其它节点(包括发送节点),我接收节点Node_A已经没有能力处理你们发来的报文了。过载帧由过载标志和过载界定符构成。

(1)过载标志6个位的显性位。过载标志的构成与主动错误标志的构成相同。(2)过载界定符8个位的隐性位。过载界定符的构成与错误界定符的构成相同。

帧间隔是用于分隔数据帧和遥控帧的帧。数据帧和遥控帧可通过插入帧间隔将本帧与前面的任何帧(数据帧、遥控帧、错误帧、过载帧)分开。过载帧和错误帧前不能插入帧间隔。

(1)间隔3个位的隐性位。(2)总线空闲隐性电平,无长度限制(0亦可)。本状态下,可视为总线空闲,要发送的单元可开始访问总线。(3)延迟传送(发送暂时停止)8个位的隐性位。只在处于被动错误状态的单元刚发送一个消息后的帧间隔中包含的段。

为防止突发错误而设定,CAN协议中规定,当相同极性的电平持续五位时,则添加一个极性相反的位。填充位的添加和删除是由发送节点和接收节点完成的,CAN-BUS只负责传输,不会操纵信号。

在发送数据帧和遥控帧时,对于SOF~CRC(除去CRC界定符)之间的位流,相同极性的电平如果持续5位,那么在下一个位插入一个与之前5位反型的电平;

在接收数据帧和遥控帧时,对于SOF~CRC(除去CRC界定符)之间的位流,相同极性的电平如果持续5位,那么需要删除下一位再接收。如果这个第6个位的电平与前5位相同,将被视为错误并发送错误帧。

有三种例外情况不属于位错误:①在仲裁区,节点向总线发送隐性位却回读到显性位,不认为是位错误,这种情况表示该节点仲裁失败;②在ACK槽,节点向总线发送隐性位却回读到显性位,不认为是位错误,这种情况表示,该节点当前发送的这一帧报文至少被一个其它节点正确接收;③该节点发送被动错误标志,节点Node_A向总线发送连续六个隐性位(被动错误标志)却回读到显性位,不认为是位错误。因为被动错误标志是六个连续的隐性位,所以在总线上按照线与机制,有可能这六个连续隐性位被其它节点发送的显性电平“吃掉”;

数据帧和遥控帧的CRC界定符、ACK界定符、EOF;错误帧界定符过载帧界定符

在检测到错误之后,检测到错误的节点就要发送错误帧到总线上来通知总线上的其他节点。

对于错误界定,节点存在如下三种状态:

一个CAN节点在什么情况下处于主动错误状态,什么情况下处于被动错误状态呢?

在CAN节点内,有两个计数器:发送错误计数器(TEC)和接收错误计数器(REC)

错误界定并非是依据错误的类型去界定CAN节点的错误状态,而是依据错误计数器【TEC/REC】的值来界定CAN节点的错误状态;当该节点检测到错误后,内部REC/TEC计数器会相应的增加,基于REC/TEC的值判定节点状态。

需要注意的是:这两个计数器计得不是收发报文的数量,也不是收发错误帧的数量。TEC和RCE计数值的变化,是根据下表的规定来进行的。

节点错误状态的转换就是一个“量变”到“质变”的过程:

初步可判定该节点相对稳定可靠,该错误计数很可能是由于某个节点异常导致的,那么其他节点很可能也会触发该错误,那么允许该节点破坏CAN总线的异常报文并告知其他节点;节点检测到一个错误就会发送带有主动错误标志的错误帧,因为主动错误标志是连续六个显性位,所以这个时候主动错误标志将会“覆盖”掉总线上其它节点的发送,而之前在CAN总线上传输的报文就被这“六个连续显性位”破坏掉了。如果发出主动错误帧的节点是发送节点,这个情况下就相当于:刚刚发送的那一帧报文我发错了,现在我破坏掉它(发送主动错误帧),你们不管收到什么都不算数;如果发出主动错误帧的节点是接收节点,这个情况就相当于:刚刚我收报文的时候发现了错误,不管你们有没有发现这个错误,我现在主动站出来告诉大家这个错误,并把这一帧报文破坏掉(发送主动错误帧),刚才你们收到的东西不管对错都不算数了。

节点发送错误帧的次数较多,初步可判定该节点相对不可靠,该错误计数很可能是由于自身节点问题导致,即该错误很可能仅有该节点才有,对于其他节点而言是可以正常交互的,总线不信任该节点提供的错误标识,将不允许破坏总线数据,那么允许该节点发送错误帧“6个连续隐性位”至CAN总线,仅告知其他节点异常;如果发出被动错误帧的节点为报文的发送节点,那么在发送被动错误帧之后,刚刚正在发送的报文被破坏,并且该节点不能在错误帧之后随着连续发送刚刚发送失败的那个报文。随之而来的是帧间隔,并且连带着8位隐性位的“延迟传送”段;这样总线电平就呈现出连续11位隐性位,总线上的其它节点就能判定总线处于空闲状态,就能参与总线竞争。此时如果该节点能够竞争成功,那么它就能接着发送,如果竞争不能成功,那么就接着等待下一次竞争。这种机制的目的正是为了让其它正常节点(处于主动错误)优先使用总线。

一个处于被动错误状态的节点,仍然多次发送被动错误帧,使该节点转为总线关闭态;该节点不能向总线上发送报文,也不能从总线上接收报文,整个节点脱离总线。等到检测到128次11个连续的隐性位时,TEC和REC置0,重新回到主动错误状态。由于存在实现方式的不同,CAN总线关闭状态存在只允许用户请求恢复和检测到128个11位连续的隐性位时自恢复两种不同的恢复形式。如果总线上只有一个节点,该节点发送数据帧后得不到应答,TEC最大只能计数到128,即这种情况下节点只会进入被动错误状态而不会进入总线关闭状态。

按照CAN协议的规定:发生位错误、填充错误、格式错误、ACK错误时,则在错误产生的那一位的下一位开始发送错误帧。发生CRC错误时,紧随ACK界定符后的位发送错误帧。

错误帧发送完成后,总线空闲时自动重发出错的数据帧。

仲裁存在于当同时有多个节点竞争总线发送权时,关键词是同时,比如节点1和节点2两者同时向总线发送一个位,是同时发送的,总线只是导线(理解成自带线与功能),如果节点1发送的是1,节点2发送的是0,线与后总线的状态则为0;与此同时,这里运用到回读机制,即:节点发送位的同时会回读总线的状态并与自身相比较,可知节点1本身状态与总线状态一致,则节点1仲裁胜利。(可查阅本文【【2.2.3节】】)

理解位时序,重点在于同步,分为硬同步和重新同步,在重新同步中,通过设置SJW来调整PBS段的长度(PBS1增长,PBS2缩短),以达到调整一个位中Tq的个数,即长度。(可查阅本文【【2.2.4节】】)

【位错误】举例(情况1):

由于发送节点发送6个连续的显性位会破坏位填充规则,触发接收节点发送主动错误标志,发送节点和接收节点的结合是形成错误标志叠加部分的原因。

【位错误】举例(情况2):

1)多主控制在总线空闲时,所有单元都可以发送消息(多主控制),而两个以上的单元同时开始发送消息时,根据标识符(Identifier以下称为ID)决定优先级。ID并不是表示发送的目的地址,而是表示访问总线的消息的优先级。两个以上的单元同时开始发送消息时,对各消息ID的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。

2)系统的柔软性与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬件及应用层都不需要改变。

3)通信速度较快,通信距离远。最高1Mbps(距离小于40M),最远可达10KM(速率低于5Kbps)。

4)具有错误检测、错误通知和错误恢复功能。所有单元都可以检测错误(错误检测功能),检测出错误的单元会立即同时通知其他所有单元(错误通知功能),正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止(错误恢复功能)。

5)故障封闭功能。CAN可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。

THE END
1.CAN协议can通信的最快速率是多少CAN就是为了让ECU进行通讯而设计。组成局域网进行通讯。 现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。CAN在欧洲是汽车网络的标准协议。 https://blog.csdn.net/qq_45578181/article/details/135438406
2.汽车中的CAN总线是什么?CAN协议主要用于汽车中各种不同元件之间的通信,以此取代昂贵而笨重的配电线束,该协议的健壮性使其同样https://www.zhihu.com/question/657825185/answer/42734649043
3.5分钟掌握CCP/XCP协议:深入解析其在汽车开发测试和车载标定中的处理CAN总线上的多个节点 闪存编程 即插即用 资源保护(数据采集和校准) 协议详解 CCP是一种主从模式应用,CCP主节点通过向从节点发送命令来开始通信。一条CAN总线上可以连接多个从节点。CCP使用通用的命令进行数据采集,并使用简单的内存处理机制进行数据校正。这两种资源相互独立,因此可以同时使用。 https://www.bilibili.com/read/cv40008002
4.面向汽车的CAN通信协议can总线是为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。对于汽车工业而言,它的实时性、灵活性、可靠性、低成本以及良好的故障珍断和纠错能力都有着很大的吸引力及市场空间。can作https://mp.weixin.qq.com/s?__biz=MzIwNjU4MDQ3NQ==&mid=2247569157&idx=1&sn=447a1f706658b8a513b7d2e799c8c571&chksm=971cf091a06b7987ae2f82584ca95e61cfc9dcb170e26ee984cc7c8b3a63deff02f995cfd921&scene=27
5.基于CCP协议的汽车ABS标定系统CAN通信模块的研发图6即为在本文开发的基于CCP协议的汽车ABS标定平台基础上,进行实时标定的一个界面。标定平台中修改的标定参数可以通过CCP协议的标定系统通过CAN通信模块实时地传递给ABS ECU中,再次进行验证,验证的结果通过检测曲线实时反映出来。通过多次的标定修改,最终达到理想的控制效果,省去了修改控制参数后再烧写入ECU的繁琐过程,大https://www.zaoche168.com/auto/_01-ABC00000000000174405.shtml
6.商用车控制系统局域网络(CAN)通信协议CAN是Controller Area Network(控制器局域网络)的缩写,是ISO国际标准化组织的串行通信协议。由德国电气商博世公司在1986 年率先提出。此后,CAN 通过ISO11898 及ISO11519 进行了标准化。现在在欧洲已是汽车网络的标准协议。 CAN协议经过ISO标准化后有两个标准:ISO11898标准和ISO11519-2标准。其中ISO11898是针对通信速率https://www.iteye.com/resource/ywmsdai-11146202
7.汽车can协议是什么CAN(Controller Area Network)协议是一种汽车内部通信协议,主要用于车辆各种控制模块之间的数据交换。它以多路复用的方式在两条总线上传输信息,一条是双向的数据总线,另一条是单向的故障检测总线。 CAN协议的优点包括: 1. 可靠性高:CAN协议具有错误检测和错误恢复功能,可以保证数据的完整性。 2. 实时性好:CAN协议支https://m.yiche.com/baike/285604.htm
8.电动汽车上CAN报文解析符兴锋,电池管理系统CAN信号不同步对于电动汽车控制策略与安全性的影响分析 赵春明,基于CAN总线的电动汽车分布式控制系统的故障诊断研究 李芳,电动汽车动力总成系统控制器局域网(CAN)总线通信协议 钟文浩,电动汽车CAN报文的解析及应用 周竹朋,基于CAN总线的新能源汽车通信网络设计 https://www.eet-china.com/mp/a212040.html
9.车辆网络安全架构——安全通信协议Tesla Model S攻击(2016年):黑客通过CAN总线入侵了特斯拉Model S,实现了远程控制车辆的各种功能。 LIN (Local Interconnect Network): LIN协议用于车辆中低速数据传输,如门控、照明和仪表板等。LIN本身并没有提供强大的安全性,因此在需要更高安全级别的应用中,可以结合其他安全通信协议使用。 https://www.51cto.com/article/758843.html
10.CAN系列协议和以太网协议在汽车电子中的应用出品|汽车电子与软件 本文旨在深入探讨现代汽车电子系统中关键的通信协议,包括CAN(Controller Area Network)、CAN FD(Flexible Data-Rate)、CAN XL(Extended Length)、以及以太网协议,并分析它们在汽车应用中的具体表现和优势。 #01CAN系列协议和以太网协议介绍 https://www.elecfans.com/d/6229188.html
11.《商用车控制系统局域网络(CAN总线)通信协议》.pdf《商用车控制系统局域网络(CAN 总线 )通信协议》 编制说明 一、 任务来源 本标准是根据国家质量监督检验 检疫总局国家标准制修订计划 T-5 号进行编制。 二、 制定的目的、意义 随着汽车行业越来越重视汽车安全、环保等问题,大大促进了新技术的开 发运用,越来越多的电子技术应用到汽车上,如电喷、ABS 、电子点火https://max.book118.com/html/2017/0316/95718182.shtm
12.密码技术在车联网安全中的应用与挑战CAN协议是车辆应用中最常见的车载通信协议,但CAN协议中缺乏加密技术,可能导致数据泄露,同时CAN总线对传输错误进行完整性验证的CRC功能,可能造成数据被恶意注入,破坏完整性。 车联网CAN总线架构示意 数字钥匙是随着车辆智能化变革出现的,可以让车主通过智能手机、可穿戴设备等解锁车辆,并对车辆进行相关操作。它的出现虽然https://gat.zj.gov.cn/art/2022/5/30/art_1229442537_59087083.html
13.新品发布茂睿芯推出高速CANFD收发器MCAN1042,车规级±70V耐压4、支持CAN FD协议 MCAN1042符合ISO11898-2:2016标准,可支持5Mbps的灵活数据速率(Flexible Data-Rate)。 六、典型应用 七、MCAN1042选型表 MCAN1042的推出能有效应对如今汽车内部越发复杂的CAN数据通信,在有限的车辆空间中保证CAN收发器的可靠性,助力汽车控制智能化!https://www.dongchedi.com/article/7277749259691999802
14.汽车诊断—CANBUS协议2.1 CAN-BUS协议中帧的类型分为单帧,首帧,连续帧和流控制帧,后三种可以组成多帧,当单帧发不完命令时,这时候就需要发多帧。N_PCI为协议控制信息,N_Data为诊断数据 帧类型 N_PCI A.单帧:SF,SF_DL不超过7个byte; B.首帧:FF,又称第一帧,FF_DL最大为4095byte,即为1F FF时; https://www.jianshu.com/p/63aaebff1548
15.基于正则表达式与多叉树的DBC网络协议解析方法在之前的研究中,也有采用XML作为CAN网络协议的描述文件[2],这种方法是将协议内容录入到XML文件中,利用了XML格式解析的方便性,但是并没有根本解决工作量大且录入容易出错的问题。 DBC数据文件由德国Vector公司发布,它是一种汽车CAN网络协议描述文件,里面大量的字符映射了各逻辑节点信息及相互之间的通信规则。相较于http://qks.cqu.edu.cn/html/cqdxzrcn/2022/8/20220808.htm