一、
CAN时钟周期(Tq)=2*晶振时钟*BRP(波特率预分频值 baudrate prescaler)
一个CAN时间称为一个时间量子 Tq
1)同步段(Synchronization Segment):1个Tq,tSS
2)传播段(Propagation Segment):传播段时长可编程(1~8个时间量子Tq),tPS
3)相位缓冲段1(Phase Buffer Segment1):长度可编程(1~8个时间量子Tq),tPBS1
4)相位缓冲段2(Phase Buffer Segment2):长度可编程(1~8个时间量子Tq),tPBS2
(位时间)tBit=tSS+tPS+tPBS1+tPBS2
二、在CAN通信中,有两种同步机制:硬同步与重同步
三、同步跳转宽度
在重同步时,有个同步跳转宽度(SJW,Synchro Jump Width)的概念,表示的是PBS1和PBS2重同步时允许跳转的最大宽度。
同步跳转宽度必须满足以下几个条件:
SJW必须小于PBS1和PBS2的最小值
SJW最大值不能超过4(500kbps通常为3)
(1)位速率:单位为bps、Kbps、Mbps
1Mbps=1000Kbps=1000000bps
1Mbps=1000Kbps=1000000bps
(2)位时间:tBit,单位一般为纳秒(ns)
tBit=1/位速率
(3)时间量子Tq:
Tq=1/NBT(NBT 表示的是一个位时间tBit内包含Tq的个数,500kbps通常为16或20)
(4)传输延迟时间tPTS
CAN报文在CAN总线上的传输时,物理延迟包含两个部分:
在CAN-BUS上传输造成的延迟
在节点上传输造成延迟
按照CAN通信协议的规定,补偿给传播延迟的时间长度要至少等于实际实际传播延迟时长的2被,即:
tPTS≥2×tdel=2×(tdel+tBus)
(5)报文发送顺序
字节序:LSB,bit序:MSb
4 例子
以下面的例子来讲述位定时参数的确定方法:
MCU晶振16MHz,位速率500kbps,总线长度20m,单位总线延迟5ns/m,物理接口的发送接收延迟150ns(一般端口延迟最低300ns)
(1)晶振时钟周期:T=1s/16MHz = 62.5ns
(2)位时间 :tBit = 1/500kbps = 2000ns
公式: tBit=NBT*(Tq),也就是tBit=NBT*(2*晶振时钟周期*BPR)
(3)BPR和NBT:考虑到 T = 62.5ns,tBit = 2000ns,所以BPR只能取值为1,才能满足NBT∈[8,25],于是预分频数BPR=1;
(4)CAN时钟周期Tq = 2 × 62.5 × 1 = 125ns
(5)NBT = 16
(6)传输延迟时间 tPTS≥2×tdel=2×(tdel+tBus),也就是tPTS≥2*(20*5+150)=500ns,(总线长度20m,单位总线延迟5ns/m,物理接口的发送接收延迟150ns),对于诊断设备由于总线长度很短,因此该时间可忽略。
tPTS_Tq=500/125=4
此时,同步段为1 Tq,传播段为4 Tq,还剩NBT-5=11个tq,采样点满足75%-80%,因此相位缓冲段1PBS1为6个tq,相位缓冲段2为4个Tq;同步跳转宽度 SJW=min{PBS1,4}=4
|