首页 » 通讯 » CAN总线事理-精华整理_节点_报文

CAN总线事理-精华整理_节点_报文

南宫静远 2024-12-21 18:16:38 0

扫一扫用手机浏览

文章目录 [+]

为了大家阅读有所侧重,以下内容用★号做了标识:★★★★★表示汽车电子工程师必须熟习的★★★★表示汽车电子工程师推举理解的★★★及以下表示专门从事CAN总线开拓的工程师须要知道的

什么是CAN总线?★★★★★

CAN总线事理-精华整理_节点_报文 CAN总线事理-精华整理_节点_报文 通讯

CAN(Controller Area Network)是二十世纪八十年代初德国Bosch公司为办理当代汽车中浩瀚电控单元(ECU)之间的数据交流而开拓的一种多主机局部网络串行通信协议。

CAN总线事理-精华整理_节点_报文 CAN总线事理-精华整理_节点_报文 通讯
(图片来自网络侵删)

1983年 由Bosch和Intel共同开拓1987年 第一块CAN掌握器芯片(Intel)1990年 第一辆运用CAN的量产车:Mercedes S-Class1991年 CAN 2.0发布(PART A 与 PART B)1993年 CAN成为ISO标准(ISO 11898)

很多同学一看这名字就晕了,实在可以大略把CAN通信理解成开一场电话会议,当一个人讲话时其他人就听(广播),当多个人同时讲话时则根据一定规则来决定谁先讲话谁后讲话(仲裁),这就好比会议中你和领导同时讲话,你肯定会很识趣地让领导先讲。

但值得把稳的是,在这场会议中,讲话人会确认听话人是否成功吸收信息,如果说话人通报的信息有误,听话人会及时指出错误。

CAN总线有哪些上风?★★★★★

随着通信技能的发展,现今通信办法和协议五花八门,但CAN通信仍旧是车载网络最安全可靠且运用最广的技能之一。

过去,汽车常日采取常规的点对点通信办法将电子掌握单元及电子装置连接起来,但随着电子设备的不断增加,导线数量也随之增多,采取CAN总线网络构造,可以达到信息共享、减少布线、降落本钱以及提高总体可靠性的目标。

总的来说CAN总线有以下几点上风:

① 数据传输速率相对较高,可达到1 Mbit/s。
(CAN-FD和CAN-XL分别可以达到2 Mbit/s和10 Mbit/s。

② 采取差分数据线,抗滋扰能力强;

③多主通信模式,大幅减少单点通信线束本钱;

④具有缺点侦听的自我诊断功能,通信可靠性较高。

CAN总线事理及事情机制是若何的?★★★★★

这一部分内容比较多,建议小伙伴们沉下心来阅读。

(1)CAN通信硬件根本:接口电路

CAN总线节点有两种硬件构成方案:

① MCU掌握器 + 独立CAN掌握器 + CAN收发器。
(独立CAN掌握器如NXP半导体的SJA1000等)利用独立CAN掌握器程序复用移植性较好,但占用主控芯片I/O资源。

② 集成CAN掌握器的MCU + CAN收发器。
(集成CAN掌握器的单片机如NXP半导体的P87C591等)该方案程序复用性不佳,有很强针对性,但可以使电路更加大略。

如下图完全的CAN接口电路包括吸收发送CAN报文的CAN掌握器,转换数字旗子暗记和CAN旗子暗记的CAN收发器,肃清噪声的滤波器以及供应得当阻抗的CAN高和CAN低终端电路。

(2)CAN通信机制:

电旗子暗记的传输在物理层面都是靠电压高低区分来实现的,CAN通信也不例外。
CAN总线利用双绞线进行差分电压传输,两条旗子暗记线被称为CAN高(CAN_H)和CAN低(CAN_L)。

两条线静态时均为2.5V旁边,此时状态表示为逻辑1,也被称作隐性。
当两条线电压值涌现差异时,常日CAN_H=3.5V和CAN_L=1.5V,此时状态表示为逻辑0,也称作显性。
即:

差分电压CAN_diff = 0V,表示逻辑“1”,为隐性;

差分电压CAN_diff = 2V,表示逻辑“0”,为显性;

注:实际开拓中两条线的电压都会在标准值高下附近颠簸,这也是用差分传输的好处,减少偏差和噪声带来的滋扰。

显性电平用逻辑“0”表示,隐性电平用逻辑“1”表示,这里可能有小伙伴会问为什么“0”是显性,感官上不应该这样规定啊?实在这是由于CAN总线采取“线与”规则进行冲突仲裁,即当多个CAN旗子暗记同时发送时,有的发1有的发0,而只要有0,当前总线便是0(1&0 = 0),看上去便是1被0覆盖了。
另一方面,从电位看,高电位为0,当1和0同时发送时,总线处于高电位,显现出来的是0,以是把0规定为显性。

下面我再来说说CAN帧(报文)是怎么实现信息交流的。
一样平常书本教材都是先讲CAN报文的格式再去谈运用,但这对付强调运用的工程技能职员并不友好,以是我们反着来讲,先看下在车辆开拓中ECU报文都是如何通报有用信息的,开拓工程师常打仗的知识点有哪些。

拿发动机掌握单元EMS的一条报文举例,我们要知道哪些关键信息?

这条报文的名称为EMS_Control,ID为0x100,报文发送周期是10ms,报文长度为8个byte。
上表定义了两个范例旗子暗记:

一个旗子暗记为发动机转速EMS_RPM,数据长度8bit,那这8bit如果按照二进制与十进制纯挚转换,只能表示 ,但这远远不能覆盖实际发动机高达几千的转速,以是工程师们想了个办法,让二进制转换来的数乘上系数再加上偏置数来表达实际值,如例子里面转速范围为0~7650,这个最大值7650便是得来的。

第一个旗子暗记是表示数值,其余一个旗子暗记则是常用的标志位旗子暗记,常日来反响系统所处的状态。
例子中的EMS_FAIL_F表示发动机掌握单元是否涌现缺点,只占1bit,也便是只有两个状态,0b表示运行正常,1b表示涌现缺点。

是不是大概理解报文里面工程运用的一些关键信息了?那还有没提到的报文起始字节和数据起始字节又如何理解?我们先来看一张图:

这个是汽车电子工程师常用工具CANoe里面报文layout的一张截图,关于CANoe的利用及仿真编程在后面的文章会详细先容,我们先看看这个图怎么看。
第一列从0到7分别表示一帧8个byte从低到高的位置,0便是第0个byte,7便是第7个byte,这里要把稳第一个byte位置记为0。

第一行从7到0分别表示byte[0]的旗子暗记从高到低排列,7便是第7个bit,0便是第0个bit,这里同样要把稳最低位为bit[0]。
以是说来说去,CAN报文和所有旗子暗记传输一样都是靠0和1组合起来的信息,经由一定的CAN协议就能转换成我们想要的结果。

说到这里,大家该当对整车开拓常用的CAN报文格式有了粗略的印象,但是CAN报文在传输中可不但是这8个byte统共64bit在双绞线上跑,这8个byte只是具有实际工程意义的数据场旗子暗记,整车几十个ECU彼此之间要准确无误的发送吸收则要遵照一定的规则。

CAN帧格式★★★★

相互通信的ECU要想彼此收发,须要利用相同的CAN报文格式,这就好比两个不同母语的人要对话必须讲同一种措辞才行,不然便是鸡同鸭讲了。
目前紧张有CAN2.0A和CAN2.0B两种技能规范。

CAN2.0A规定了11位标识符的标准帧格式,CAN2.0B在此根本上又增加了一种具有29位标识符的扩展帧格式。

CAN帧根据用场不同分为四种类型:数据帧、远程帧、缺点帧、超载帧。

(1)数据帧:用于传送数据

帧起始:标志一个数据帧的开始,仅由一个显性位构成,只有在总线空闲期间才能够发送。

仲裁场:在标准帧中,仲裁场由11位标识符和RTR位组成;在扩展帧中,仲裁场由29位标识符、SRR位、IDE位和RTR位组成。

ID(标识符)是用来确定一条报文,表明报文含义及优先级,如上面举例的0x100。

RTR(远程传送要求位),数据帧RTR位必须为显性电平(RTR=0),远程帧RTR位必须为隐性电平(RTR=1)。

IDE(标识符扩展位)在标准帧属于掌握场,在扩展帧中属于仲裁场。
在标准帧中IDE为显性电平(IDE=0),在扩展帧中IDE为隐性电平(IDE=1)

SRR(远程代替要求位)在扩展帧中始终为隐性电平(SRR=1)

掌握场:由6位组成。
在标准帧中,掌握场包括IDE(此时为显性电平0)、保留位r(此时为显性电平0)以及占4个bit的数据场长度码DLC。
在扩展帧中,掌握场没有IDE位,而是两个保留位r0和r1,此时同样均为显性电平0。

数据场:包含CAN数据帧发送的数据,0~8个byte,如上面举例的紧张信息便是环绕数据场来解释的,这也是整车电子工程师谈论得最多的一部分内容,如果你不是专门的CAN设计工程师,其他的格式内容仅作理解即可。

CRC场:包括CRC序列CRC界定符DEL,CRC校验是为了通信双方的安全可靠性制订的”暗号“,只有发送方根据发送信息打算的CRC值与吸收方根据吸收信息打算的CRC值对上,才能判断这次通信成功了,否则就会报错。

应答场:包括2位,应答间隙(ACK)和应答界定符(DEL)。
发送节点发出的报文中ACK及DEL均为隐性电平1,吸收节点精确吸收后会用显性电平0覆盖隐性电平,以表示精确吸收。
总结说便是,精确吸收ACK=0,DEL=1;未精确吸收ACK=DEL=1。

帧结束:7个连续的隐性位,表示数据帧结束。
节点在检测到11个连续的隐性位后认为总线空闲。

(2)远程帧:向其他节点要求发送具有同一标识符的数据帧,远程帧没有数据场,且RTR位为隐性电平。

(3)缺点帧:当节点监测到一个或多个由CAN标准所定义的缺点时,就会产生一个缺点帧。
缺点帧由缺点标志和缺点界定符两个部分组成。

缺点标志分为主动缺点标志和被动缺点标志:

主动缺点标志由6个连续的显性位组成;被动缺点标志由6个连续的隐性位组成,除非被其他节点的显性位覆盖;缺点界定符由8个连续的隐性位组成。

什么时候发带有主动缺点标志的缺点帧?什么时候发带有被动缺点标志的缺点帧?这里我们先要说下节点的缺点状态。

节点的缺点状态有三种,主动缺点状态、被动缺点状态、总线关闭状态。

主动缺点状态:节点处于主动缺点状态可以正常通信,处于主动缺点状态的节点(可能是吸收节点也可能是发送节点)在检测出错误时,发出主动缺点标志。

被动缺点状态:节点处于被动缺点状态可以正常通信,处于被动缺点状态的节点(可能是吸收节点也可能是发送节点)在检测出错误时,发出被动缺点标志。

总线关闭状态:节点处于总线关闭状态不能收发报文,只能一贯等待,在知足一定条件时才能再次进入到主动缺点状态正常收发报文。

一个CAN节点在什么情形下处于主动缺点状态,什么情形下处于被动缺点状态?根据CAN协议的规定,CAN节点内有两个计数器:发送缺点计数器TEC和吸收缺点计数器REC,CAN节点便是根据这两个计数器值得大小来判断处于什么状态的。

0<REC<=127且0<TEC<=127时,节点处于主动缺点状态。
在该状态下,节点检测到一个缺点就会发送带有主动缺点标志的缺点帧,由于主动缺点标志是连续六个显性位,以是这个时候主动缺点标志将会覆盖总线上其他位旗子暗记,这样CAN总线上之前传输的报文就被这六个显性位毁坏掉了。
这就相称于创造缺点的节点主动站出来见告总线上其他节点,刚才的旗子暗记有问题,你们都不要吸收处理,丧失落就好了。
如果某个节点发送缺点帧次数较多,以至于REC>127或TEC>127,那么该节点就处于被动缺点状态。
在该状态下,节点检测到一个缺点就会发送带有被动缺点标志的缺点帧,由于被动缺点标志是连续六个隐性位,以是这个时候总线上传输的报文都不会受到该被动缺点帧的影响,其他节点收发正常。
已经处于被动缺点状态的节点,仍旧多次发送被动缺点帧,终极使得TEC>255,这样就进入总线关闭状态。
在该状态下,节点无法收发报文,从总线上离线。
只有等到检测到128次11个连续的隐性位时,TEC和TEC才会重新置0,节点回到主动缺点状态。

CAN总线缺点分类:

CAN节点计数器如何计数:

(4)超载帧:超载帧用于在先前和后续的数据帧(或远程帧)之间供应一附加延时,超载标志由6个显性位组成,超载界定符由8个连续的隐性位组成。

CAN总线非毁坏性仲裁★★★★★

在CAN总线上发送的每一条报文都具有唯一的一个11位或29位数字的ID,当节点同时发送报文时CAN总线将按”线与“机制对ID的每一位进行判断,当有一个节点发送0则总线的状态便是0,以是ID的值越小优先级就越高,这也是为什么在整车上越主要的报文ID值越小。

如下图节点1,2,3同时发送报文,依次比拟ID的每一位,节点3的ID值最小,终极取得了CAN总线的掌握权。

CAN总线位添补机制★★★

CAN总线采取多种抗滋扰方法以减少帧在传送过程中出错,位添补技能是个中很主要的一种。
CAN总线规定旗子暗记的跳变沿即为同步旗子暗记,以是只要旗子暗记发生变革了,节点时钟就会被同步。
但如果有连续相同的旗子暗记发送,没有跳变发生,则有可能涌现发送吸收节点不同步,从而导致旗子暗记非常。
以是当检测到5个连续相同的位旗子暗记时,实际发送会自动插入一个补码发送,然后再接着发送原有旗子暗记。

SOF之前的总线空闲区域,不须要同步,无需进行位添补。
CRC之后的位域都是固定格式,不许可位添补操作。

下图举例解释了位添补机制详细是如何操作的,值得把稳的是第二个添补位也被包含到了5个连续相同位的计数中,由于添补位同样是被当成总线数据位处理的。

CAN总线位时序及同步★★★

位定时是指CAN总线上一个数据位的持续韶光,紧张用于CAN总线上各节点的通信波特率设置,同一总线上的通信波特率必须相同。

正常的位韶光=1/波特率。
(比如1Mbit/s波特率,一个位的发送韶光便是1微秒)

位韶光可以分为以下四段:

同步段:用于同步总线上不同的节点,该段内须要一个跳变沿;传播段:用于补偿CAN网络上的物理延迟;相位缓冲段1和2:用于补偿相位偏差,可以通过重同步加长或缩短。

CAN通信数据流中不包含时钟信息,CAN总线规范中定义的同步担保报文可以不管节点间积累的相位偏差精确地译码。

CAN的同步办法包括硬同步和重同步两种:

一个位韶光内只许可一种同步办法,要么硬同步要么重同步;任何一个从隐性到显性的低落沿都可以用于同步;硬同步发生在报文的SOF位(帧起始),所有吸收节点调度各自当前位的同步段,使其位于发送的SOF位内;重同步发生在一个报文SOF位之外的其他段,当低落沿落在了同步段之外时发生重同步;在SOF到仲裁场发送的韶光段内,如果有多个节点同时发送报文,那么这些发送节点对跳变沿不进行重同步。

硬同步发生在SOF位,所有吸收节点调度各自当前位的同步段,调度宽度不限。

发送节点Node_A在发送SOF位时,SOF位的低落沿在同步(SS)段,这个时候吸收节点Node_B创造自己当前位的SS段和发送节点SOF位的同步SS段不同步,于是吸收Node_B强行将自己当前位的SS段拉到与SOF位的SS段同步。

重同步发生在一个报文SOF位之外的其他位场内,当吸收节点Node_b当前位的低落沿落在了发送节点Node_A当前位的同步段之外时发生重同步。

发得晚,收得早,会导致相位缓冲段1延长。
发送节点Node_A当前位的SS段产生的时候,吸收节点Node_B当前位的SS段已经早于它产生了,此时吸收节点Node_B就要延长一段韶光与Node_A的采样点进行同步。

发得早,收得晚,会导致相位缓冲段2缩短。
发送节点Node_A当前位的SS段产生韶光早于吸收节点Node_B确当前位SS段产生韶光,此时吸收节点Node_B要缩短相位缓冲段2,以担保两者采样点同步。

到这里,常用的CAN通信事理就先容完了,希望对各位有所帮助。

参考:

1.恒润科技-CAN根本.PDF

2. 恒润科技-CAN总线快速入门.PDF

3.《汽车CAN总线系统事理、设计与运用》 罗峰 孙泽昌 著

4.《CAN总线嵌入式开拓从入门到实战》 牛跃听 周立功 方丹 等编著

5.《CAN入门》 瑞萨

6. CAN总线学习条记(1)~(5) CSDN站点

标签:

相关文章

IT元素磁砖,引领家居科技潮流的环保创新

随着科技的飞速发展,家居建材行业也迎来了前所未有的变革。在这个背景下,一种名为“IT元素磁砖”的新型建材应运而生。这种磁砖不仅具备...

通讯 2024-12-28 阅读0 评论0

IT公司交流,共筑创新生态,共绘未来蓝图

随着科技的飞速发展,信息技术产业在我国经济中的地位日益凸显。为了促进产业创新,加强企业间的交流与合作,我国IT企业纷纷积极参与各类...

通讯 2024-12-28 阅读0 评论0