资讯详情

can总线不加末端电阻_细说汽车电子通信总线之CAN 2.0 总线协议详解

引言

1. CAN历史与总线发展ISO规范

2. CAN总线的主要功能特性

3. CAN 2.0总线协议的物理层电气特性

4. CAN 2.0总线协议消息详解

4.1 CAN2.0总线通信报文帧格式(Message Frame Format)

4.2 CAN2.0总线通信报文帧类型(Message Frame Type)

4.3 CAN2.0总线通信报纸标准/扩展数据帧

4.4 CAN2.0总线通信报纸标准/扩展远程帧

4.5 CAN2.0总线通信报纸错误帧

4.6 CAN2.0总线通信报文过载帧

4.7 CAN2.0总线通信报文之间的帧间空间

5. CAN 2.总线仲裁0总线协议(Bus Arbitration)

6. CAN 2.0总线协议的位流编码(Bit Coding)与位填充(Bit Stuffing)

7. CAN 2.0总线协议的错误检测机制

7.1 CAN 2.0 错误类型的总线节点

7.2 CAN 2.0 故障定义总线节点

7.3 CAN 2.0 总线节点的状态

8. CAN 2.0总线协议的定时和同步

8.1 CAN 2.0 总线协议的总线协议的位时间

8.2 CAN 2.0 总线协议的同步机制

总结

引言

CAN 是Controller Area Network 缩写(以下简称CAN),是ISO串行通信协议国际标准化。在汽车行业,由于安全、舒适、方便、公害低、成本低的要求,开发了各种电子控制系统。由于这些系统之间使用的数据类型和对可靠性的要求不同,由多条总线组成的情况很多,线束的数量也增加了。为适应"减少线束的数量"、"通过多个LAN,高速通信大量数据"的需要,1986 德国汽车电子巨头博世(BOSCH)公司为汽车开发公司CAN 通信协议。此后,CAN 通过ISO11898 及ISO11519 进行了标准化,在欧洲乃至全球已成为汽车网络的标准协议,也是目前汽车电子应用中使用最广泛的通信协议。

CAN 经过30多年的发展,其高性能和可靠性已得到市场的验证和认可。除汽车电子外,还广泛应用于工业自动化、船舶、医疗设备、工业设备等领域。

然而,许多汽车电子产品ECU但是开发工程师并不真正清楚CAN总线协议本身,这让很多工程师,在实际ECU项目的CAN在总线硬件设计和软件开发过程中CAN总线相关问题无从下手,事半功倍。

本文就为大家详细梳理一下CAN目前使用最广泛的总线CAN 2.0 A/B该版本也被称为传统协议CAN(Classic CAN)协议希望能让大家对CAN对总线协议有更全面、更深入的了解,从而积累让CAN总线开发越来越多easy,事倍功半!

1. CAN历史与总线发展ISO规范

控制器局域网CAN(Controller Area Network),最初是德国Bosch公司设计,用于汽车监控。

远程网络通信控制模式,技术先进,可靠性高,功能完善,成本合理,CAN总线广泛应用于各种电磁辐射强、振动大的工业环境和控制领域。

1991年9月,Philips制定并发布半导体公司CAN技术规范:CAN 2.0 A/B。CAN 协议经 ISO 标准化后有 ISO11898 标准和 ISO11519-2 标准两种。ISO11898 和 ISO11519-2 数据链路层的标准定义相同,但物理层不同。

CAN总线是唯一成为国际标准的现场总线,也是世界上应用最广泛的现场总线之一。

CAN总线 规范( Version 2.0 )

  • CAN2.0A :CAN标准报文格式

  • CAN2.0B:CAN标准报纸格式和扩展报纸格式

CAN总线 技术规范的目的

  • 定义数据链路层

  • 定义CAN协议在周围各层中所发挥的作用

2. CAN总线的主要功能特性

CAN集成在总线控制器中CAN协议的物理层和数据链路层功能可以完成通信数据的帧处理,包括位填充、数据块编码、循环冗余检查、优先级判断等。

f0348268c14c7491b295ff94103c4a24.png

CAN理论上,总线网络中通信节点的数量不受限制

CAN该协议最大的特点之一是废除了传统的站址编码,而不是编码通信数据块。这种方法的优点可以使网络中的节点数量在理论上不受限制。数据块的标识符可以由11或29位二进制数组成,因此可以定义2或2个以上不同的数据块。这种按数据块编码的方式也可以使不同的节点同时接收相同的数据,这在分布式控制系统中非常有用。数据段长度最多为8个字节,可满足工业领域控制命令、工作状态和测试数据的一般要求。同时,8个字节不会占用总线太长时间,从而保证通信的实时性。CAN协议采用CRC可提供相应的错误处理功能,保证数据通信的可靠性。CAN卓越的特点、高可靠性和独特的设计特别适合工业过程监控设备的连接。因此,它越来越受到行业的重视,并被公认为最有前途的现场总线之一。

自由通信可以在节点之间实现

CAN总线采用多主竞争总线结构,具有多主站运行和分散仲裁的串行总线和广播通信的特点。CAN总线上的任何节点都可以在不分主次的情况下主动向网络上的其他节点发送信息,从而实现各节点之间的自由通信。CAN国际标准化组织认证了总线协议,技术相对成熟,控制芯片商业化,性价比高,特别适用于分布式测控系统之间的数据通信。CAN总线插卡可以随意插入PC AT XT分布式监控系统方便地构成在兼容机上。

CAN 2.0 总线的功能特性如下

  • 多主(master)总线访问基于优先权

  • 基于优先权的无破坏性逐位仲裁

  • 借助验收滤波器的多地址帧传输

  • 远程数据请求

  • 全系统数据相容性

  • 错误检测和错误信令

  • 数据传输距离长达10Km@5Kbps)

  • 数据传输速率高达1Mbps)

  • 高实时性:每帧报纸允许传输最多8个字节的数据

  • 发送期间丢失仲裁或出错而遭到破坏的帧可自动重发

  • 判断暂时错误和永久性故障节点,自动脱离故障节点

  • 离开总线的节点不会影响总线的正常工作

3. CAN 2.物理层电气特性0总线协议

MCU硬件只能提供3.3V/5V的TTL/CMOS电平信号,而CAN差分信号在总线上传输。CAN2.0总线规范的物理层规定CAN物理层的总线通信(Physical Layer, CAN实现要求:

  • 使用双绞线通信,一个是CAN_H,另一根为CAN_L.

  • 总线电平有显性电平和隐性电平。

  • 显性电平的逻辑值为0,隐性电平为1。

显性意味着优先级。只要有单元输出显性电平,总线就是显性电平。此外,隐性具有包容性的含义。只有所有单元输出隐性电平,隐性电平才在总线上(显性电平强于隐性电平)

在一个CAN网络最远的两个节点需要端接120Ω匹配电阻可以保证信号传输和正常通信;

ISO11898和ISO-11519-2两个不同的CAN物理层总线标准的通信电平比较如下:

常用的SO11898规范规定:

  • 逻辑“1” 总线处于隐性状态。VCAN-H和VCAN-L平均电压2固定.5V,即Vdiff近似为0。

  • 逻辑“0” 时,总线呈现“显性”状态。VCAN-H为3.5V,VCAN-L为1.5V,即Vdiff为2V

Tips:ISO11898和ISO-11519-2两个不同的CAN总线标准的差异还包括:

  • ISO11898 通信速度为 5kbps-1Mbps 的 CAN 高速通信标准。

  • ISO11519 通信速度为 125kbps以下的 CAN 低速通信标准,即容错CAN(LSFT CAN)。提供从5 Kbit/s到125 Kbits/s波特率。这个标准允许在CAN当总线失败时CAN继续进行总线通信。低速/容错CAN每个设备都有自己的终端。

  • 不同的电平和不同的匹配电阻。由于终端类型不同,高速和低速/容错CAN同一网络不能使用设备。

Tips:不仅是 ISO,SAE(Society of Automotive Engineers)等其它的组织、团体、企业也对 CAN 协议进行了标准化。其他标准介绍下:

Tips:通常使用CAN收发器都是符合ISO11898规范的,比如NXP的TJA1040/2/3/4/5/6以及TJA1050/1/2等;而符合ISO1111519-2规范的CAN收发器使用介绍,只有NXP的TJA1055T;

Tips:两个CAN节点即使时同一个MCU中的两个CAN控制器)间(通信必须使用CAN收发器,并连接匹配的端接电阻,否则无法完成CAN报文传输;

4. CAN 2.0总线协议消息报文详解

4.1 CAN2.0总线的通信报文帧格式(Message Frame Format)

CAN2.0总线有两种不同的CAN帧格式

  • 具有11位标识符的CAN帧称为:标准帧(Stand Frame)

  • 具有29位标识符的CAN帧称为:扩展帧(Extend Frame)

CAN规范2.0B中引入了第二种报文格式--扩展帧,同时兼容CAN规范2.0A的标准帧:

  • CAN控制器必须完全支持标准帧(收/发),半双工通信

  • CAN控制器必须支持接收扩展帧

4.2 CAN2.0总线的通信报文帧类型(Message Frame Type)

CAN2.0总线规定了4种不同的通信报文帧类型,用于不同的通信目的:

帧类型

用途

数据帧

从发送节点向其它节点发送数据

远程帧

向其它节点请求发送具有同一识别符的数据帧

错误帧

当检测出错误时向其它节点指明其已检测到总线错误

过载帧

接收单元通知其尚未做好接收准备

4.3 CAN2.0总线的通信报文之标准/扩展数据帧

CAN2.0总线的通信报文的数据帧是使用最大的帧类型,一帧完整的CAN 2.0总线数据帧报文包含如下7个场(Field,也有译作域):

  • 帧起始(Start Of Frame)

  • 仲裁场(Arbitration Field)

  • 控制场(Control Field )

  • 数据场(Data Field )

  • CRC场(CRC Filed)

  • 应答场(ACK Field)

  • 帧结尾(End Of Frame)

CAN 2.0总线标准数据帧(Standard Data Frame)结构如下:

  • :标志数据帧和远程帧的起始,它仅由一个“显性”位构成。

  • :由标识符(ID)和远程发送请求(RTR)位组成。

    标识符(Identifier)的长度为11位。这些位以ID-10至ID-0的顺序发送,最低位为ID-0,其中最高7位(ID-10 ~ID-4)必须不是全“隐性”。

RTR位(Remote Transmission Request Bit)在数据帧中,必须是“显性”的,而在远程帧中,RTR位必须是“隐性”的。

  • :由6位组成,包括两个用于将来扩展的保留位和4位数据长度码

  • :由数据帧中被发送的数据组成,它可包括0至8个字节,每个字节包括8位,其中首先发送最高有效位(MSB)。

  • :包括CRC序列、CRC界定符。

参加CRC校验的位场包括帧起始、仲裁场、控制场、数据场(假若存在)在内的无填充位流。CRC序列后随CRC界定符,它只包括一个“隐性”位。

  • :为两位长度,包括应答间隙和应答界定符。

在应答场中发送站送出两个“隐性”位。一个正确地接收到有效报文的接收器,在应答间隙期间,通过传送一个“显性”位将此信息报告给发送器(接收器发送“应答”)。所有接收到匹配CRC序列的站,在应答间隙期间通过把“显性”位写入发送器的“隐性”位来报告此信息。应答界定符是应答场的第二位,并且必须是“隐性”位。因此,应答间隙被两个“隐性”位(CRC界定符和应答界定符)包围。

  • :每个数据帧和远程帧均是由7个“隐性”位组成的标志序列界定的。

CAN 2.0总线扩展数据帧(Extend Data Frame)结构如下:

相比标准数据帧,扩展数据帧的ID为29-bit,控制场的IDE-bit为1:

Tips:两种帧格式的区别通过“控制场”(Control Field)中的“识别符扩展”位(IDE bit)来实现;

Tips:两种帧格式可出现在同一总线上。

4.4 CAN2.0总线的通信报文之标准/扩展远程帧

CAN2.0总线的通信报文的远程帧是用于请求远程CAN节点发送本节点所需的数据,一帧完整的CAN 2.0总线远程帧报文包含如下6个场(Field,也有译作域):

  • 帧起始(Start Of Frame)

  • 仲裁场(Arbitration Field)

  • 控制场(Control Field )

  • CRC场(CRC Filed)

  • 应答场(ACK Field)

  • 帧结尾(End Of Frame)

与数据帧一样,远程帧也有二种--标准远程帧、扩展远程帧;

除了没有数据场(Data field),以及RTR位是隐性(“1”)以外,远程帧与数据帧完全一样。

数据帧和远程帧的不同

  • 远程帧的RTR位为隐性位,没有数据段。

  • 没有数据段的数据帧和远程帧可通过RTR位区别开来。

远程帧没有数据段,数据长度码该如何表示?

  • 远程帧的数据长度码以所请求数据帧的数据长度码表示;

4.5 CAN2.0总线的通信报文之错误帧

CAN2.0总线协议中规定:当节点检测到一个或多个由CAN标准所定义的错误时,就产生一个错误帧。

错误帧由错误标志和错误界定符构成。

错误标志包括主动错误标志和被动错误标志两种:

  • 主动错误标志:6 个位的显性位。

  • 被动错误标志:6 个位的隐性位。

错误界定符

错误界定符由 8 个位的隐性位构成。

4.6 CAN2.0总线的通信报文之过载帧

CAN2.0总线协议中规定:过载帧用于在先行和后续的数据帧(或远程帧)之间提供一附加的延时。

过载帧由过载标志和过载界定符构成。

  • 过载标志

6 个位的显性位。过载标志的构成与主动错误标志的构成相同。

  • 过载界定符

8 个位的隐性位。过载界定符的构成与错误界定符的构成相同。

4.7 CAN2.0总线的通信报文之帧间空间

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

过载帧和错误帧前不能插入帧间隔。

帧间空间的组成:

间歇场 : 3 个位的隐性位。

总线空闲场 : 隐性电平,无长度限制(0 亦可)。

本状态下,可视为总线空闲,要发送的节点可开始访问总线。

暂停发送场发送暂时停止) :8 个位的隐性位。

只在处于被动错误状态的节点刚发送一个消息后的帧间隔中包含。

5. CAN 2.0总线协议的总线仲裁(Bus Arbitration)

总线空闲时,任何节点可以开始发送报文;总线上每条报文都具有唯一的一个11位或29位标识符;报文标识符的值越小,报文具有越高的优先权;

多个节点同时发送时,总线在“仲裁场”进行“逐位仲裁” ;传送高优先级报文的节点赢得仲裁,并继续传输报文;失去仲裁的节点在总线空闲时重新传送。

在总线空闲态,最先开始发送消息的单元获得发送权。多个单元同时开始发送时,各发送单元从仲裁段的第一位开始进行仲裁。连续输出显性电平最多的单元可继续发送。

具有相同 ID 的数据帧和远程帧在总线上竞争时,仲裁段的最后一位(RTR)为显性位的数据帧具有优先权,可继续发送。

标准格式 ID 与具有相同 ID 的远程帧或者扩展格式的数据帧在总线上竞争时,标准格式的 RTR 位为显性位的具有优先权,可继续发送。

6. CAN 2.0总线协议的位流编码(Bit Coding)与位填充(Bit Stuffing)

CAN 2.0总线协议规定位流编码采用“不归零”(NRZ)方法编码。在完整的位时间里,位电平要么为“显性”,要么为“隐性”;

各个位的开头或者结尾都没有附加同步信号。发送单元以与位时序同步的方式开始发送数据。接收单元则根据总线上电平的变化进行同步并进行接收工作。

另外,发送单元和接收单元存在的时钟频率误差及传输路径上的(电缆、驱动器等)相位延迟会引起同步偏差。因此接收单元通过硬件同步或者再同步的方法调整时序进行接收。

为了保证通信过程中时钟有足够的跳边沿以实现总线各节点重新同步;要求CAN控制器采取“位填充”(Bit Stuffing):

当发送器检测到位流里有5个连续相同值的位,便会自动在位流里插入一补充位,接收器会自动删除这个补充位。

最多经过5个位时间,各节点可以重同步;

能够通过总线上的错误标志(Error Flag  6个连续相同的位)反映发送错误。

在固定的位场中不使用位填充,只对在发送数据帧和远程帧时,SOF~CRC 场间的数据进行位填充。

下图为一个具体的位填充实现结果,在发送系列的BIT8和BIT16分别自动加入了一个隐性位(逻辑"1"):

7. CAN 2.0总线协议的错误检测机制

为了保证通信的正常,CAN 2.0 总线协议总线中各节点需要采取以下措施进行错误检测:

  • 监视(对发送位的电平与被监控的总线电平进行比较)

  • 循环冗余检查

  • 位填充

  • 报文格式检查

CAN 2.0 总线协议的错误检测机制具有以下属性:

  • 检测到所有的全局错误

  • 检测到发送器所有的局部错误

  • 可以检测到报文里多达5个任意分布的错误

  • 检测到报文里长度低于15-bit的突发性错误

  • 检测到报文里任一奇数个错误

  • 对于没有被检测到的错误报文,其剩余的错误可能性概率低于:报文错误率4.7 x 10-11

7.1 CAN 2.0 总线节点的错误类型

CAN 2.0 总线协议定义参与通信的CAN节点错误类型如下:

  • 位错误(Bit  Error)

发送的位值和总线监视的位值不相符合时,检测到一个位错误(除仲裁场、应答场外);

  • 填充错误(Stuff Error)

    如果在使用位填充编码的位流中,出现了第六个连续相同的位电平,将检测到一个位填充错误;

  • 形式错误 (Form Error)

   当一个固定形式的位场含有一个或多个非法位时,将检测到一个形式错误;

  • 应答错误 (Acknowledgment Error)

    在应答间隙(ACK SLOT)所监视的位不为“显性”,则会检测到一个应答错误;

  • CRC 错误(CRC Error)

    如果接收器的CRC结果和发送器的CRC结果不同,将检测到一个CRC错误。

7.2 CAN 2.0 总线节点的故障界定

CAN 2.0 总线节点使用两种错误计数器进行故障界定:

  • 发送错误计数(TEC)

  • 接收错误计数(REC)

CAN 2.0 总线协议规定了12条错误计数规则:

  • 节点发送时产生错误,将导致TEC加8;

  • 节点成功发送1帧报文后,TEC将减1 ,直到0;

  • 节点接收时检测到错误,将导致REC加8;

  • 节点成功接收1帧报文后,REC将减1,直到0;

  • 。。。

7.3 CAN 2.0 总线节点的状态

根据以上错误检测机制和故障界定方法,CAN 2.0总线节点存在以下三种状态:

  • 错误主动(Error Active):“错误主动”的节点可以正常地参与总线通讯,并在错误被检测到时发出主动错误标志。

  • 错误被动(Error Passive):“错误被动”的节点不允许发送主动错误标志。“错误被动”的单元参与总线通讯,在错误被检测到时只发出被动错误标志。

  • 总线关闭(Bus Off):“总线关闭”的单元不允许在总线上有任何的影响 (比如,关闭输出驱动器)。

Tips:一个特例:如果CAN总线上只有一个节点,该节点发送数据帧后得不到响应(ACK),其发送计数器TEC最大只能计到128,即该节点只能进入错误被动状态,而不会进入总线关闭状态;

CAN通信节点的状态分为暂时错误(Error active和Error Passive)和永久性故障(Bus Off);

永久性故障节点自动脱离总线,防止网络定。

处于暂时错误(Error active和Error Passive)状态的CAN 2.0总线节点,其状态可以根据其发送错误计数器(TEC)和接收错误计数器(REC)值的变化,自动切换,而进入永久性故障(Bus Off))状态的节点,必须进入重新初始化才能恢复:

Tips:Bus Off恢复需要满足于以下两个条件:

①在bus off发生后,总线上已经检测到了128次11个连续的隐性位(逻辑"1");

②用户程序请求恢复,通常MCU中的CAN控制器都可以支持自动恢复和手动恢复两种方式。CAN总线的bus off恢复需要满足整车的网络管理规范。

8. CAN 2.0总线协议的位定时与同步

8.1 CAN 2.0 总线协议的位时间定义与采用

CAN 2.0 总线协议定义一个标称的位时间分为:同步段、传播段、相位缓冲段1、相位缓冲段2。

同步段用于同步各节点,正常情况下跳变沿落在此段内;

传播段用于补偿网络内的传输延时;

采样点时刻读取的电平代表这个位的电平;

CAN总线的时间份额通常由振荡器周期分频而得

    各时间段长度为:同步段1份额,传播段1~8份额,相位缓冲段1,1~8份额,相位缓冲段2,Max(相位缓冲段1,信息处理时间),其中信息处理时间<=2份额。一个位的总时间份额数为8~25,可以编程灵活配置。

8.2 CAN 2.0 总线协议的同步机制

CAN 2.0 总线协议定义位同步的规则如下:

    (1)在总线空闲时,只要检测到一个隐性到显性的边沿,就执行一次硬同步(以该边沿作为同步段)

    (2)在总线不空闲时,若边沿落在同步段以外,则按其与同步段之差执行再同步:

  • 再同步情况①:边沿落在同步段以后,则把所差份额加到相位缓冲段1

  • 再同步情况② :边沿落在同步段以前,则从相位缓冲段2减去所差份额

    再同步所加减的份额有个上限,该上限可取值1~4个时间份额,但不可大于相位缓冲段1。

      (3)因为有位填充规则,所以可用于再同步的边沿在一定时间内总会出现。最大可能时间间隔是29个位。

Tips:一个位时间内只能执行一次同步,且一般只把隐性到显性的边沿用于同步。

总结

本文详细介绍了BOSCH的CAN 2.0总线协议,主要包括CAN总线主要特性、物理层电气特性、帧格式与帧类型、总线仲裁机制、位流编码、位填充、错误检测机制、错误类型、故障界定与节点状态以及位定时与同步等。

除了CAN 2.0外,BOSCH还定义了一种与之兼容的CAN-FD总线协议--能够提供更高的速率(数据场通信速率可达8/10Mbit/s)和更大的报文帧有效载荷(支持最大64字节),以满足汽车电子日益发展对ECU间高速通信的需求,我将在下篇文章中给大家介绍,敬请关注!

以上就是今天给大家分享的内容,希望对大家有所帮助~!


原创写作不易, 如果大家觉得本文对你的工作和学习有帮助,也欢迎大家赞赏鼓励或动动手指点击文章底部的“好看”、转发分享到朋友圈、微信和QQ技术交流群,让更多的小伙伴能够从我的文章中收益!----我将坚持写作,给大家带来更多精彩的原创文章。

Tips

本公众号已开通关键词回复功能,请在公众号主页回复如下关键词以获取更多信息和精彩文章:

  • 关于作者,请回复关键词“作者简介”;

  • 联系作者,请回复关键词“联系作者”;

  • 获取高清PDF版本公众号文章,请回复关键词“获取文章”;

  • 获取专业及时的技术支持服务,请回复关键词“专业服务”;

  • 下载2017~2018年度原创技术文章集合高清PDF,请回复关键词“文章全集”;

  • CodeWarrior IDE license购买及安装使用问题咨询,请回复关键词“CW License”;

  • 汽车以太网转工业以太网转换器购买,请回复关键词“以太网转换器购买”;

  • 获取最新最全的公众号原创技术分享文章目录,请回复关键词“文章目录”;

   郑重声明:本公众号所有原创技术文章免费阅读,文中所有观点/结论均为个人观点,不代表任何公司官方观点意见;所有demo代码/程序,仅作参考学习,不保证质量,若用于商业用途,责任自负;所有本公众号文章,版权归本人所有知识产权,一切未经本人同意的转载均属违法,盗版必究~!

如果你喜欢本公众号的文章,请点击文章最开始的公众号关注或,你也可以在微信-->-->输入""搜索-->点击关注。若对本文观点有任何意见和建议也欢迎留言指出。

Enwei Hu(胡恩伟)

2019年7月27日于山城·重庆.

标签: 1040电阻

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台