0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CAN/CANFD通信协议简介

冬至子 来源:知锂 作者:SW十五 2023-10-31 12:48 次阅读

汽车常用总线

图片

1.jpg

CAN发展时间线

1983年,Bosch开始研究汽车网络技术

1986年,Bosch在SAE(美国汽车工程师协会)大会正式公布CAN协议

1987年,Intel和Philips先后推出CAN控制器芯片

1991年,Bosch颁布CAN 2.0技术规范,同年,CAN总线最先在Benz S系列轿车上实现

1993年,ISO颁布CAN国际标准ISO-11898

1994年,CiA(CAN in AUTOMATION)组织举办第一届国际CAN大会(iCC),同年,CiA在中国开了第一场CAN研讨会

2011年,Bosch发布第二代CAN通信技术:CANFD 1.1版(Non-ISO)

2015年,CAN FD被ISO标准化

2018年,CiA应大众汽车要求开始开发第三代CAN通信技术CAN XL

2020年,CAN XL登场第十七届iCC大会

CAN的分层结构

CAN遵循ISO制定的OSI(Open System Interconnection)七层模型,其结构体现了两层:数据链路层、物理层。

图片

CAN控制器:生成CAN帧并以二进制码流的方式发送,在此过程中进行位填充、CRC校验、应答检测等;将接收到的二进制码流进行解析并接收,在此过程中进行收发比对、去位填充、CRC校验等。此外还需要进行冲突判断、错误处理等。

CAN收发器:将二进制码流转换为差分信号发送,将差分信号转换为二进制码流接收。

CAN差分信号

CAN收发器逻辑信号和物理信号之间的转换采用差分电平方式。

图片

1.jpg

问:为什么CAN线是双绞线?

答:双绞线传输差分信号时受到共模信号干扰后,电位差不变,信号解码正常。

双绞线一般要求:芯截面积:0.35mm^2~0.5mm^2;绞距:33twist/m~50twist/m。

CAN终端电阻

图片

为了保证CAN通信稳定,CAN总线两端各添加一个终端电阻。终端电阻的作用有3个:

1、提高抗干扰能力,让高频低能量的信号迅速走掉;

2、确保总线快速进入隐性状态,让寄生电容的能量更快走掉;

3、提高信号质量,放置在总线的两端,让反射能量降低。

ISO 11898-2中规定终端电阻标称值为120Ω(最小100Ω,最大130Ω),最低功耗是220mW。

图片

图片

对于有SPLIT引脚的CAN收发器,如常用的NXP TJA1040,终端电阻采用分离式(分裂式)连接,使用两个6062Ω的电阻,中间一个小电容(45nF),这样可以有效地降低电磁辐射,提高总线的抗干扰能力。

CAN波特率与位时间

位:bit,数据存储的最小单位,每个0或1就是一个位。

字节:byte,计量存储容量的一种计量单位,1字节=8位。

波特率是位速率,即发送节点在非同步的情况下发送的每秒钟的位数。常见的有250kb/s、500kb/s等。

位时间顾名思义是发送一个位所需要的的时间,位时间=1/位速率,比如波特率250kb/s的位时间就是4us。

图片

CAN数据帧格式

数据帧是五种报文帧(数据帧、远程帧、错误帧、过载帧、帧间隔)里最复杂,也是最常用的。数据帧格式如下图,平时使用我们看到的只有仲裁段的ID和数据段。

图片

CAN 2.0A标准定义了标准帧,CAN 2.0B标准定义了扩展帧,支持CAN 2.0B的芯片可以兼容两者帧格式。

标准帧和扩展帧的区别只在于ID,标准帧ID是11位,扩展帧ID是29位。

CAN负载率

CAN总线负载率是指在CAN总线上单位时间内实际传送的位数和可以传送的位数之比,即1s实际发送报文位数除以波特率。

CAN总线负载率宜控制在30%以内。实际整车负载率会控制在65%左右,对各模块的要求是达到85%左右而不会出现错误帧。

为了降低总线负载,一些不重要或实时性不强的报文周期比较长,会低于采集或计算周期。

CAN的数据排列格式

从CANalyzer的DBC编辑器可以看出,每行表示一个字节的8个位,从右到左依次是bit0, bit1...bit7。一共有8行,从上到下依次是byte0, byte1...byte7。这也能看出数据段包含最多8个byte的数据,共64个bit(bit位序从byte0到byte7依次递增排序)。

图片

数据的传输规则:字节的高位(msb)先发送,字节的低位(lsb)最后发送。对于字节的发送而言,可以选择高字节(MSB)先发(Byte 7先发),也可以低字节(LSB)先发(Byte 0先发),通常来说是用低字节先发。

数据排列有Intel和Motorola两种格式,两者只有在跨字节时才有区别。

按照byte0, byte1...的先后顺序,Intel格式小字节在前,大字节在后,所以叫小端;Motorola格式大字节在前,小字节在后所以叫大端。

比如一个数据,byte 0是12,byte 1是34,Intel格式解析是0x12 34,Motorola格式解析是0x34 12。

CAN的CRC

CRC是循环冗余校验(Cyclic Redundancy ),用来检测或校验数据传输或者保存后可能出现的错误。CRC的计算方法由ISO 11898-1规定。

图片

如果接收方判断该数据帧无效,则该帧报文弃之不用,发送节点会重新发送该报文,接收方收到后回复确认后结束。

CAN的Checksum

Checksum是校验和,和CRC作用类似,也用来检验数据的准确性。

实际应用中,CRC并不能检测到所有的差错,为了尽可能保证数据传输的准确性,一般CAN通信里还增加了Checksum。

Checksum的计算方式没有统一规定,各厂家可以根据自身需要制定。

Checksum的值一般会在数据段里发出来。

CAN的计数器

CRC和Checksum可以保证信号的有效性,而计数器可以保证信号的时效性。计数器一般叫Live Counter或Rolling Counter。发送节点每次在发送一帧报文后就对该Live Counter位加1。通常live Counter是4bit,那么live Counter就会在015(也有014)之间循环增加。

如果发送节点发送报文出了问题,从Live Counter波形上就会体现出现。

图片

接收节点接收到报文后对计数器的值进行评估,当计数器值出现不连续的情况时,该帧报文的内容将被丢弃不再使用,直到计数器值重新连续为止。

CANFD的特点

CANFD(CAN with Flexible Data Rate)可以理解成CAN协议的升级版,只升级了协议,物理层未变。

CANFD与CAN最明显的区别:可变速率、新的数据段长度。

图片

1.可变速率

从控制段中的BRS位到ACK段之前(含CRC分界符)为可变速率(理论最大可达12Mb/s),其余部分为原CAN总线用的速率,比如某CANFD总线波特率为500kb/s+2Mb/s。

2.新的数据段长度

CAN-FD对数据段的长度作了很大的扩充,最大可达64字节。

CANFD同样有标准帧和扩展帧之分,与CAN一致。

上图两个帧结构图都是扩展帧,区别在CRC段。用CRC多项式区分:CRC_15用于CAN,CRC_17用于数据段不超过16字节的CANFD,CRC_21用于数据段超过16字节的CANFD。

CANFD的波特率

ISO没有规定CANFD的波特率,考虑实际应用时通信稳定性,一些标准推荐了几种波特率选择。

图片

SAE J2284-4:推荐汽车CANFD网络应用(不同ECU通信)采用500kb/s+2Mb/s的波特率

SAE J2284-5:推荐汽车CANFD点对点通信应用(单个ECU刷写)采用500kb/s+5Mb/s的波特率

CiA:推荐1Mb/s+5Mb/s,500kb/s+2Mb/s,250kb/s+2Mb/s

CANFD的优势

CANFD支持更高的速率,可以更快地刷写ECU;

CANFD在单个数据帧内传送率可达64字节,避免了经常发生的数据分拆传输的状况;

CANFD可重新再利用CAN线束和其它物理层面元件;

CANFD在电动车(更多的ECU)以及今后的动力CAN(更高的速率)上应用更有优势;

CANFD上层应用层架构不需要改变,在原来基础上扩展即可。

CANFD与CAN的兼容性问题

未来的CAN网络,较长时间内都会存在着传统CAN与CAN FD并存的情况。部分需解决速率问题的节点会率先采用CAN FD,其他对实时要求不高的节点仍然会使用传统CAN。

CANFD和CAN节点之间的通信数据可以通过CANFD路由器转发,类似于现在车上处于不同网络的ECU之间的通信。

图片

ECU和ABS之间通信由CANFD路由器将ECU与ABS的数据1:1转发;ECU或者ABS与ECAS之间通信由CANFD路由器换为传统CAN再转发。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 收发器
    +关注

    关注

    10

    文章

    2971

    浏览量

    104791
  • 控制器
    +关注

    关注

    112

    文章

    15235

    浏览量

    171213
  • CAN通信
    +关注

    关注

    3

    文章

    87

    浏览量

    17628
  • 二进制
    +关注

    关注

    2

    文章

    707

    浏览量

    41254
  • CRC校验
    +关注

    关注

    0

    文章

    81

    浏览量

    15032
收藏 人收藏

    评论

    相关推荐

    CAN通信协议

    CAN通信协议,需要的看看。
    发表于 04-19 17:11

    STM32 CAN通信协议

    CAN 简介CAN 是控制器区域网络(Controller Area Network) 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议
    发表于 08-19 09:31

    CAN串行通信协议

    一.CAN简介CAN是ControllerArea Network的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。在当前的汽车产
    发表于 08-19 08:44

    CAN通信协议简析

    CAN 简介CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO 国际标准化的串行通信协议。在
    发表于 08-19 06:29

    CAN协议特点简介

    (1)电平特性(2)5种-帧类型STM32xxx CAN控制器(1)STM32F4 的 bxCAN 的主要特点有:(2)过滤器作用 详细分析CAN协议 简介
    发表于 08-19 06:02

    CAN_2.0中文_通信协议

    CAN_2.0中文_通信协议
    发表于 03-30 16:51 23次下载

    基于双CAN总线的数字伺服通信协议

    基于双CAN总线的数字伺服通信协议
    发表于 09-01 14:25 8次下载
    基于双<b class='flag-5'>CAN</b>总线的数字伺服<b class='flag-5'>通信协议</b>

    CAN总线通信协议的分析和实现 CAN总线通信协议以及其实现方法

    CAN总线通信协议的分析和实现 CAN总线通信协议以及其实现方法
    发表于 09-04 08:45 40次下载
    <b class='flag-5'>CAN</b>总线<b class='flag-5'>通信协议</b>的分析和实现 <b class='flag-5'>CAN</b>总线<b class='flag-5'>通信协议</b>以及其实现方法

    CAN总线通信协议

    CAN总线通信协议详细如下。
    发表于 04-19 16:54 75次下载

    CAN入门书之中文版CAN通信协议

    CAN入门书之中文版CAN通信协议
    发表于 11-18 16:36 0次下载

    MODBUS通信协议学习(一):协议简介

    目录前言MODBUS协议简介MODBUS通信格式信息帧格式前言近期需要制作一个MODBUS/RTU转MODBUS/TCP 的网关。首先需要了解一下MODBUS通信协议。这篇文章在学习过
    发表于 01-14 13:24 21次下载
    MODBUS<b class='flag-5'>通信协议</b>学习(一):<b class='flag-5'>协议</b><b class='flag-5'>简介</b>

    CANCANFD协议简介(上)

    Flexible Data-rate)是一种常用于汽车和工业领域的通信协议CAN协议最初是由德国的博世公司(Bosch)在20世纪80年代开发的,旨在解决汽车电子设备之间的通信
    的头像 发表于 07-31 12:10 1653次阅读
    <b class='flag-5'>CAN</b>和<b class='flag-5'>CANFD</b><b class='flag-5'>协议</b><b class='flag-5'>简介</b>(上)

    CANCANFD协议简介(下)

    前篇内容请点击查看: RA MCU CANCANFD IP介绍 CANCANFD协议简介(上
    的头像 发表于 08-02 12:15 1472次阅读
    <b class='flag-5'>CAN</b>和<b class='flag-5'>CANFD</b><b class='flag-5'>协议</b><b class='flag-5'>简介</b>(下)

    can总线的通信协议有哪些 CAN接口保护及工作原理

    CAN总线(Controller Area Network)是一种广泛应用于汽车、工业自动化和其他领域的串行通信协议。以下是几种常见的CAN总线通信协议
    的头像 发表于 08-18 14:40 1.2w次阅读
    <b class='flag-5'>can</b>总线的<b class='flag-5'>通信协议</b>有哪些 <b class='flag-5'>CAN</b>接口保护及工作原理

    CANCANFD的区别 CANCANFD如何转换

    CANCANFD的区别 CANCANFD如何转换  CAN(Controller Area Network)是一种广泛应用于汽车和工业控
    的头像 发表于 11-22 16:37 3761次阅读