关于CAN通信速率设置

一、

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

关于CAN通信速率设置_第1张图片

此时,同步段为1 Tq,传播段为4 Tq,还剩NBT-5=11个tq,采样点满足75%-80%,因此相位缓冲段1PBS1为6个tq,相位缓冲段2为4个Tq;同步跳转宽度  SJW=min{PBS1,4}=4

参考文章:

CAN总线学习笔记(5)- CAN通信的位定时与同步

 

你可能感兴趣的:(CANoe)