dw自己做网站需要什么区别,2017常用的网站,找货源的网上平台有哪些,百度联盟广告点击一次收益can控制器只需要进行少量的设置就可以进行通信#xff0c;就像RS232那样。其中较难设置的部分就是通信波特率的计算。can总线能够在一定范围内容忍总线上can节点的通信波特率的偏差#xff0c;这种技能使得can总线有很强的容错性#xff0c;同时也降低了对每个节点的振荡器精…can控制器只需要进行少量的设置就可以进行通信就像RS232那样。其中较难设置的部分就是通信波特率的计算。can总线能够在一定范围内容忍总线上can节点的通信波特率的偏差这种技能使得can总线有很强的容错性同时也降低了对每个节点的振荡器精度。
实际上can总线的波特率是一个范围。假设定义的波特率是250KB/S但是实际上根据对寄存器的设置实际的波特率可能为200-300KB/S(具体取决于寄存器的设置)。
简单介绍一下波特率的计算在can的底层协议里将can数据的每一位时间(TBit)分为许多的时间段(Tscl),这些时间段包括位同步时间Tsync时间段1Tseg1时间段2Tseg2.
其中位同步时间占用1个Tscl时间段1占用(Tseg11)个Tscl时间段2占用Tseg21个Tscl所以can控制器的位时间TBit就是
TBit Tseg1Tseg2Tsync(Tseg1Tseg23)*Tscl那么can的波特率canbps就是1/TBit。
但是这样计算出的值是一个理论值。在实际的网络通信中由于存在传输的延时不同节点的晶体的误差等因数使得网络can的波特率的计算变得复杂起来。can在技术上引入了重同步的概念以更好的解决这些问题。
这样重同步带来的结果就是要么时间段1(Tseg1)增加TSJW(同步跳转宽度SJW1)要么时间段减少TSJW因此can的波特率实际上有一个范围
1/(TBitTSJW) CANbps 1/(TBit-TSJW)
CAN波特率的值由以下几个元素决定 最小时间段Tscl 时间段1 Tseg1 时间段2 Tseg2 同步跳转宽度 SJW
那么Tscl是怎么计算的呢
这是总线时序寄存器中的预分频寄存器BRP派上了用场Tscl (BRP1)/FVBPFVBP为微处理器的外设时钟。
tscl pclk。
Tseg1和Tseg2又是怎么划分的呢
Tseg1和Tseg2的长度决定了CAN数据的采样点这种方式允许宽范围的数据传输延迟和晶体的误差。其中Tseg1用来调整数据传输延迟时间造成的误差而Tseg2则用来调整不同点节点晶体频率的误差。
但是他们由于过于灵活而使初次接触CAN的人有点无所适从。TSEG1与TSEG2的是分大体遵循以下规则 Tseg2≥Tscl2Tseg2≥2TSJWTseg1≥Tseg2
总的来说对于CAN的波特率计算问题把握一个大的方向就行了其计算公式可了规结为 BitRate Fpclk/( (BRP1) * ((Tseg11)(Tseg21)1)
最后我们来说说如何计算波特率。
can总线有两个总线时钟寄存器BTR0、BTR1。
can系统时钟公式
tscl 2tclk(32BRP.5 16BRP.4 8BRP.3 4BRP.2 2*BRP.1 BRP.0 1)
其中tclk1/晶振频率pclk。
同步跳转宽度
Tsjw “tscl”(2SJW.1 SJW.0 1)
位周期T
TBit Tseg1Tseg2Tsync(Tseg1Tseg23)*Tscl
Tseg1 tscl*(8TSEG1.3 4TSEG1.2 2*TSEG1.1 TSEG1.0 1)
Tseg2 tscl*(4TSEG2.2 2TSEG2.1 TSEG2.0 1)
CAN波特率APB总线频率/BRP分频器/(1tBS1tBS2)。
比如
总线时钟寄存器BTR00x2,总线时钟寄存器BTR10x14。
TBit tscl(152)8tscl
tscl 2tclk*(3) 6tclk
TBit 48tclk
tclk 1/48000000
TBit 1/1000000
即can的波特率canbps就是1/TBit1MHz。