CAN 是一种差分信号标准,广泛用于汽车、工业和仪器仪表行业。它用于不同系统之间的串行通信,这些系统常常是经长距离连接到不同的电源系统。由于环境限制,常常使用电流隔离来中断接地环路或提供物理安全性。
隔离式 CAN 网络的传播延迟比非隔离式 CAN 网络要长,设计起来可能颇具挑战性。图 1 显示一个使用信号和电源隔离 CAN 收发器ADM3053 的隔离式 CAN 节点,我们将以它为例来计算所需的 CAN控制器参数,以便在 20 米电缆上以 1 Mbps 的速度进行通信。
一个 CAN 比特由四个独立的时间段组成 :同步段 (SYNC_SEG)、传播段 (PROP_SEG)、相位段 1 (PHASE_SEG1) 和相位段 2 (PHASE_SEG2)。这些时间段可以在 CAN 控制器中进行编程,对于计算 CAN 控制器的设置参数至关重要。图 2 所示为标称比特时间的不同时间段。
计算中使用如下假设条件 :
电缆长度为 20 m
数据速率或比特率为1 Mbps
电缆传播延迟为 5 ns/m
CAN 控制器振荡器频率为36 MHz
图 1. 使用信号和电源隔离 CAN 收发器 ADM3053 的隔离式 CAN 节点
图 2. CAN 标称比特时间
CAN 采用逐位仲裁方式,不同的节点可以争夺总线访问权,这就导致多个节点可以同时传输数据。传输节点必须对总线上的数据进行采样,以便确定它是否赢得仲裁。
由于系统的传播延迟,控制器必须补偿各位采样的时间。在控制器中设置 PROP_SEG 可以提供此
补偿,其计算方法如下 :对于 ADM3053,从 TxD 到 RxD 的传播延迟为 250 ns(最大值)。电缆的物理延迟等于 5 ns/m 乘以电缆长度 20 m,结果为 100 ns。因此,通过系统并返回的总传播时间为 :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 ?f 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
作者 :Hein Marais,高级产品应用工程师
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)