SAE J1939协议中关于采样点有着比较详细的描述:
标准位时间分为四段:
同步段:0=位时间中的这部分是用来同步总线上的不同ECU。边沿包含在此段中。
传播段:位时间中的这部分是用来补偿网络中由于总线传播时间和ECU内部延迟时间造成的物理延迟时间。
相位缓冲段1和相位缓冲段2:用来补偿边沿的相位误差,它能够由重新同步来加长或者缩短。
采样点是指读取并解释总线上各位值的一个时间点,位于相位缓冲段1的尾部,一般建议采样点靠近但不超过7/8处的位置。
下面以16MHz晶振为例说明:
16MHz
采样点=7/8=0.875
tq=250ns(这里的tq不是时钟周期,正常时钟周期应该是1/16000000=62.5ns,这里的tq指的是指令周期,这里一个指令周期为4个时钟周期,所以是250ns)
tsync=250ns
相位缓冲段1=7/8*4us=3.25us(这里的4us是因为使用250kbps的波特率,1/250000=4us)
相位缓冲段2=500ns(因为一共4us,相位缓冲段1之前已经有了3.5us,这里也说明相位缓冲段的时间可以变换)