CAN总线的位时间/同步段/传播时间段/相位缓冲段/采样点

提示:根据 CAN 规范的要求,总线上的所有器件都必须使用相同的比特率才能完成通信。然而,并非所有器件都要求具有相同的主振荡器时钟频率。所以,CAN 总线能够在一定的范围内容忍总线上 CAN 节点的通信波特率的偏差,这种机能使得 CAN 总线有很强的容错性,同时也降低了对每个节点的振荡器精度。所以,实际上,CAN 总线的波特率是一个范围。举个例子,假设定义的波特率是 250KB/s,但是实际上根据对寄存器的设置,实际的波特率可能为 200-300KB/s(具体值取决于寄存器的设置)。

文章目录


提示:首先了解一下 CAN 总线系统中的两个时钟:晶振时钟周期和CAN时钟周期:

晶振时钟周期:是由单片机振荡器的晶振频率决定的,指的是振荡器每震荡一次所消耗的时间长度,也是整个系统中最小的时间单位;
CAN时钟周期:CAN时钟是由系统时钟分频而来的一个时间长度值,实际上就是一个时间份额TQ。计算公式:CAN时钟周期 = 2 × 晶振时钟周期 × BRP,其中BRP叫做波特率预分频值(baudrate prescaler);
在这里插入图片描述
如上图所述,根据CAN规范,每一个CAN位时间 (Nominal Bit Time,NBT)被分成4个时间段:同步段(Sync_Seg)、传播时间段(Prop_Seg)、相位缓冲段1(Phase_Seg1)和相位缓冲段2(Phase_Seg2),如下图所示:
在这里插入图片描述
而采样点则设计在相位缓冲段1和相位缓冲段2之间。如下图所示:
在这里插入图片描述
如果用公式来表示,就是:
在这里插入图片描述
上述每个段又由若干个时间份额(time quanta,TQ)组成,时间份额 TQ 是位时间的基本时间单元,下面详细解释一下:

  • 1、同步段(Synchronization Segment)

同步段(SyncSeg)为 NBT 中的首段,用于同步CAN总线上的各个节点。输入信号的跳变沿就发生在同步段,该段持续时间为 1 TQ。同步段用于同步总线上的各个节点,一个位的跳边沿在此时间段内。

  • 2、传播段(Propagation Segment)

传播段(PropSeg)用于补偿各节点之间的物理传输延迟时间。传输延迟时间为信号在总线上传播时间的两倍,包括总线驱动器延迟时间。传播段的长度一般有一个取值范围,不同的控制器不完全一致,典型值为 1 – 8 TQ。

  • 3、相位缓冲段(Phase Buffer Segment1)

相位缓冲段用于补偿节点间的晶振误差,又分为相位缓冲段1(PS1)和相位缓冲段2(PS2),在这个时间段的末端进行总线状态的采样。两个相位缓冲段PS1和PS2用于补偿总线上的边沿相位误差。通过再同步,可以延长 PS1(或缩短PS2)。

同理,不同的控制器,PS1/PS2 的取值范围不完全一致,一般 PS1 为 1 – 8 TQ,PS2 为 2 – 8 TQ。

  • 4、采样点

采样点是位时间内的一个时间点。在该时间点,读取总线电平并进行分析。采样点位于相位缓冲段 PS1 的终点。但当采样模式设置为每位采样 3 次时例外。这种情况下,在 PS1 的终点仍然对某一位进行采样时,前两次的采样时间间隔为 TQ / 2,而该位的值将根据三个采样值中至少两次采样的相同值决定。

  • 5、同步跳转宽度

同步跳转宽度(SJW)可通过编程设定为 1 – 4 TQ,它可对位时钟进行必要的调整来保持与发送报文同步。

例如,假设 FOSC = 20 MHz 时欲实现 125 kHz 的 CAN波特率:

TOSC = 50 ns,选择 BRP<5:0> = 04h,则 TQ = 500 ns。

欲达到 125 kHz,位时间应为 16 TQ。

位的采样时刻取决于系统参数,通常应发生在位时间的 60-70% 处。同时, TDELAY 典型值为 1-2 TQ。

同步段 = 1 TQ,传播段 = 2 TQ,这种情况下设置相位缓冲段 PS1 = 7 TQ,将会在跳变之后的 10 TQ 时进行采样。此时相位缓冲段 PS2 长度为 6 TQ。

由于相位缓冲段 PS2 长度为 6 TQ,根据规则, SJW 最大值为 4 TQ。然而通常状况下,只有当不同节点的时钟发生不够精确或不稳定(如采用陶瓷谐振器)时,才需要较大的 SJW。一般情况下,SJW 取值 1 TQ 即可满足要求。


  • 4
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测机电子枸吴咬风

感谢投喂~喵

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值