打印
[Kinetis]

KEA06内的CAN的 time stamp 是怎样实现CAN网络的时间同步

[复制链接]
1045|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yupc_mcu21|  楼主 | 2015-10-21 09:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
FSL_TICS_ZJJ| | 2015-10-21 15:59 | 只看该作者
楼主你好,关于MSCAN的同步,你可以看看这个链接:

http://blog.chinaunix.net/uid-22889411-id-59742.html

CAN总线规范中定义的同步保证了报文可以不管节点间积累的相位误差正确地译码,振荡器漂移、空间地分布在网络的节点间的传播延迟或者噪声干扰都会产生相位误差,CAN规范定义了两种类型的同步:硬同步和重同步。
硬同步只在报文贞的开始执行,在空闲周期后,网路中每个CAN控制器会用接收到的SYNC_SEG第一个隐性到显性跳变沿初始化它当前的位周期定时。
重 同步是在随后的报文剩余部分每接收到一个隐性到显性的跳变沿就执行一次。如果这个边沿在TSEG1中接收到,即在SYNC_SEG后但在接收器的采样点 前,接收器就会把它解释成是一个慢速的发送器发送的滞后边沿,因此接收器会将TSEG1段延长到最匹配发送器的时间。相反,若果边沿在采样点之后接收器的 SYNC_SEG前收到,即在TSEG2中,接收器会将它解释成一个快的发送器发送的下一个位周期的提前边沿,这种情况下,接收器会将TSEG2段缩短到 最匹配发送器的时间。
重同步的位间隔可以被增长或者缩短的最大TQ数量由SJW的值指定。由于CAN位周期的所有段都被量化,即由整数个TQ组成,重同步只在绝对的相位误差大于1个TQ时产生,因此,甚至在有相同振荡器基准频率的两个网络节点间,也不能确定有一个TQ同步

使用特权

评论回复
板凳
yupc_mcu21|  楼主 | 2015-10-21 17:36 | 只看该作者
谢谢 FSL_TICS_ZJJ的回答,但是你回复里描述的应该是 CAN 的 bit timing。
KEA128RM文档中关于CAN的 time stamp 或者说是时间戳的描述不多,说是使用一个internal timer来count,在 tx message与rx message的 EOF时间段内把 timer的值给到寄存器中,如下有关timer enable的描述

This bit activates an internal 16-bit wide free running timer which is clocked by the bit clock rate. If the
timer is enabled, a 16-bit time stamp will be assigned to each transmitted/received message within the
active TX/RX buffer. Right after the EOF of a valid message on the CAN bus, the time stamp is written to
the highest bytes (0x000E, 0x000F) in the appropriate buffer. In loopback mode no receive timestamp is
generated. The internal timer is reset (all bits set to 0) when disabled. This bit is held low in initialization
mode.

使用特权

评论回复
地板
小狗爱吃骨头| | 2015-10-21 20:29 | 只看该作者
原来这个时间的同步是通过网卡实现的啊

使用特权

评论回复
5
yupc_mcu21|  楼主 | 2015-10-22 20:32 | 只看该作者
楼上知道CAN 网络 时间同步的应用?

使用特权

评论回复
6
C洛达尔多| | 2015-10-22 20:56 | 只看该作者
CAN总线规范中定义的同步保证了报文可以不管节点间积累的相位误差正确地译码,振荡器漂移、空间地分布在网络的节点间的传播延迟或者噪声干扰都会产生相位误差

使用特权

评论回复
7
yupc_mcu21|  楼主 | 2015-10-23 10:14 | 只看该作者
"CAN总线规范中定义的同步保证了报文可以不管节点间积累的相位误差正确地译码,振荡器漂移、空间地分布在网络的节点间的传播延迟或者噪声干扰都会产生相位误差"
这还是 Bit timing的问题,传播延迟,时钟的jitter产生的误差都是由 hardsync 与 resync来对抗。时间戳不是这个范畴的问题。

使用特权

评论回复
8
侣行天下| | 2015-10-23 10:53 | 只看该作者
硬同步只在报文贞的开始执行,在空闲周期后,网路中每个CAN控制器会用接收到的SYNC_SEG第一个隐性到显性跳变沿初始化它当前的位周期定时。

使用特权

评论回复
9
yupc_mcu21|  楼主 | 2015-10-23 15:15 | 只看该作者
@侣行天下:
“硬同步只在报文贞的开始执行,在空闲周期后,网路中每个CAN控制器会用接收到的SYNC_SEG第一个隐性到显性跳变沿初始化它当前的位周期定时”
你说的这个就是hard sync,用来调整 每个bit time 内 Tq的个数,从而调整相位误差,不是时间戳的事

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

19

帖子

0

粉丝