下图是AUTOSAR文档中描述的基于CAN总线的时间同步机制。
关于这个图的解释:
疑问点:
为什么在Master侧,(t1r-t0r)这段时间(从有发送动作–收到confirmation)需要纳入计算,但在Slave侧,(t2r-t1r)这段时间(从节点收到报文–indication–真正把global time给User的时间)不需要纳入计算?
解答:
Master有发送动作后,CAN报文不一定就能成功发送到总线上,有可能被其他优先级更高的CAN报文抢占。好运气不好的话,有可能阻塞很久。这个时间不可预估,因此需要纳入计算。
而Slave从收到报文,到触发Indication, 到真正使用这个时间,这期间的耗时纯属是处理器上代码的运行时间,可以容忍忽略不计。
这也是为什么AUTOSAR规范上要求CAN报文的发送、接收尽量使用interrupt模式,而非polling模式,以提高精准度,见下图:
关于Tx Confirmation和Rx Indication的阐述,可参考网友的这篇文章:
https://www.360doc.cn/article/82774626_1085607589.html