若需CAN以1Mbps的速度运行,请这样计算控制器参数

提问:如何计算控制器参数使隔离式CAN(控制器区域网络)网络以1Mbps的速度运行?请看博主安利的一种计算方法吧,当然新技能一定要转发哦~

答:CAN是一种差分信号标准,用于不同系统之间的串行通信,隔离式CAN网络的传播延迟比非隔离式CAN网络要长。图1显示一个使用信号和电源隔离CAN收发器ADM3053的隔离式CAN节点,这里我们将以它为例来计算所需的CAN控制器参数,以便在20米电缆上以1Mbps的速度进行通信。

使用信号和电源隔离 CAN 收发器 ADM3053 的隔离式 CAN 节点

图 1. 使用信号和电源隔离 CAN 收发器 ADM3053 的隔离式 CAN 节点

一个 CAN 比特由四个独立的时间段组成:

同步段 (SYNC_SEG)
传播段 (PROP_SEG)
相位段 1 (PHASE_SEG1)
相位段 2 (PHASE_SEG2)

这些时间段可以在 CAN 控制器中进行编程,对于计算 CAN 控制器的设置参数至关重要。图 2 所示为标称比特时间的不同时间段。

 CAN 标称比特时间

图 2. CAN 标称比特时间

计算过程

计算中使用如下假设条件 :
电缆长度为 20 m
数据速率或比特率为1 Mbps
电缆传播延迟为 5 ns/m
CAN 控制器振荡器频率为36 MHz

CAN 采用逐位仲裁方式,不同的节点可以争夺总线访问权,这就导致多个节点可以同时传输数据。传输节点必须对总线上的数据进行采样,以便确定它是否赢得仲裁。由于系统的传播延迟,控制器必须补偿各位采样的时间。

在控制器中设置 PROP_SEG 可以提供此补偿,其计算方法如下 :
❶对于 ADM3053,从 TxD 到 RxD 的传播延迟为 250 ns(最大值),电缆的物理延迟等于 5 ns/m 乘以电缆长度20m,结果为100ns。因此,通过系统并返回的总传播时间为:
2 x ( 传播延迟 + 收发器传播延迟 )
= 700 ns (2 × (100 + 250)
= 700 ns)

❷为了给控制器编程,必须将寄存器设置为“时间量子”的整数倍。时间量子的时长等于 CAN 系统时钟的时间周期,本例中为 28 ns。对于 28 ns 的时间量子,每位包括 36 (1000/28 = 36) 个时间量子。
PROP_SEG
= ROUND_UP (700 ns/28 ns)
= 25 个时间量子

❸从每位的 36 个时间量子中,减去用于 PROP_SEG 的 25个时间量子和用于SYNC_SEG 的 1 个时间量子,余下的时间量子分配给 PHASE_SEG1 和 PHASE_SEG2,每段5个。

❹CAN 系统时钟存在容差,因而会出现累积相位误差。这要求系统通过再同步跳跃 (RJW) 同步,RJW 为 4 和PHASE_SEG1 二者中的较小值。

❺由此便可计算系统的振荡器容差要求 :
∆f < RJW/(20 × NBT)
= 4/(20 × 36) = 0.006

∆f < Minimum (PHASE_SEG1 and PHASE_SEG2)/2(13 × NBT –PHASE_SEG2)
= 5/2(13 × 36 – 5) = 0.005
这两个值中的较小者就是所需的振荡器容差 0.5%。

计算结果

计算得出下列设置参数 :

SYNC_SEG = 1
PROP_SEG = 25
PHASE_SEG1 = 5
PHASE_SEG2 = 5
RJW = 4

这篇由ADI高级产品应用工程师介绍的计算方法你学会了吗?新技能一定要分享给身边的小伙伴哦~

本文转自:ADI微信

点击这里,获取更多电机控制设计信息