CN103973406B - 一种控制器局域网总线的提速方法 - Google Patents
一种控制器局域网总线的提速方法 Download PDFInfo
- Publication number
- CN103973406B CN103973406B CN201410204407.6A CN201410204407A CN103973406B CN 103973406 B CN103973406 B CN 103973406B CN 201410204407 A CN201410204407 A CN 201410204407A CN 103973406 B CN103973406 B CN 103973406B
- Authority
- CN
- China
- Prior art keywords
- bit
- data
- value
- frame
- bits
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Abstract
本发明公开了一种控制器局域网总线的提速方法,在原CAN2.0协议数据帧结构中的保留比特标记新的CAN HS数据帧,同时将标准比特划分为N个等份,以更高比特速率进行传输;而N1个CAN HS比特的前L1≥1个CAN HS比特和后L2≥0个CAN HS比特用于传输CAN HS数据(称为CAN HS数据比特),因此每单位CAN2.0比特可最大携带L1+L2个CAN HS数据比特,从而提高了传输效率。并且第1个CAN HS比特用于进行同步/再同步触发,其次在采样点附近的N1≥2个CANHS比特传输相同的值供CAN2.0控制器采样取值,保证CAN2.0控制器不会出现采样错误,最后,校验字段的填充区CAN HS比特取值依据CAN2.0协议计算校验序列并填充,这样CAN2.0控制器也不会出现校验错误计数。
Description
技术领域
本发明属于控制器局域网技术领域,更为具体地讲,涉及一种控制器局域网总线的提速方法。
背景技术
控制器局域网(Controller Area Network,简称CAN)总线是一种现场控制总线,网络中的各节点对通信数据进行编码而不是对站地址编码,且对总线访问优先权通过数据报文优先权(ID)的逐位仲裁方式竞争进行,可使不同的节点同时接收到相同的数据。这些特点使得CAN总线构成的网络各节点之间的数据通信实时性强,并且容易构成冗余结构,提高系统的可靠性和系统的灵活性,因而被广泛用于需要分布式和实时控制的场合,如汽车传感与控制、医疗器械仪器互联等。
但是当前CAN总线2.0版本的最高传输速率为1Mbit/s,而实际使用速率最高为500kbit/s。随着电子控制单元(Electronic Control Unit,简称ECU)的大量增加,使总线负载率急剧增大以致造成网络拥堵,影响信息传输的可靠性和实时性。研究表明,CAN总线负载率在30%左右时网络系统的性能相对较好,否则会增大报文延迟、降低系统的扩展性,尤其对于实时性要求较高的安全系统,高负载率甚至可能影响汽车行车安全,因此当前CAN总线2.0已不能满足日益增长的汽车网络需求。
为解决带宽与可靠性的需求,人们提出了使用新型总线协议,如FlexRay总线、MOST总线等来替代CAN总线,但这意味着需要重新开发控制器软硬件、重新设计车载网络系统等,从而增加汽车制造商的开发成本,降低其市场竞争力,因此在目前车载网络系统的基础上对CAN总线进行改进显得尤其迫切。
Bosch公司于2011发布的CAN替代总线--CAN FD,通过利用CAN总线的保留位进行判断以及区分不同的帧格式,具有与CAN总线相似的控制器接口,这种相似性使ECU供应商不需要对ECU的软件部分做大规模修改,降低了开发难度和成本。CAN FD的高速率传输主要体现在通过双速率传输机制,即在仲裁期仍沿用CAN2.0协议的标准速率(Nominal BitRate)进行传输,但在数据字段启用第二速率(Data Bit Rate,比Nominal Bit Rate高)进行传输,从而一方面可以更高速率传送,另一方面在数据字段能容纳更长的数据提高有效吞吐率。
但是CAN FD数据帧中,包括DLC字段、数据字段、校验字段的数据都采用第二速率传送,因而CAN2.0控制器仅能通过仲裁期的控制字知道不是其能处理的数据帧,但仍会进行比特同步、比特填充规则、CRC校验的检查。因而当CAN2.0控制器和CAN FD控制器共处于同一网络时,CAN2.0控制器会因CANFD帧增加不必要的错误计数甚至进入总线关闭状态。因此CAN2.0控制器是不能和CAN FD控制器直接共存的,这也正是CAN FD规范所指出的:“CANFD控制器仅当使用CAN2.0标准帧时能才能和CAN2.0控制器互通;CAN FD协议升级只能渐进进行,比如通过软件下载的方式实施,且实施时不支持CAN FD的控制器必须挂起(StandBy)”。
但实际应用中,有许多场合需要在不停用CAN2.0控制器的情况下引入兼容CAN2.0协议的高速CAN机制,如某些基于CAN的监控场合,仅需要升级“上位机”CAN节点控制器(数量较少)即可在已经存在大量CAN2.0控制器的网络中加入新型CAN节点,从而极大地降低成本同时加快部署。
发明内容
本发明的目的在于克服现有高速控制器局域网总线的不足,提供一种控制器局域网总线的提速方法,以兼容现有的CAN2.0协议并在高速传输模式下允许与CAN2.0控制器共存一个网络中而不会增加CAN2.0控制器的错误计数。
为实现上述发明目的,本发明控制器局域网总线的提速方法,其特征在于,包括以下步骤:
CAN控制器在发送远程帧、错误帧、超载帧时依照CAN2.0协议的规范执行;当数据帧携带数据的长度小于等于8个字节时,CAN控制器以CAN2.0模式工作,即按照CAN2.0协议规范发送数据帧,而当数据帧携带数据的长度大于8个字节时,CAN控制器以CAN HS模式工作即发送CAN HS数据帧;
其中,CAN HS数据帧中除数据期的数据字段和校验字段外,其他帧格式与CAN2.0数据帧格式相同,并做如下修改:
(1)、将CAN HS数据帧中的保留位作为CAN HS标识位,并通过置为“隐性”表示CANHS数据帧;
(2)、将CAN HS数据帧中数据期与CAN2.0数据帧数据期的数据字段和校验字段中每个标准比特的对应位置均划分为N个等份,每个等份称为一个CAN HS比特;对于每个标准比特对应位置划分为四个部分即跳变沿位、数据段1、填充区、数据段2:第1个CAN HS比特构成跳变沿位,第1个CAN HS比特称为跳变沿比特,紧接着L1≥1个CAN HS比特构成数据段1,数据段1中的CAN HS比特为CANHS数据比特,再紧接着N1≥2个CAN HS比特构成填充区,填充区中的CAN HS比特为填充区比特,最后为L2≥0个CAN HS比特构成数据段2,数据段2中的CAN HS比特为CAN HS数据比特;
L1、N1、L2的取值满足(1+L1+N12)/N与差值最小,其中,N=1+L1+N1+L2,Tprop,为CAN2.0数据帧数据期的数据字段和校验字段中每个标准比特的传播段(PROP_SEG)、相段1(PHASE_SEG1)、相段2(PHASE_SEG2)相对于同步段(SYNC_REG)的时长倍数;
(3)、填充规则
3.1)、第1个跳变沿比特S的取值与数据长度字段即DLC的最后1位取值相异,后续每个跳变沿比特S取值与上一个标准比特对应位置最后一个CAN HS比特相异值;
3.2)、填充区的所有CAN HS比特的值相同,其中,数据字段的填充区CAN HS比特取值与之前所有填充区的取值满足CAN2.0协议填充规则,即连续5次相同取值后取前一个填充区取值的相异值,校验字段的填充区CAN HS比特取值根据数据字段的填充区CAN HS比特取值按照CAN2.0协议计算出校验序列并进行填充;
3.3)、数据段1、2的CAN HS比特用数据进行填充。
本发明的发明目的是这样实现的:
本发明控制器局域网总线的提速方法,数据帧携带数据的长度大于8个字节时,工作在CAN HS模式,利用原CAN2.0协议数据帧结构中的保留比特,由原来的“显性”改为“隐性”来标记新的CAN HS数据帧,同时将原CAN2.0协议数据帧数据传送部分包括CAN2.0帧中的数据字段和CRC校验字段即数据期的标准比特划分为N个等份,每个等份称为CAN HS比特,这N个CAN HS比特称为HS组,即更高的比特速率进行传输。而N1个CAN HS比特的前L1≥1个CAN HS比特和后L2≥0个CAN HS比特用于传输CAN HS数据(称为CAN HS数据比特),因此每单位CAN2.0比特可最大携带L1+L2个CAN HS数据比特,从而提高了传输效率。但同时保证为CAN2.0控制器提供可预知的数据流进行接收的填充规则检查和CRC校验检查,使得CAN2.0控制器不会新增错误计数,在每个CAN2.0标准比特中划分出的第1个CAN HS比特用于进行同步/再同步触发以确保CAN2.0控制器的采样点相位不变,其次在采样点附近的N1≥2个CAN HS比特传输相同的值供CAN2.0控制器采样取值,保证CAN2.0控制器不会出现采样错误,最后,数据字段填充区CAN HS比特取值按照CAN2.0协议填充、校验字段的填充区CAN HS比特取值依据CAN2.0协议计算校验序列并填充,这样CAN2.0控制器也不会出现校验错误计数。这样在高速传输模式下允许与CAN2.0控制器共存一个网络中而不会增加CAN2.0控制器的校验错误计数。
附图说明
图1是CAN总线网络拓扑示意图;
图2是CAN总线控制器逻辑结构图;
图3是CAN2.0、CAN FD及CAN HS数据帧结构对照示意图;
图4是CAN HS数据帧的双速率转换过程示意图;
图5是CAN2.0的比特和CAN HS的比特细微特征的对照示意图;
图6是CAN2.0、CAN HS、CAN FD数据帧中DLC编码对照;
图7是典型CAN总线网络的节点发送和接收流程示意图。
具体实施方式
下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
在本发明中,同一总线局域网中可以同时存在CAN2.0控制器和采用本发明的CAN控制器,称为CAN HS控制器,这些控制器分别连接节点和CAN收发器,CAN收发器是连接CAN控制器和CAN总线的中介,它完成CAN总线电平到控制器电平的相互转换。处于同一总线局域网中的CAN控制器都支持CAN2.0协议的所有功能,它们用相同比特速率R进行传输,并称该速率为标准速率。CAN HS和CAN2.0控制器均能发送数据帧、远程帧、错误帧、超载帧等。
在本发明中,CAN HS控制器在发送数据帧时可以工作于两种模式:CAN2.0模式和CAN HS模式,在发送远程帧、错误帧、超载帧时的格式速率等依照CAN2.0协议的规范执行。当数据帧携带数据的长度小于等于8个字节时,CANHS控制器以CAN2.0模式工作,即按照CAN2.0协议规范发送数据帧,而当数据帧携带数据的长度大于8个字节时,CAN HS控制器以CAN HS模式工作,即发送CAN HS数据帧。
CAN HS数据帧以CAN2.0数据帧格式为基础进行改进而成,因此结构基本相同,在本实施例中,也分为基本数据帧和扩展数据帧两种。
CAN2.0基本数据帧包括1位开始位(SOF)、11位基本标识字段(BID)、1位远程传输请求(RTR,“显性”)、1位标识扩展标志(IDE,“显性”)、1位保留位(r0为“显性”)、4位数据长度字段(DLC)、L位CAN2.0位宽的数据字段(Data)、15位CAN2.0位宽的CRC校验字段、1位CRC校验界定符、2位宽的应答区、7位帧结束符(EOF,全部“隐性”);CAN2.0扩展数据帧包括1位开始位(SOF)、11位基本标识字段(BID)、1位远程传输请求替换位(SRR,“隐性”)、1位标识扩展标志(IDE,“隐性”)、18位扩展标识(EID)、1位远程传输请求(RTR,“显性”)、2位保留位(r0、r1,均为“显性”)、4位数据长度字段(DLC)、L位CAN2.0位宽的数据字段(Data)、15位CAN2.0位宽的CRC校验字段、1位CRC校验界定符、2位宽的应答区、7位帧结束符(EOF,全部“隐性”)。
在本实施例中,CAN HS基本数据帧是将CAN2.0基本数据帧中的保留位r0改为CANHS标识位(HS),并通过置为“隐性”表示CAN HS基本数据帧;CANHS扩展数据帧将CAN2.0扩展数据帧中的保留位r0、r1中一位或r0、r1同时改为CAN HS标识位(HS),并用“隐性”值结合IDE位的“隐性”值来表示CAN HS扩展数据帧。
这样带CAN HS标识位的基本数据帧包括1位开始位(SOF)、11位基本标识字段(BID)、1位远程传输请求(RTR,“显性”)、1位标识扩展标志(IDE,“显性”)、1位双速率传输标识(HS,“隐性”)、4位数据长度字段(DLC)、64≤L≤76位CAN2.0位宽的数据字段(DATA)、15位CAN2.0位宽的CRC校验字段、1位CRC校验界定符、2位宽的应答区、7位帧结束符(EOF,全部“隐性”);扩展数据帧,包括1位开始位(SOF)、11位基本标识字段(BID)、1位远程传输请求替换位(SRR,“隐性”)、1位标识扩展标志(IDE,“隐性”)、18位扩展标识(EID)、1位远程传输请求(RTR,“显性”)、1位双速率传输标识(HS,“隐性”)、2位保留位(r0、r1中一位或r0、r1同时,“显性”)、4位数据长度字段(DLC)、64≤L≤76位CAN2.0位宽的数据字段(DATA)、15位CAN2.0位宽的CRC校验字段、1位CRC校验界定符、2位宽的应答区、7位帧结束符(EOF,全部“隐性”)。其中,DATA和CRC校验合称数据期,其前后均为仲裁期。仲裁期和数据期两个交替出现的阶段,在仲裁期的所有比特以标准速率R发送,在数据期以N倍于R的速率发送,称数据速率。
在CAN HS模式下,利用原CAN2.0协议帧结构中的保留比特(由原来的“显性”改为“隐性”)来标记新的CAN HS数据帧,同时将原CAN2.0数据帧传送部分(包括CAN2.0帧中的数据字段和CRC校验字段)的比特划分为N个等份,每个等份称为CAN HS比特,N个CAN HS比特称为HS组,即更高的比特速率进行传输,但同时保证为CAN2.0控制器提供可预知的数据流进行接收的填充规则检查和CRC校验检查,使得CAN2.0控制器不会新增错误计数。在每个CAN2.0标准比特中划分出的第1个CAN HS比特即跳变沿比特用于进行同步/再同步触发以确保CAN2.0控制器的采样点相位不变,其次在采样点附近的N1≥2个CAN HS比特传输相同的值供CAN2.0控制器采样取值,而N1个CAN HS比特的前L1≥1个CAN HS比特和后L2≥0个CANHS比特用于传输CAN HS数据(称为CAN HS数据比特),因此每单位CAN2.0比特可最大携带L1+L2个CAN HS数据比特,从而提高了传输效率。
在本实施例中,采用本发明的CAN HS控制器发送的帧类似包含了CAN2.0协议的数据帧、远程帧、错误帧、超载帧,可以工作在CAN2.0协议模式或者CAN HS模式。在CAN2.0模式下所有帧结构和处理方法与CAN2.0协议规定的一致,而CAN HS模式下,除数据帧外其他帧的功能和结构与CAN2.0帧相同。所述比特填充方法与CAN2.0协议,发送者在每5个连续相同取值(如“显性”/“隐性”)比特后发送1位与前5位比特值取值相异的比特(即“隐性”/“显性”)。当DLC的四个比特C3C2C1C0取值为0000~1000时,CAN HS控制器运行在CAN2.0模式,即使用CAN2.0帧格式;当C3C2C1C0取值为1001~1111时,CAN HS控制器运行在CAN HS模式,即使用CAN HS数据帧格式。在CAN2.0模式下帧携带K=0~8字节的数据;在CAN HS模式下,K=9~15,分别表示8*2(K-8)字节,或者单位CAN2.0数据比特传输2(K-8)个CAN HS比特。当K=0~8时,CRC校验字段选用CRC-15进行校验,否则选用CRC-17或者CRC-21进行校验。
在本实施例中,根据DLC取值对应的CAN HS总数据比特数M选择与CAN2.0相同的CRC校验式,如当M≤64时采用CAN2.0的CRC-15校验式,当64≤M≤128时选用CRC-17,而当M>128时选用CRC-21,以提供汉明距D≥6的纠错保护。其中CRC-15为0xC599,即:
“(x15+x14+x10+x8+x7+x4+x3+1)=(x+1)(x7+x3+1)(x7+x3+x2+x+1)”;
而CRC-17和CRC-21可分别选用0x3685B和0x302899,即:
“(x17+x16+x14+x13+x11+x6+x4+x3+x+1)=(x+1)(x16+x13+x10+x9+x8+x7+x6+x3+1)”和“(x21+x20+x13+x11+x7+x4+x3+1)=(x+1)(x10+x3+1)(x10+x3+x2+x+1)”。
在CAN HS模式下的数据期比特速率是仲裁期比特速率的N≥max(2K-8,4)倍,即将原CAN2.0帧的数据字段和校验区的标准比特划分成N个CAN HS比特。N个CAN HS比特被分成四个部分,依次分别为1个CAN HS比特、L1≥1个CANHS比特的数据字段1、5≥N1≥2个CAN HS比特的填充区和L2≥0个CAN HS比特的数据字段2。其中,第一个为跳变沿比特S的取值与前一个CAN2.0比特的最后一个CAN HS比特相异;填充区的所有CAN HS比特取相同值,且与之前所有CAN2.0比特填充区的取值满足CAN2.0填充规则,即连续5次相同取值后本次填充取前一个CAN2.0比特填充区取值的相异值。为了进行比特同步和采样,CAN2.0、CAN FD和CANHS比特均被分为四段,依次为同步段(SYNC_REG)、传播段(PROP_SEG)、相段1(PHASE_SEG1)、相段2(PHASE_SEG2),它们所占的时间分别为为整数倍tq值,tq是最小时间单位tm的整数倍,tm与实现有关。于是,一个CAN2.0比特的时间为:比特采样点在相段1和相段2之间,因而采样点相对比特起始位置占比特时间比率为:
在CAN HS模式下,两个数据字段均用于传送CAN HS数据比特,且1个CAN2.0比特中最多可以传输L1+L2≥2K-8个CAN HS数据比特。L1、N1、L2的取值应尽量使得N1个CAN HS比特的中心部分尽量对准CAN2.0比特的采样点,即CAN2.0比特中
或自CAN2.0比特开始位置到CAN2.0比特采样点的时间所占CAN2.0比特的比率为:
根据这样的传输规则,单位CAN2.0比特可以同时保证CAN2.0控制器不增加错误计数。
CAN HS模式下N的选择可以根据DLC的取值变化,也可以对所有DLC值取相同的值。
CAN HS模式下,原CAN2.0帧校验字段的数据字段1只有L1-2个比特用于CAN HS数据比特传输,而剩下的2个比特为填充区的辅助填充比特,以便能正确进行CAN2.0的CRC-15序列填充而不破坏CAN的填充规则。
CAN HS模式下,当DLC的取值K满足2K-8≤L1时,在数据字段1的前2K-8个比特用于传输CAN HS数据比特,剩下的L1-2K-8和数据字段2的L2个CAN HS比特传输任意值;当2K-8>L1时,则数据字段1的所有L1个比特全部用于传输CANHS数据比特,而数据字段2第三区段的前2K -8-L1个比特用于传输CAN HS数据比特,剩余的L2-2K-8+L1个比特传输任意值。
填充区和跳变沿位均是填充比特,其中填充区为全显性或全隐性比特,而跳变沿则必须考虑特定位置跳变。因而设定规则依次如下:
①跳变沿比特取值规则:第1个跳变沿比特S的取值与数据长度字段DLC的最后1位取值相异;后续每个跳变沿比特S取值与上一个标准比特对应位置最后一个CAN HS比特相异值即前一个HS组的最后一个CAN HS比特相异值,以保证CAN2.0标准比特的同步段出现一个跳变沿,确保CAN2.0控制器重同步的触发时刻固定,从而保证CAN2.0控制器比特采样相位基本固定;
②数据段1的填充规则:用数据依次填充在L1个比特中,并适用CAN协议本身的填充规则(即5个连续相同值后填充一个相异值)进行填充;
③填充区的填充规则
a1、规则1:数据字段的填充区CAN HS比特取值与填充区前面的最后一个CAN HS比特相同,如果填充区CAN HS比特与之前的即与数据段1紧邻的CANHS比特进行组合,会出现5个连续相同值,则改为相异值填充;规则2:当数据字段的填充区CAN HS比特取值与之前所有填充区的取值满足CAN2.0协议填充规则,即连续5次相同取值后则不再用规则1进行取值,而取前一个填充区取值的相异值,此时,如果填充区CAN HS比特与之前的即与数据段1紧邻的CAN HS比特进行组合出现5个连续相同值,则将数据段1最后两位CAN HS比特后移至数据段2,并填入两位与前后取值相异的值,这样进一步保证了这样进一步保证了CAN HS比特满足CAN协议填充规则;
a2、校验字段的填充区CAN HS比特取值根据数据字段的填充区CAN HS比特取值按照CAN2.0协议计算出校验序列并进行填充,这样保证了CAN2.0控制器不会产生CRC校验错误;其中将数据段1最后两位CAN HS比特后移至数据段2,并填入两位与前后取值即数据段1填入的最后一个数据与填充区填入的第一个CAN HS比特取值相异的值,这样进一步保证了CAN HS比特满足CAN协议填充规则;
④数据段2的填充规则:依据用数据依次填充在L2个比特中,并适用CAN协议本身的填充规则(即5个连续相同值后填充一个相异值)进行填充;
需要说明的是,数据字段填充区的填充中,所述的规则1中的数据字段的填充区CAN HS比特取值与填充区前面的最后一个CAN HS比特相同也可以该为相异,数据字段的填充区CAN HS比特取值与前一个填充区的填充值相异。
在本发明中,CAN控制器配备必要的寄存器以支持本发明的运行,同时为了兼容CAN2.0控制器还必须包含CAN2.0协议相关的配置寄存器即CAN HS控制器必须同时支持CAN2.0协议和CAN HS协议即本发明。
在上述技术方案下,同一CAN总线网络中,CAN节点可以是仅支持CAN2.0协议的节点,也可以是既支持CAN2.0协议又支持CAN HS协议的节点;支持CAN HS协议的节点可以根据配置工作在CAN2.0协议模式,也可以工作在CANHS模式,但当帧中的数据比特数大于8个字节或者等效的64个比特时,则必须以CAN HS模式工作。
本发明具有如下效果:
1、在兼容CAN2.0协议的基础上允许以高于CAN2.0极限速率1Mbps的速率进行数据传输,保留的原CAN2.0协议的多主性、分布式、实时传输能力,同时每个帧支持的数据长度更大,而所需时间为原CAN2.0帧长为8字节(即64比特)时的帧持续时间,因而具有更高的吞吐率;
2、通过本发明设计的帧结构设计以保证CAN2.0控制器在接收CAN HS数据帧时不会出现定时漂移(即比特同步相位不受影响),且能采样时刻能采样到确知的合法CAN数据比特和对应的CRC校验比特序列,即保证不会出现CRC错误,从而CAN2.0控制器不会新增错误计数,于是CAN2.0控制器和CAN HS控制器能在同一CAN网络中共存。这样当CAN网络的网关或者“上位机”的CAN控制器支持CAN HS协议时,即可根据需要添加CAN HS节点实现兼容、共存式的快速升级和部署。
本发明提出的CAN HS协议和传输方法相比CAN2.0协议可以支持更高的速率,即具备CAN FD的优势,同时还克服了CAN FD不能与CAN2.0共存的问题。
图1是CAN总线网络拓扑示意图。
如图1所示,控制器局域网(CAN)有多个控制节点,通过CAN总线互联在一起,每个CAN节点通过CAN控制器向CAN总线发送数据或接收数据,而CAN控制器是通过CAN收发器连接到CAN总线。CAN收发器负责将CAN控制器的数据(通过“显性”或者“隐性”电平代表0或1)转换为CAN总线电平(差分信号网络),或者将CAN总线的信号电平转换为CAN控制器能处理的信号电平;而CAN控制器是节点到CAN总线的中介,它负责根据节点的需要在总线空闲时将数据发送到总线上,且在发送过程中负责总线接入权的仲裁,如果竞争失败则退出发送并转入接收模式;处于接收模式的CAN控制器对比特流一方面进行接收,一方面进行填充规则、格式以及CRC校验检查,如果出现了错误则进行错误计数更新,其中具体的检查规则与现有的CAN2.0或者CAN FD协议一致。
在本发明中,CAN2.0控制器和CAN HS控制器可以共存在同一CAN网络中,CAN HS控制器如果集成了CAN FD协议也可以和CAN FD控制共存同一CAN网络中。下面仅以CAN HS和CAN2.0控制器共存方案进行说明,但并不限制CAN控制器集成三种协议后的共存方案的实施。
CAN HS控制器的基本原理框图和CAN2.0控制器,甚至CAN FD控制器基本相同,如图2所示。CAN控制器包含:发送逻辑、比特定时逻辑、发送FIFO、5种错误检测逻辑、消息滤波、状态机、MCU接口逻辑、时钟发生器等,各部分的功能如下:
控制寄存器Control Registers:用于对CAN的工作模式等进行配置,包括定时控制、速率参数、滤波掩码等配置;
错误计数器Error Registers:含发送错误计数器(TEC)和接收错误计算器(REC),用于在状态机的控制下依据5种错误进行错误技术。5种错误分别为:比特错误(BE)、格式错误(FE)、CRC错误(CE)、应答错误(AE)、填充错误(SE),具体的错误判别标准按照已有的CAN2.0协议规定进行。
状态机State Machine是CAN控制器的核心部分,包含了所有协议流程的状态及状态控制逻辑。
时钟发生器的功能是从系统基本时钟产生系统各个功能部分所需要的时钟源,如发送的位时序逻辑以及接收部分的硬同步和重同步模块和比特采样模块等的时钟。
位流处理器包括发送位流处理和接收位流处理。发送位流处理主要完成数据比特发送、比特填充、CRC计算和发送等,同时在接收位流处理的协作下完成发送数据时的总线仲裁、比特错误检测、应答检测等;而接收位流处理除了在发送数据时进行协助外,在控制器处于接收模式时,进行比特填充规则检查、填充比特删除、CRC校验、验收滤波、错误检测和标定、数据应答等功能。
下面结合附图和具体实施方式对本发明方法进行详细说明。
支持CAN HS协议的控制器可以同时支持CAN2.0协议和CAN FD协议,后二者可按已有协议方法进行实施,除非特别说明,下面仅针对本发明的CAN HS协议实现进行说明。
如图3、4、5所示,CAN HS协议的帧结构基本与CAN2.0相同,也包括基本数据帧和扩展数据帧。其中基本数据帧将CAN2.0的基本数据帧种的保留位r0定义为HS字段,当HS为“显性”时意味着该帧为CAN2.0基本数据帧,否则为CANHS基本数据帧;相应地,CAN HS扩展数据帧基于CAN2.0扩展,由于CAN2.0帧有两个保留位r0和r1,因此在实施时可以通过三种方式实现,即(r0,r1)=(显性,隐性)、(隐性,显性)或者(隐性,隐性)。
为了与CAN2.0协议共存,当CAN帧的单帧数据长度不大于8字节时,自动适用CAN2.0帧,而当单帧数据长度大于8字节时,DLC取值为0b1001~0b1100,而对应数据长度为8*2(DLC-8)字节,取值0b1101~0b1110为保留值,0b1111用于表示尽可能使用最大长度,数据长度可能不再是整数倍字节长度。上述DLC编码如图6所示,其中也给出了CAN2.0和CANFD的相应编码对照。值得注意的是,图6的CAN HS编码方式特别是DLC≥8的编码仅是一种实现,不排除其他实现方式,而且具体实现中当DLC取值为0b1001~0b1100时,数据长度也可以不是整数倍字节长度,如当把CRC-15序列扩展出的CAN HS比特用上的话——后面将进一步说明。但当CAN帧单帧数据长度大于8时,CAN HS数据帧的数据字段所占的时间刚好与CAN2.0帧中当DLC=8时的数据字段所占时间相同——这与CANFD协议类似。
如图5所示,对于CAN2.0帧而言每个比特都被分为四个部分构成,依次为同步段(SYNC_REG)、传播段(PROP_SEG)、相段1(PHASE_SEG1)、相段2(PHASE_SEG2),它们所占的时间分别为的整数值,单位为tq,tq是整数倍的最小时间单位tm,tm与实现有关,且Tsyn≡1。于是,一个CAN2.0比特的时间为:
因比特采样点在相段1和相段2之间,因而采样点相对比特起始位置占比特时间比率为:
为了提高传输速率,本发明的基本思想是将CAN2.0的数据比特划分为N=(1+L1+N1+L2)≥4个CAN HS比特,依次分为四个部分:第一个比特对应与CAN2.0协议中比特的SYNC_REG,第二部分为L1比特用于传输CAN HS的数据比特,称CAN HS数据比特,第三部分为N1≤4个CAN HS比特为填充区,用于传输为CAN2.0控制器准备的填充数据值(SV),它们取值相同,即均为“显性”或“隐性”,第四部分为L2比特也用于传输CAN HS数据比特。因此,在一个CAN2.0比特中最多可以传输L1+L2个CAN HS数据比特,且为了将N1个CAN HS比特的中心部分尽量对准CAN2.0比特的采样点。即,CAN2.0比特在其采样点前后的两部分比例为:
相应地,L1、N1、L2的取值应尽量满足:
或者,当的单位与L1、N1、L2的单位一致时:
则L1、N1、L2的取值应尽量满足:
为了维持总线上出现CAN HS数据帧时CAN2.0控制器的同步不出现错误,根据CAN2.0同步机制,本发明要求CAN HS发送N个CAN HS比特组时,第一个CAN HS比特始终取上一个CAN HS比特组中最后一个CAN HS比特的相异值,以便CAN2.0控制器在标准比特的SYNC_REG中检测到跳,从而不受该比特中的其他CAN HS跳变的影响(CAN2.0规定一个比特中最多只有一次同步触发),从而保证CAN2.0的采样点在填充区SV中点附近。
根据图6的编码,为了承载相应的CAN HS数据比特,同时考虑前述的填充比特需求,当DLC取值为DLC=9~12时,相应的CAN2.0比特划份数N的取值如表1所示,表1中,CAN2.0比特分段参数取值为1:3:4:4,CAN2.0比特在采样点前后段的比例为2:1:
表1
DLC取值 | L1+L2 | S | L1 | N1 | L2 | N取值 | (1+L1+N1/2):(N1/2+L2) |
1 | 2 | 1 | 2 | 2 | 1 | 6 | 2.000 |
2 | 4 | 1 | 3 | 4 | 1 | 9 | 2.000 |
3 | 8 | 1 | 6 | 4 | 2 | 13 | 2.250 |
4 | 16 | 1 | 11 | 4 | 5 | 21 | 2.000 |
表1中,当DLC=12时,由于S所占的比例太小,仅占CAN2.0比特的1/21,可能不利于获得跳变沿,因而建议少用。也正因此,图6中的DLC=13~14未被定义,且将DLC=15作为其他特殊用途,视具体实现而定。
下面以DLC=0b1011,即DLC=11为例进一步说明本发明的填充思想。我们在这里,N=12,N1=3,于是单个CAN2.0比特中可以传输12-3-1=8个CAN HS数据比特。根据约定,CAN HS数据为8*8字节,按照CAN2.0比特分段参数取值为(1,6,4,4)计,公式(6)和公式(5)分别为:
(1+6+4)/(1+6+4+4)≈(1+L1+3/2)/12 (8)
则L1=6.3,取L1=6,则L2=2。假设CAN HS的数据为如下的(64*8=)512个比特(8位为1组,共64组):
其CRC-21校验序列为:010001101110111100000。
由于数据部分前面的DLC编码为1100,即最后是“显性”,因而CAN HS序列的第一个同步位置应该为“1”即“隐性”,于是按照前述规则将上述比特序列按照(1,6,3,2)的格式填入后得到共(13*64=)832比特的CAN HS比特流。
在本发明中填充区和跳变沿位均是填充比特,其中填充区的全显性或全隐性比特将极大增加连续显性或连续隐性的概率,为此必须实时根据前后的值确定填充“000”还是“111”,而跳变沿则必须考虑特定位置跳变。因而我们设定规则依次如下:
于是上述序列填入后得到如下发送序列(792个CAN HS比特,占用66个CAN20比特,包含两个CAN20填充比特):
其中,下划线为跳变沿比特,带框数字为填充区SV,斜体数字为CAN HS的填充比特,其中,填充区SV前的两处斜体数字,即填充区CAN HS比特与之前的即与数据段1紧邻的CAN HS比特进行组合出现5个连续相同值(第一处为5个1,第二处为5个0),则将数据段1最后两位CAN HS比特后移至数据段2,并填入两位与前后取值相异的值(分别为11,10),这样CAN2.0控制器采样到的包含在填充比特的CAN2.0比特序列为:101110111001101010011111010101110101101101001001001101000001011001(带下划线斜体字为填充比特),其相应的校验序列(这里作为举例,仅计算数据部分)为:110111101111000,无需进一步进行填充。
在CRC期间对CRC比特也基本按照前述方法划分为12个CAN HS比特,并填入CAN HS的CRC-21序列。由于CAN2.0的校验比特为17位,因此,CANHS的校验比特仅占不到4个CAN2.0校验比特,为此CRC-21序列之后,但每个CAN2.0校验比特的数据字段1的最后两个比特改为填充比特(即本例中数据字段1长度缩减为4),其填充规则如下:
将数据段1最后两位CAN HS比特后移至数据段2,并填入两位与前后取值相异的值,于是前述CAN HS数据帧的CRC-21在CAN2.0的CRC-15比特中的填充结果如下:
其中,斜体文字为无效CAN HS比特,带底纹不加框文字为填入的两位与前后取值相异的值,其他同前。
根据前述描述,当CAN2.0控制器工作在1Mbps速率,即1MBaud时,其时钟频率为500kHz。相应的CAN HS波特率则为12MBaud,即6MHz。如果CAN HS的最小时间单位为比特周期的1/8,则驱动时钟频率至少应为48MHz。但具体取值以及在CAN HS比特中的同步段(SYNC_REG)、传播段(PROP_SEG)、相段1(PHASE_SEG1)、相段2(PHASE_SEG2)的时间分配可根据实际实现而定,且一般与CAN2.0的分配关系无关。
在本发明中,CAN HS协议节点的发送和接收处理流程如图7所示:
对于参与发送的多个CAN HS节点,一旦发现总线空闲则发送一个显性的帧起始位SOF,随后按照图3或图5的帧结构依次发送数据。其中,DLC字段发送结束之前被称为仲裁期,从数据字段到校验定界符之前被称为数据期。
在仲裁期,CAN HS发送节点除遵循CAN2.0协议的仲裁处理原则以外,检查HS标识,如果检测到HS被置为显性,且本节点准备发送CAN HS帧则退出仲裁,放弃发送而转入接收状态。CAN HS接收节点除遵循CAN2.0协议接收处理规则外,如果收到了HS隐性标识,则转入CAN HS帧的帧合法性检查阶段,具体而言是对DLC字段值进行检查,如果DLC取值≤8,则标识帧错误,并按照CAN2.0协议相同的错误处理规程,如增加错误计数并发送错误帧。
发方具体流程如下(见附图7):
①如果发送CAN HS基本帧,则在发送BID、RTR、IDE时依照CAN2.0协议处理。当本节点的数据长度大于8个字节则发送HS“隐性”,否则发送HS“显性”,进入CAN2.0帧发送模式。当发送HS“隐性”时收到“显性”则退出发送,转入接收模式。
②如果发送CAN HS扩展帧,则在发送BID、SRR、IDE、EID、RTR时依照CAN2.0协议处理。当本节点的数据长度大于8个字节则发送HS“隐性”,否则发送HS“显性”,进入CAN2.0帧发送模式。当发送HS“隐性”时收到“显性”则退出发送,转入接收模式。其中,HS位处于CAN2.0扩展帧的r0或者r1保留位的位置,见图3或图5,由具体实现而定。
③后续字段和数据期发送除前述的帧结构发送方法和速率规定以外与CAN2.0数据部分的发送一致。
收方具体流程如下(见附图7):
如果检测到发方发送CAN2.0基本帧或扩展帧,则按照CAN2.0协议处理;否则检测针对CAN HS基本帧或扩展帧格式进行检查。规则如下:
①根据系统配置对帧的ID进行滤波,即检查该ID是否属于本节点接收范围,如果不是则不保存数据,仅进行帧格式、比特填充和帧校验检查,其处理方式与CAN2.0基本相同;否则在缓冲数据的同时进行帧格式、比特填充和帧校验检查,其处理方式与CAN2.0基本相同。
②如果CAN HS帧的DLC字段取值≤8,则认为帧格式出错,并按CAN2.0协议相同的错误处理规程,如增加错误计数并发送错误帧。
对于CAN HS节点,根据DLC取值对应的CAN HS总数据比特数M选择合适的CRC校验式,以提供汉明距D≥6的纠错保护。对于CAN HS帧进行CRC校验时根据具体实施包含或不包含为CAN2.0节点准备的填充位。
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
Claims (3)
1.一种控制器局域网总线的提速方法,其特征在于,包括以下步骤:
CAN控制器在发送远程帧、错误帧、超载帧时依照CAN2.0协议的规范执行;当数据帧携带数据的长度小于等于8个字节时,CAN控制器以CAN2.0模式工作,即按照CAN2.0协议规范发送数据帧,而当数据帧携带数据的长度大于8个字节时,CAN控制器以CAN HS模式工作即发送CAN HS数据帧;
其中,CAN HS数据帧中除数据期的数据字段和校验字段外,其他帧格式与CAN2.0数据帧格式相同,并做如下修改:
(1)、将CAN HS数据帧中的保留位作为CAN HS标识位,并通过置为“隐性”表示CAN HS数据帧;
(2)、将CAN HS数据帧中数据期与CAN2.0数据帧数据期的数据字段和校验字段中每个标准比特的对应位置均划分为N个等份,每个等份称为一个CAN HS比特;对于每个标准比特对应位置划分为四个部分即跳变沿位、数据段1、填充区、数据段2:第1个CAN HS比特构成跳变沿位,第1个CAN HS比特称为跳变沿比特,紧接着L1≥1个CAN HS比特构成数据段1,数据段1中的CAN HS比特为CAN HS数据比特,再紧接着N1≥2个CAN HS比特构成填充区,填充区中的CAN HS比特为填充区比特,最后为L2≥0个CAN HS比特构成数据段2,数据段2中的CANHS比特为CAN HS数据比特;
L1、N1、L2的取值满足(1+L1+N1/2)/N与差值最小,其中,N=1+L1+N1+L2,Tprop,为CAN2.0数据帧数据期的数据字段和校验字段中每个标准比特的传播段(PROP_SEG)、相段1(PHASE_SEG1)、相段2(PHASE_SEG2)相对于同步段(SYNC_REG)的时长倍数;
(3)、填充规则
3.1)、第1个跳变沿比特S的取值与数据长度字段即DLC的最后1位取值相异,后续每个跳变沿比特S取值与上一个标准比特对应位置最后一个CAN HS比特相异值;
3.2)、填充区的所有CAN HS比特的值相同,其中,数据字段的填充区CAN HS比特取值与之前所有填充区的取值满足CAN2.0协议填充规则,即连续5次相同取值后取前一个填充区取值的相异值,校验字段的填充区CAN HS比特取值根据数据字段的填充区CAN HS比特取值按照CAN2.0协议计算出校验序列并进行填充;
3.3)、数据段1、2的CAN HS比特用数据进行填充。
2.权利要求1所述的提速方法,其特征在于,所述的数据字段的填充区CAN HS比特取值为:
规则1:数据字段的填充区CAN HS比特取值与填充区前面的最后一个CAN HS比特相同,如果填充区CAN HS比特与之前的即与数据段1紧邻的CAN HS比特进行组合,会出现5个连续相同值,则改为相异值填充;规则2:当数据字段的填充区CAN HS比特取值与之前所有填充区的取值满足CAN2.0协议填充规则,即连续5次相同取值后则不再用规则1进行取值,而取前一个填充区取值的相异值,此时,如果填充区CAN HS比特与之前的即与数据段1紧邻的CAN HS比特进行组合出现5个连续相同值,则将数据段1最后两位CAN HS比特后移至数据段2,并填入两位与前后取值相异的值。
3.权利要求1所述的提速方法,其特征在于,在校验字段中,数据段1最后两位CAN HS比特后移至数据段2,并填入两位与前后取值相异的值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410204407.6A CN103973406B (zh) | 2014-05-15 | 2014-05-15 | 一种控制器局域网总线的提速方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410204407.6A CN103973406B (zh) | 2014-05-15 | 2014-05-15 | 一种控制器局域网总线的提速方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103973406A CN103973406A (zh) | 2014-08-06 |
CN103973406B true CN103973406B (zh) | 2017-02-15 |
Family
ID=51242485
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410204407.6A Expired - Fee Related CN103973406B (zh) | 2014-05-15 | 2014-05-15 | 一种控制器局域网总线的提速方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103973406B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104852825A (zh) * | 2014-09-15 | 2015-08-19 | 北汽福田汽车股份有限公司 | 总线通讯测试方法及系统 |
CN105141447B (zh) * | 2015-07-28 | 2019-01-29 | 湖南三一智能控制设备有限公司 | Can总线负载率监控方法及系统 |
JP6787697B2 (ja) * | 2015-08-31 | 2020-11-18 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America | ゲートウェイ装置、車載ネットワークシステム及び転送方法 |
FR3040806B1 (fr) * | 2015-09-07 | 2019-10-11 | Continental Automotive France | Calculateur electronique de vehicule compatible avec le protocole de communication can-fd |
CN105389281A (zh) * | 2015-10-15 | 2016-03-09 | 珠海格力电器股份有限公司 | Can总线数据发送、接收方法及固件升级方法 |
DE102015120242B3 (de) * | 2015-11-23 | 2017-02-09 | Beckhoff Automation Gmbh | Verfahren zum Betreiben eines Kommunikationsnetzwerkes, Kommunikationsnetzwerk, Steuervorrichtung und Datenverarbeitungsvorrichtung |
CN106941399B (zh) * | 2017-03-15 | 2020-04-24 | 广州致远电子有限公司 | 一种双速率can fd的波特率测量方法及装置 |
CN108833377A (zh) * | 2018-05-30 | 2018-11-16 | 武汉高仕达电气有限公司 | 一种改进的can协议数据帧结构及数据处理方法 |
CN109861795B (zh) * | 2019-02-28 | 2021-09-03 | 广州小鹏汽车科技有限公司 | Canfd总线系统采样点配置与测试方法及相应的数据传输方法 |
CN110572186B (zh) * | 2019-09-12 | 2021-09-17 | 南方电网科学研究院有限责任公司 | 双模通信网络系统及其通信模式选择方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2521319A1 (en) * | 2011-05-02 | 2012-11-07 | Robert Bosch GmbH | Controller area network with flexible data-rate |
CN103562901A (zh) * | 2011-04-06 | 2014-02-05 | 罗伯特·博世有限公司 | 用于匹配串行总线系统中的数据传输安全性的方法和设备 |
CN103782283A (zh) * | 2011-06-29 | 2014-05-07 | 罗伯特·博世有限公司 | 用于具有灵活的消息大小和可变的位长的数据传输的方法和装置 |
-
2014
- 2014-05-15 CN CN201410204407.6A patent/CN103973406B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103562901A (zh) * | 2011-04-06 | 2014-02-05 | 罗伯特·博世有限公司 | 用于匹配串行总线系统中的数据传输安全性的方法和设备 |
EP2521319A1 (en) * | 2011-05-02 | 2012-11-07 | Robert Bosch GmbH | Controller area network with flexible data-rate |
CN103782283A (zh) * | 2011-06-29 | 2014-05-07 | 罗伯特·博世有限公司 | 用于具有灵活的消息大小和可变的位长的数据传输的方法和装置 |
Non-Patent Citations (2)
Title |
---|
CAN总线的数据帧结构及接口设计;薛雷;《洛阳师专学报》;19990415;第18卷(第2期);全文 * |
基于状态机的CAN2.0总线协议的实现;许志宏;闫福鑫;余志军;吴龙胜;《计算机技术与发展》;20120510;第22卷(第5期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103973406A (zh) | 2014-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103973406B (zh) | 一种控制器局域网总线的提速方法 | |
CN103782283B (zh) | 用于具有灵活的消息大小和可变的位长的数据传输的方法和装置 | |
CN107078931B (zh) | 发送方将帧串行传输到接收方的方法以及总线系统 | |
JP6486331B2 (ja) | Can fd | |
TWI609580B (zh) | 在一串聯匯流排系統中將資料傳輸安全性作匹配的方法與裝置 | |
CN103748838B (zh) | 用于检验串行数据传输的正确运行的方法和设备 | |
KR101885935B1 (ko) | 전환 가능한 데이터 전송 속도에서의 직렬 데이터 전송을 위한 방법 및 그 장치 | |
EP2521319B1 (en) | Controller area network with flexible data-rate | |
US4495617A (en) | Signal generation and synchronizing circuit for a decentralized ring network | |
JP5684922B2 (ja) | 追加的に挿入されたデータによる直列データ伝送のための方法及び装置 | |
CN107148760B (zh) | 将帧经由总线系统从发送器串行传输至至少一个接收器的方法和用于总线系统的参与站 | |
CN101626334B (zh) | 通讯总线控制方法和装置 | |
CN106094801A (zh) | 一种新型can fd控制器 | |
CN113412604B (zh) | 串行总线系统的用户站和在串行总线系统中通信的方法 | |
CN108270652A (zh) | 一种高速实时总线系统及其数据处理方法 | |
CN113396564B (zh) | 串行总线系统的用户站和在串行总线系统中通信的方法 | |
CN114342325B (zh) | 用于串行总线系统的用户站和用于在串行总线系统中进行通信的方法 | |
Hartwich et al. | Introducing can xl into can networks | |
TW201310246A (zh) | 具有可變通之訊息大小及可變位元長度之串聯資料傳輸的方法與裝置(三) | |
US20210250123A1 (en) | User station for a serial communication network and method for correcting individual errors in a message of a serial communication network | |
Mahmud | FlexRay: The New Time-Triggered Protocol for Drive-by-Wire Applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170215 Termination date: 20190515 |
|
CF01 | Termination of patent right due to non-payment of annual fee |