从CAN到CAN FD的简单迁移

esd CAN FD产品列表

CAN(Controller Area Network)是一个快速且稳定的总线系统,已经在众多工业领域被证明是非常有效率的系统。三年前,更强大的CAN FD(CAN with flexible data rate)协议标准出台。协议特性决定了将已有的CAN应用程序迁移至CAN FD网络是简便可行的,当然用户也可以以CAN FD为基础直接开发新的应用程序。从CAN到CAN FD的迁移价值何在呢?它又是怎样做到的呢?我们将在后面的内容中做详细介绍。

【1】兼容性是关键

CAN最初是为自动化领域而开发的。汽车制造商在提高CAN总线的性能的同时也要保证向下兼容CAN的通讯。拥有CAN强大特征的CAN FD应运而生:实时总线仲裁,事件触发机制,11和29 bit标识符,多主站能力,低功耗,抗干扰能力强以及可保持现有CAN安装环境不变等特性。这些都归功于向下兼容的设计,使得现有的CAN应用程序可以被简单迁移到更加强大的CAN FD通讯中去,或者用此新标准作为基础直接开发新的应用程序。

【2】CAN FD背后的理念是什么

CAN数据传输大体可以分为三个阶段:总线仲裁,数据传送和传送确认。在所有这些阶段中,bit的传输使用同一个比特率。同时所有的节点都不停地做同步,用来补偿每个独立CAN节点振荡器的相位噪音和相位漂移。这在仲裁阶段和确认阶段尤为重要,因为所有节点都同时传输数据到总线,每个节点都必须能够对比传输出去的和收到的每个bit。CAN协议细节决定了一些物理限制,如可能的最大比特率和线缆长度。CAN FD协议背后的理念是,通常在数据传送阶段可以使用更高的比特率。同步在这个阶段被暂停了,因为在这个阶段中总线中只有一个传送节点。这个增强性能允许协议拥有一个弹性的和更高的最大数据传输率,而不用改变现有的线缆。

【3】净数据传输速率提高最大9倍

协议名称的后缀为"FD"是由flexible data rate而来的。在数据传送阶段,根据网络拓扑结构和其他物理因素的不同,允许比特率最高达10 Mbit/s。并且消息中的有效载荷数据从8 bytes提高到64 bytes,确保协议数据与用户数据之间的比率有明显的提高。比特率在总线仲裁阶段与数据传送阶段之间的比率为1:8,这直接提升了净数据传输速率,从2倍甚至达最大9倍(取决于有效载荷数据的大小)。随着性能的提升,现有的CAN应用程序即使想要使用更高的带宽,也不必把它的通讯层协议改成工业以太网协议。因此,对于新的架构,产品和技术的投资也会被控制在尽可能低的水平。决定性的因素是要确定各自应用的长期需求。

【4】CAN FD控制器仍然支持CAN

CAN FD协议的设计成保留了传统CAN协议的仲裁阶段和确认阶段,以及错误隔离。为了达到与传统CAN协议相同程度的,对于通讯错误的识别能力,针对较长尺寸的有效载荷数据,设计了17-bit的校验和(对于消息中的用户数据最大达16 bytes的情况下使用)以及21-bit的校验和(对于消息中的用户数据超过16 bytes的情况下使用)用来检验数据的完整性,而替换了传统CAN协议的15-bit校验和。然而,RTR(Remote Transmission Requests)功能不再被CAN FD协议所支持。为了确保向下兼容,任何CAN FD控制器也都会支持传统的CAN协议,所以现有的应用程序即使用到了RTR,也没有必要修改而能直接使用。由于目前搭载最先进的CAN FD技术的硬件的价格只是比传统CAN硬件贵一点点,所以推荐尽早使用兼容的CAN FD方案,以及硬件重新设计以支持CAN FD的技术。

【5】继续使用现有的CAN安装环境

CAN FD由于在数据传送阶段使用更高的比特率,在传送大数据时或在减少固件更新下载时间时取得了高分。与此同时,实时性行为也得到了提高,因为即使应用层协议保持不变的情况下,总体延迟被降低了。综上所述,这性能的提升使得继续延用目前已经接近物理极限的现有CAN安装环境成为可能。

【6】期望的性能提升定义了迁移的工作量

除了使用支持CAN FD硬件将现有CAN系统性能提升至更高水平,而不用更改协议,只需要提高数据传输阶段的比特率即可。在总线仲裁阶段的比特率与数据传输阶段的比特率之比为1:4的情况下,使用8 bytes数据的消息传输,吞吐量已经是原来的两倍还要多,或者说延时低于原来的一半以上。如果用户还需要得到更高的传输性能的话,迁移到CAN FD还需要修改应用层协议,也就是说需要使用大于8 bytes的数据进行消息传输。使用最大64 bytes的数据容量的话,吞吐量至少能提升5倍。使用1:8的比特率之比,并且在网络拓扑结构和连线质量较好的情况下,甚至能得到超过9倍的吞吐量。

【7】增强的收发器不单适用于CAN FD

目前厂家越来越多地使用最新的MCU替换原有的CAN接口,新硬件的设计可以容易地支持改进过的CAN FD协议标准。CAN FD能接受与传统CAN相同的振荡器公差,除非总线仲裁阶段的比特率与数据传输阶段的比特率之比达到某一比率为止。CAN FD建议使用符合ISO 11898-2:2016的收发器,提升的物理特性同样能惠及传统的CAN。使用独立的CAN控制器或者整合一个基于FPGA的IP core,如 esd ACC,现有设计就可以轻易地升级为CAN FD。

【8】渐进式的硬件迁移

如果系统集成商想迁移CAN网络至CAN FD,他们可以渐进地使用CAN FD硬件去替换每个CAN节点。多亏了向下兼容的特性,CAN协议仍然可以使用,直到所有的节点都被更新成CAN FD。当全部节点都完成了硬件迁移以后,如果用户想得到更高的通讯性能和/或得到更低的延迟,应用程序也需要被修改成适用于CAN FD的网络,大体步骤请参考【9】中的描述。而且由于接线方式未改变,用户还是可以切换回使用原来的应用程序。在使用新的CAN FD应用程序来得到性能提升之前,所有的CAN节点都要迁移成CAN FD,因为如果不这样的话,剩余的传统CAN控制器会把CAN FD的消息处理为协议错误。

【9】渐进式的软件迁移

从程序员的角度来看迁移的工作量,大部分是依赖于CAN API的使用。如果CAN FD的整合不影响原来的CAN API,迁移的发生会有以下三个步骤:第一步也是初始化步骤就是迁移所有的CAN节点的硬件至CAN FD硬件。这个过程已经在上个章节介绍过了。第二步,所有节点都配置为在数据传输阶段使用更高的比特率,而在同时能够保持原有的应用层协议不变。这种方法可以立竿见影地降低网络延迟和网络负载,或者说增加网络吞吐量。在最后一步,也是最需要付出努力的一步,就是修改应用层协议来使用更大的数据量进行传输以达到增加吞吐量的目的。这个过程同样也开启了新的应用领域,例如目前的安全与保密协议的实现。