此文是参考同事ZH的一个计算文档而成的。这里主要介绍一下CAN的时钟精度的要求。
最近较忙,很多细致的整理和细化工作可能要留待以后了,抛砖引玉吧,把主要的参考文档和分析过程摘录出来了,一直也没有太多涉及这块,前面一直在看晶振方面的资料,把这个话题通过通讯总线的时钟精度的方式引出来。

我们知道一个CAN的位有四个段组成:
Sync_Seg:用于同步总线上的各种节点。
Prop_Seg:对物理延迟进行补偿(物理总线和内部CAN 节点上的传播延迟)。
Phase_Seg1,Phase_Seg2:用于补偿相位边缘误差。在在同步过程中,会缩短或加长这些段。
时钟和CAN的位时序的关系如下:

所有的CAN 位时序计算均基于时间量(TQ),它定义为固定的时间单位,由振荡器导出,取值介于8 和25 之间。按照时间方面的观点,1 个TQ 等效于1Mbps 总线速度下1 微秒位长度的1/25th 位或40 纳秒。


1.总线发生错误的时候【电气干扰】,位填充保证了在重新同步之间有最大10位的时间(5显性位+5隐性位后+1显性位)
2.来自错误节点的错误标志由6个显性位组成,在错误标志位之前可能最多有6个显性位。如果发生错误的时候,一个节点必须在重新同步后正确采样第13个位。
一般计算位定时参数有六个步骤:
第1步:确定PROP_SEG段的最低允许的时间。
第2步:选择的CAN系统时钟频率
第3步:计算PROP_SEG时间
如果结果大于8,回到第2步,然后选择一个较低的CAN系统时钟频率。
第4步:确定PHASE_SEG1,PHASE_SEG2
第5步:确定RJW
第6步:计算需要从方程振荡器宽容
以上过程的计算过程如下:

可参考的文档:
The Configuration of the CAN Bit Timing
[attach]103325[/attach]
CAN Bit Timing Requirements
[attach]103328[/attach]
用户1485549 2010-9-5 10:59
用户1173460 2010-9-2 08:08