资料目录
单片机应用
CAN-bus同步
发布日期:2011/11/22
在CAN的数据流中不包含时钟,CAN总线规范中定义的同步保证报文可以不管节点间积累的相位误差正确地译码。CAN规范定义了两种类型的同步:硬同步和重同步。
硬同步只在报文帧的开始执行。在一个空闲期间,总线上所有控制器利用SYNC_SEG段上从隐性位到显性位的跳变沿来初始化位周期定时,执行一次硬同步。
重同步发生在报文位流发送期间的每一个隐性位到显性位的跳变沿后。重同步根据引起同步边沿的相位误差,要么增加tTSEG1,要么减少tTSEG2,使采样点处于恰当的位置。同步边沿的相位误e , 由相对于同步边沿的位置而定,以系统时钟周期(TSCL ) 度量。其定义及重同步处理方式如下:
e = 0,同步边沿发生在SYNC_SEG内;
e > 0 , 同步边沿发生在TSEG1内;
e < 0 , 同步边沿发生在TSEG2内。
如果引起重同步的边沿相位误差e 的幅值小于或等于t SJW 编程数值, 则重同步导致位时间缩短或延长,与硬同步的作用一样;如果e 为正值,且幅值大于tSJW,则
增加tTSEG1 值为tSJW;如果e 为负值,且幅值大于tSJW,则减少值为tSJW。
在位定时参数计算中, SJW的结果是一个范围,选择一个较小的SJW可以限制由毛刺引起的错误同步对系统的影响。