文章目录
背景
CAN总线的时钟同步需求
CAN总线采用异步通信机制,各节点基于本地晶振生成位时间(Bit Time)。由于晶振的制造公差、温度漂移等因素,不同节点的实际时钟频率可能存在±100ppm(百万分之一)甚至更大的偏差。例如,标称1 MHz的时钟在±100ppm误差下,实际频率范围为0.9999 MHz至1.0001 MHz。这种频率差异会导致节点间的位时间逐渐偏离,若不及时补偿,将引发位采样错误,最终导致通信失败。
同步机制的分类
CAN协议定义了两种同步机制以应对时钟偏差:
硬同步(Hard Synchronization)
仅在帧起始(SOF,Start of Frame)的下降沿触发,强制所有节点将当前位时间重置为同步段(Sync_Seg)的起点。此过程确保所有节点在帧开始时对齐。
重同步(Resynchronization)
在帧传输的后续位边沿(如数据位或ACK位)检测到相位偏差时触发,通过调整相位缓冲段的长度,逐步校准时钟差异。
SJW的核心功能
SJW限定了单次重同步过程中允许的最大相位调整量,其作用包括:
限制调整幅度:防止因单次过大的相位跳变导致采样点偏移超出安全范围。
避免累积误差:通过逐步调整,降低高频次小幅调整对总线稳定性的影响。
增强兼容性:允许不同时钟精度的节点共存于同一网络中。