CAN通讯之位定时与同步Word格式.docx
- 文档编号:18825535
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:13
- 大小:675.35KB
CAN通讯之位定时与同步Word格式.docx
《CAN通讯之位定时与同步Word格式.docx》由会员分享,可在线阅读,更多相关《CAN通讯之位定时与同步Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
图1位时间
1位由多少个Tq构成,每个段又由多少个Tq构成等,可以任意设定位时序。
通过设定位时序,多个节点可同时采样,也可任意设定采样点。
也就是说图2中各个节点都可以通过不同的配置可能获得不同的位速率和采样精度,后面通过实例来讲解。
图2
关于各段的作用和可配置Tq范围如下图:
图3各段的定义信息,引自[2]
所谓采样点是读取总线电平,并将读到的电平作为位值的点,位置在PBS1结束处。
图4采样点的设定,引自[2]
CAN协议的通信方法为NRZ(Non-ReturntoZero)方式,各个位的开头或者结尾都没有附加同步信号。
发送单元以与位时序同步的方式开始发送数据。
另外,接收单元根据总线上电平的变化进行同步并进行接收工作。
但是,发送单元和接收单元存在的时钟频率误差及传输路径上的(电缆/驱动器等)相位延迟会引起同步偏差,因此接收单元通过硬件同步或者再同步的方法调整时序进行接收。
2.硬同步
硬同步是指在总线空闲状态,接收节点检测出帧起始位(SOF)时,会调整当前位的同步段(SS)与发送节点的帧起始位SS段一样,调整宽度不限。
如下图5。
图5SOF位的硬同步,来源[1]
引自[1]的具体解释:
1)发送节点Node_A在发送SOF位时,SOF位的下降沿在SS段;
2)这时接收节点Node_B发现自己当前位的SS段和发送节点SOF位的SS段不同步。
也就是说当Node_A
产生SOF位SS段时,Node_B的当前位的SS段已经在5个Tq之前产生了;
3)这样接收节点Node_B硬将自己当前位的SS段拉到与SOF位的SS段同步。
3.再同步
再同步是指接收节点检测出除SOF位以外的其他位时进行的同步调整。
再同步会通过加长PBS1段,或缩短PBS2段来调整同步,以保证采样点的准确。
这里加长或缩短(即跳转)操作涉及到一个概念-同步跳转宽度(SJW)是指PBS1和PBS2再同步时允许跳转的最大宽度,其必须满足以下2个条件:
∙SJW必须小于PBS1和PBS2的最小值;
∙SJW最大值不能超过4。
下面看下再同步的两种情况:
情况1:
PBS1段加长(发的晚,收的早)
图6PBS1段加长的再同步,引自[1]
1)发送节点Node_A比接收节点Node_B的时间慢了,也就是说Node_A当前位的ss段产生的时候,Node_B
当前位的SS段已经在2个Tq之前产生了;
2)这时接收节点Node_B就将PBS1延长2个Tq的时间;
3)这样Node_A当前位的采样点就和Node_B的采样点同步了。
情况2:
PBS2段缩短(发的早,收的晚)
图7PBS2段缩短的再同步,引自[1]
1)发送节点Node_A当前位的SS段诞生2Tq时长之后,接收节点Node_B的当前位才产生SS段;
2)这时接收节点Node_B当前位的PBS2段缩短,
3)这样就导致接收节点Node_B的下一位能够提前2个Tq,从而Node_B的下一位采样点和Node_A下一位
的采样点能够同步。
4.调整同步的规则
硬件同步和再同步遵从如下规则。
∙
(1)1个位中只进行一次同步调整。
∙
(2)只有当上次采样点的总线值和边沿后的总线值不同时,该边沿才能用于调整同步。
∙(3)在总线空闲且存在隐性电平到显性电平的边沿时,则一定要进行硬件同步。
∙(4)在总线非空闲时检测到的隐性电平到显性电平的边沿如果满足条件
(1)和
(2),将进行再同步。
但还要满足下面条件。
∙(5)发送方观测到自身输出的显性电平有延迟时不进行再同步。
∙(6)发送方在帧起始到仲裁段有多个单元同时发送的情况下,对延迟边沿不进行再同步。
5.位时间应用实例
根据Infineon芯片手册提供的位时间寄存器信息,如下图8所示。
下面讲解下如何配置位时间的寄存器以实现位速率和采样点的要求。
其实配置的逻辑是根据目标位速率和采样点按已定义的方法去计算位时间寄存器的配置内容。
图8位时间寄存器,引自[3]
假设有这样一条需求:
要求CAN通讯的位速率为500KBaud,采样点为50%。
(注:
由于引用材料问题,timequantum在上文用Tq表示,下文用tq表示,两者意义一样)
5.1计算
Infineon芯片手册提供的CAN总线位时间标准格式定义如下图9,后面根据该定义进行求解。
图9CAN总线位时间标准
假设:
晶振时钟周期频率为40MHz,转换为时间表示则为T=1/40MHz=25ns(即芯片运行的最小时间单位为25ns),名义位时间(NominalBitTime,NBT)为16(即一个位有16个tq,timequantum)。
因为要设置的位速率为500KBaud,换算时间表示则为1/500KBaud=2000ns,即传输一个位的时间要2000ns。
那意味着16个tq就等于2000ns,即tq=125ns。
根据芯片手册,有定义:
这里,
就是晶振时钟周期时间,从上面可知为25ns。
BRP为位速率分频值(BaudRatePrescaler),该值可配置。
由上述定义可得:
tq/T=125ns/25ns=5,因为BRP只能为整数,这时只能取DIV8=0,BRP=4。
又有NBT=16,采样点取在50%处,结合图9和上面的公式计算:
50%=Tseg2/NBT=[(TSEG2+1)tq]/16*tq=(TSEG2+1)/16
Tseg1=NBT-Tseg2-Tsync=7tq
即可得:
TSEG2=7,TSEG1=6。
再根据下式计算SJW,这里直接假设TSJW=3*tq能保证下式两个不等式成立(不在此处展开Tprope的讨论),那么SJW=2。
综上有:
DIV8=0,BRP=4,TSEG1=6,TSEG2=7,SJW=2。
如有必要,最后利用下式验算最大相对误差:
5.2寄存器配置
根据上节的计算结果进行位时间寄存器的配置,配置如下图10。
这样就成功设置了CAN通讯的位速率为500KBaud,采样点设置在50%处。
图10位时间寄存器配置
6.补充:
传输延迟时间tPTS
图11传输延迟时间示意,引自[1]
CAN报文在CAN总线上的传输时,物理延迟包含两个部分:
∙在CAN-BUS上传输造成的延迟
∙在节点上传输造成延迟
按照CAN通信协议的规定,补偿给传播延迟的时间长度要至少等于实际实际传播延迟时长的2倍,即:
tPTS≥2×
tdel=2×
(tdel+tBus)
注意:
在CAN总线通信系统中是以时间量子Tq来度量时间的,所以如果延迟补偿时间tPTS=3.1Tq,那么这个时候要取:
tPTS=4Tq。
以上这些就是传输延迟时间的补充。
总结
到这,就基本涵盖了CAN通讯的基础知识,这里对本系列这几篇文章作个回顾,如下所示:
了解或掌握这些知识后,我相信在CAN通讯软件开发的过程中或多或少会有所帮助。
因为从原理,硬件(物理层)对事物有所理解,建立了这样的基石后,才能更深刻地更全面地探索更高级的内容。
就以这样一种承上启下的方式,在下篇文章让我们开始探索基于AUTOSAR架构的CAN通讯软件实现。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CAN 通讯 定时 同步