配置控制器局域网络(CAN)位时序,优化系统性能
简介
控制器局域网络(CAN)可在多个网络站点之间提供强大的通信能力,支持多种数据速率和距离。CAN具有数据链路层仲裁、同步和错误处理等特性,广泛用于 工业、仪器仪表和汽车应用之中。在ISO 11898标准的框架下,借助分布式多主机差分信令和内置故障处理功能,DeviceNet、CANopen等多种协议针对物理层和数据链路层规定了相应 的实现方式。本文旨在描述如何针对给定应用优化设置,同时考虑控制器架构、时钟、收发器、逻辑接口隔离等硬件限制。文章将集中介绍网络配置问题——包括数据速率和电缆长度——说明何时有必要对CAN节点进行重新配置,以及如何从一开始就实现对节点的优化配置。
逻辑接口隔离
对于恶劣的工业和汽车环境,可通过隔离CAN收发器的逻辑接口进一步增强系统的鲁棒性,允许接地节点之间出现较大的电位差,同时提供抗高电压瞬变能力。 将CAN收发器与数字隔离器集成起来即可形成隔离式CAN节点。 ADM3052、ADM3053和ADM3054隔 离式CAN收发器提供多种接口供电选项。 对于DeviceNet网络,隔离侧可通过总线供电;因此,ADM3052集成了一个线性调节器,以便利用24 V总线电源提供5 V电源。ADM3053(如图1所示)集成了一个isoPower DC-DC转换器,用于驱动收发器和数字隔离器的总线端。已有一个隔离式DC-DC转换器能够在隔离栅上提供电源的系统可以采用ADM3054,后者只集 成了数字隔离器和CAN收发器。
图1. 隔离式CAN节点(ADM3053收发器由isoPower DC-DC供电)
传播延迟的影响
部署一个CAN节点需要一个隔离式或非隔离式CAN收发器,以及一个搭载有相应协议堆栈的CAN控制器或处理器。可以使用独立式CAN控制器,甚至可以使 用不带标准协议堆栈的控制器,但是,CAN应用中使用的微处理器可能已经包括CAN控制器。在任一情况下,都必须对CAN控制器进行配置,以调和总线上的 数据速率和时序,而硬件振荡器则用于控制器。
随着电缆长度的增加,信号中的高频组分衰减,因此,长距离条件下的数据速率都有限。 总线是一种多主机,因此,所有节点都可以尝试同时传输,仲裁取决于物理层信令。传播延迟也会随电缆长度而增加,可能对节点间同步和仲裁形成干扰。
CAN总线上的差分信号可能处于两种状态之一:主动(逻辑0,信号线路CANH和CANL之间存在一个差分电压)或被 动(逻辑1,无差分电压,所有CAN收发器输出均为高阻抗)。如果两个节点尝试同时传输,则主动位传输会覆盖同时进行的被动位传输,因此,在传输时,所有 节点都必须监控总线状态,如果在传输被动位时发生覆盖,则要停止传输。如此,传输主动位的节点赢得仲裁,如图2所示。
图2. 两个CAN节点之间的仲裁逻辑
CAN 2.0b定义的是数据链路层的实现方式,对用于传输的CAN帧结构进行了规定。一个包含消息ID的仲裁字段启动消息传输。较低的消息ID(开头的零较多)将拥有更高的优等级,因此,在传输消息时,相应节点赢得仲裁的概率更大。
尽管CAN节点与总线传输同步,但是,由于两个同时传输的节点之间存在传播延迟,所以不会完全同步。要让仲裁切实发挥 作用,传播延迟不能过大,否则,较快的节点可能在检测到较慢节点传输的位状态之前就对总线进行采样了。最差条件下的传播延迟为两个最远节点间延迟的两倍。 在图3中,如果节点A和B是总线上相隔最远的节点,则至关重要的参数是双向传播时间PropBA与TPropBA之和。
图3. 实际条件下两个CAN节点间的仲裁(含传播延迟)
总传播延迟由通过电缆、两个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数的软件配置设定数据速率。