控制器局域网络(CAN)可在多个网络站点之间提供强大的通信能力,支持多种数据速率和距离。CAN具有数据链路层仲裁、同步和错误处理等特性,广泛用于工业、仪器仪表和汽车应用之中。在ISO 11898标准的框架下,借助分布式多主机差分信令和内置故障处理功能,DeviceNet、CANopen等多种协议针对物理层和数据链路层规定了相应的实现方式。本文旨在描述如何针对给定应用优化设置,同时考虑控制器架构、时钟、收发器、逻辑接口隔离等硬件限制。文章将集中介绍网络配置问题——包括数据速率和电缆长度——说明何时有必要对CAN节点进行重新配置,以及如何从一开始就实现对节点的优化配置。
部署一个CAN节点需要一个隔离式或非隔离式CAN收发器,以及一个搭载有相应协议堆栈的CAN控制器或处理器。可以使用独立式CAN控制器,甚至可以使用不带标准协议堆栈的控制器,但是,CAN应用中使用的微处理器可能已经包括CAN控制器。在任一情况下,都必须对CAN控制器进行配置,以调和总线上的数据速率和时序,而硬件振荡器则用于控制器。
随着电缆长度的增加,信号中的高频组分衰减,因此,长距离条件下的数据速率都有限。总线是一种多主机,因此,所有节点都可以尝试同时传输,仲裁取决于物理层信令。传播延迟也会随电缆长度而增加,可能对节点间同步和仲裁形成干扰。
CAN总线上的差分信号可能处于两种状态之一:主动(逻辑0,信号线路CANH和CANL之间存在一个差分电压)或被动(逻辑1,无差分电压,所有CAN收发器输出均为高阻抗)。如果两个节点尝试同时传输,则主动位传输会覆盖同时进行的被动位传输,因此,在传输时,所有节点都必须监控总线状态,如果在传输被动位时发生覆盖,则要停止传输。如此,传输主动位的节点赢得仲裁,如图2所示。
CAN 2.0b定义的是数据链路层的实现方式,对用于传输的CAN帧结构进行了规定。一个包含消息ID的仲裁字段启动消息传输。较低的消息ID(开头的零较多)将拥有更高的优等级,因此,在传输消息时,相应节点赢得仲裁的概率更大。
尽管CAN节点与总线传输同步,但是,由于两个同时传输的节点之间存在传播延迟,所以不会完全同步。要让仲裁切实发挥作用,传播延迟不能过大,否则,较快的节点可能在检测到较慢节点传输的位状态之前就对总线进行采样了。最差条件下的传播延迟为两个最远节点间延迟的两倍。在图3中,如果节点A和B是总线上相隔最远的节点,则至关重要的参数是双向传播时间PropBA与TPropBA之和。
总传播延迟由通过电缆、两个CAN控制器I/O和两个CAN收发器的双向传播时间构成。CAN控制器I/O并不是传播延迟的主要贡献者,往往可以忽略不计,但进行彻底评估时必须予以考虑。循环时间由从TxD到CANH/CANL、再回到RxD的传播延迟构成。电缆传播延迟取决于电缆和距离,典型值为5 ns/m。
在较低数据速率下,允许的位时间较长,因此,传播延迟(及电缆距离)也可能变长。在最高标准CAN数据速率(即1 Mbps)下,允许的传播延迟更受限制,尽管ISO 11898-2标准规定,在总线长40米时,可支持1 Mbps的数据速率。
隔离条件下,在计算双向传播延迟时,必须考虑额外的因素。相比光耦合器,数字隔离器可减少传播延迟,但即使是最快的隔离式CAN收发器在这方面也与较慢的非隔离式收发器相当。如果允许的总传播延迟保持不变,隔离系统中,最大电缆长度较短,但可以重新配置CAN控制器,以提高允许的总传播延迟。
为了补偿因较长总线或隔离增加的传播延迟,必须为CAN控制器设置与时序和同步相关的特定参数。在配置控制器时,不只是选择一个数据速率,而是要设置决定着控制器所用位时间的变量。面向振荡器或内部时钟的波特率预分频器(BRP)设置时间量子(TQ),位时间为TQ的倍数。振荡器的硬件选择,以及BRP和每位时间TQ数的软件配置设定数据速率。
控制器的位时间分为三个或四个时间段,如图3所示。每位时间的TQ总数包括一个同步以及传播延迟(PROP)、相位段1 (PS1)和相位段2 (PS2)的设定数量。有时候,会把PROP和PS1加起来。配置调节采样点,以支持传播延迟和再同步。
把采样点设在位时间的稍后部分可以支持更长的传播延迟,但就如总数据速率一样,采样点取决于其他时序变量,这些变量都有自己的限制。例如,内部时钟/振荡器可能固定不变,只能使用整数BRP和TQ数。因此,特定电缆长度要求的理想数据速率可能根本无法实现,因此,必须缩短电缆,或者降低数据速率。
再同步会使PS1加长,PS2缩短,加长量和缩短量为同步跳宽(SJW)规定的TQ数,因此,PS2不得短于SJW。SJW所需TQ数取决于CAN控制器的时钟容差,对于SJW和PS2,晶振一般支持最小TQ数。
为了实现节点间时序可靠、同步可靠的稳健网络,系统必须能承受所选数据速率和CAN控制器时钟条件下的传播延迟。如果不能,可以选择降低数据速率、缩短总线或者使用不同的CAN控制器时钟速率。配置过程包括以下三个步骤。
先核实在给定目标数据速率和CAN控制器时钟条件下,有哪些可能的配置。TQ间隔必须基于时钟和各种BRP值计算,可能组合只有那些TQ间隔为位时间的整数倍的组合。根据所处系统设计阶段,也可能考虑其他CAN控制器时钟速率。在表1所示计算示例中,给定的最大数据速率为1 Mbps,使用的是一个Microchip® MCP2515独立CAN控制器和一个内置CAN控制器的ADSP-BF548 Blackfin处理器。MCP2515 fOSC 取决于所使用的外部硬件振荡器,而ADSP-BF548 fSCLK 则取决于硬件CLKIN和内部PLL设置(VCO的CLKIN乘数,SCLK的VCO分频)。只有CAN控制器时钟和BRP(整数个TQ)的某些组合支持1 Mbps的数据速率,如粗体所示。这会限制位时序的设置,因此一旦选择某个总线数据速率,只有部分选项可用。
表1. 给定f和BRP时1 Mbps速率下的TQ数
下一步是确定每个位段要求的TQ数。最困难的情况是在1 Mbps的数据速率下支持最大传播延迟,例如,电缆长40米,隔离式节点。理想情况下,应对位时间段进行配置,使采样点在位中尽量晚。在表1中,对于每个整数的TQ总数,一个TQ必须提供给SYNC段,PS2(或TSEG2)段必须足够大,以容纳CAN控制器信息处理时间(只要BRP大于4,MCP2515为2 TQ,ADSP-BF548为小于1 TQ)。另外,对于MCP2515,PROP和PS1最多可以各有8 TQ;对于ADSP-BF548,TSEG1 (PROP + PS1)最多可以为16 TQ。
图4和图5分别展示了MCP2515和ADSP-BF548的可能总TQ配置,对于1 Mbps速率条件下的有效时钟和BRP组合,可支持最近采样点。MCP2515的最佳TQ总数为19,要求38 MHz的硬件振荡器和1的BRP。对于ADSP-BF548,TQ总数为5的情况除外,所有配置至少为85%采样点,但最佳设置是10 TQ,要求fSCLK = 50 MHz且BRP = 5。
在帮助CAN控制器实现最佳采样点以后,最后一步是比较允许的传播延迟与使用的CAN收发器/隔离器和总线长度。设ADSP-BF548最佳配置为10 TQ(fSCLK= 50 MHz,BRP = 5),可能实现的最大传播延迟为900 ns。对于集成隔离式电源的ADM3053隔离式CAN收发器,数据手册中的最大环路延迟(TxD关闭,接收器处于非活动状态)为250 ns。必须使其增加一倍(500 ns),以便同时支持总线最远两端的两个节点处的发射延迟和接收延迟。
设电缆传播延迟为5 ns/m,ADSP-BF548可以支持40米的总线长度(根据ISO 11898规范,此为1 Mbps条件下的最大值),ADSP-BF548的位时间总共为10 TQ,TSEG2位段仅1 TQ。实际上,略早的采样点就够了,因为一个节点上的极端收发器传播延迟甚至很可能导致简单的再传输(由数据链路层CAN控制器自动处理),但是,由于CAN控制器I/O与CAN收发器之间存在小延迟,因此建议把采样点配置到尽量靠后的点。
👇点击探索ADI“芯”世界