当前位置:网站首页>[CAN总线的物理层 ]1.CAN/CANFD采样的点的内容分享
[CAN总线的物理层 ]1.CAN/CANFD采样的点的内容分享
2022-07-23 05:43:00 【余生】
好的,最近一直忙于工作上的事情,没有时间记录自己的学习,好在今天星期六,昨天遇到项目组的一个问题,关于MCAL配置CANFD采样点的事情,那么今天我们就从OSI的物理层“微观上”了解下CAN总线协议吧
了解采样点的事情,我们首先想想为什么需要采样点:
答:由于CAN属于异步通讯,没有时钟信号线,连接在同一个总线网络中的各个节点会像串口异步通讯那样,节点间使用约定好的波特率进行通讯,特别地,CAN还会使用“位同步”的方式来抗干扰、吸收误差,实现对总线电平信号进行正确的采样,确保通讯正常。为了实现位同步,CAN协议把每一个数据位的时序分解成4个段
1.位时序
由发送单元在非同步的情况下发送的每秒钟的位数称为位速率。一个位可分为4段,分别为:
·同步段(SS:Synchronization Segment)
·传播时间段(PTS:Propagation Time Segment)
·相位缓冲段1(PBS1:Phase Buffer Segment 1)
·相位缓冲段2(PBS2:Phase Buffer Segment 2)
1位分为4个段,每个段又由若干个Tq构成,这些段又由可称为Time Quantum(以下称为Tq)的最小时间单位构成,如下图自己理解所示:
CAN波特率 = 1/位时间 或者:CAN波特率 = 1/nTQ,波特率指的是一个位bit的传输时间
1位由多少个Tq构成、每个段又由多少个Tq构成等,可以任意设定位时序。通过设定位时序,多个单元可同时采样,也可任意设定采样点。
各段的作用和Tq数如下表所示:

- 每个比特的位沿 (上升沿,下降沿)应位于1个时间量(TQ)的同步段内;
- 同步段之后是传播段, 该部分必须足够大,以处理由延迟引起的所有相位偏移;
- 两个相位段(PSEG1,PSEG2)应足够大,以覆盖所有位偏移和由SJW补偿的时钟偏移
- 同步跳变宽度(SJW):作为重新同步的结果,可以延长PSEG1或缩短PSEG2。相位缓冲器段的延长和缩短的量具有由同步跳变宽度给定的上限。
2.采样点
这一个章节非常的重要,如果理解不好这个下一章节的同步就无法理解,首先我们要明确:== 采样点一定是在PBS1与PBS2之间采样的== 这是Can控制器决定的,所以为了后面的同步,我们就要利用SJW(重新同步补偿宽度)随时改变PBS1与PBS2的相对TQ个数
采样点是接收节点判断信号逻辑的位置,采样点对CAN/CANFD总线来说极其重要,尤其是在组网的时候,网络中多个节点尽量保持同一个采样点,若网络中节点采样点不一致会导致同样的采样频率出现采样错误,进而会使整个网络出现故障。
所谓采样点是读取总线电平,并将读到的电平作为位值的点。位置在相位缓冲段1结束处。其计算公式为:Sample Point = (1+TSEG1) / (1+TSEG1+TSEG2)。

3. 同步
波特率只是约定了每个数据位的长度,数据同步还涉及到相位的细节,这个时候就需要用到数据位内的 SS、PTS、PBS1 及 PBS2段了。根据对段的应用方式差异,CAN的数据同步分为硬同步和重新同步。同步的目的都是使节点内的 SS段把跳变沿包含起来,其中硬同步只是当存在“帧起始信号”时起作用,无法确保后续一连串的位时序都是同步的,而重新同步
方式可解决该问题,这两种方式具体介绍如下:
1.硬同步(通过平移SS段)
若某个 CAN节点通过总线发送数据时,它会发送一个表示通讯起始的信号,该信号是一个由高变低的下降沿。而挂载到 CAN总线上的通讯节点在不发送数据时,会时刻检测总线上的信号。可以看到当总线出现帧起始信号时,某节点检测到总线的帧起始信号不在节点内部时序的 SS 段范围,所以判断它自己的内部时序与总线不同步,因而这个状态的采样点采集得的数据是不正确的。所以节点以硬同步的方式调整,把自己的位时序中的 SS段平移至总线出现下降沿的部分,获得同步,同步后采样点就可以采集得正确数据了。

2.重新同步(通过改变PBS1或PBS2的长度)
前面的硬同步只是当存在帧起始信号时才起作用,如果在一帧很长的数据内,节点信号与总线信号相位有偏移时,这种同步方式就无能为力了。因而需要引入重新同步方式,它利用普通数据位的高至低电平的跳变沿来同步(帧起始信号是特殊的跳变沿)。重新同步与硬同步方式相似的地方是它们都使用 SS段来进行检测。重新同步的方式分为超前和滞后两种情况,以总线跳变沿与 SS段的相对位置进行区分。
相位超前情况如图 ,节点从总线的边沿跳变中,检测到它内部的时序比总线的时序相对超前 2Tq,这时控制器在下一个位时序中的 PBS1 段增加 2Tq 的时间长度,使得节点与总线时序重新同步。
相位滞后情况如图,节点从总线的边沿跳变中,检测到它的时序比总线的时序相对滞后 2Tq,这时控制器在前一个位时序中的 PBS2段减少 2Tq的时间长度,获得同步
在重新同步的时候,PBS1和 PBS2 中增加或减少的这段时间长度被定义为“重新同步补偿宽度 SJW (reSynchronization Jump Width)”。一般来说 CAN控制器会限定 SJW 的最大值,如限定了最大 SJW=3Tq时,单次同步调整的时候不能增加或减少超过 3Tq 的时间长度,若有需要,控制器会通过多次小幅度调整来实现同步。当控制器设置的 SJW极限值较大时,可以吸收的误差加大,但通讯的速度会下降。
4.补充(不要求掌握)
1.传输延迟
在传统CAN里面,ISO 11898-5:2007规定了最大总线传输延迟是255ns,对于最高波特率为1Mbit/s来说,此时对应的位宽为1us/bit,按照极限情况下计算每位由8个Tq组成,则每个Tq为125ns,而总线最大传输延迟是255ns,则传播时间段设置2Tq(250ns)就可以吸收该延迟
但当使用CANFD总线时,假设波特率设为5Mbit/s时,则此时对应的位宽为200ns/bit,如果每位仍然由8个Tq组成计算,则25ns/Tq,而最大传输延迟是255ns,即相当于总线最大传输延迟为10Tq。原来的传播时间段(1~8Tq)显然无法覆盖,该如何解决这个问题?
1.增加传播时间段的Tq组成数量,但这样会导致位的Tq组成数量增加,反而会降低波特率;
2.测出传输的时延,然后进行补偿。

如果考虑总线的时延,则CANFD的数据段(高波特率)采样点相比于仲裁段(低波特率)的采样点会进行后移,具体如下图所示:

关键词:
·Transmitter delay (TD) 发送器延时
·Bit asymmetry 比特的不对称性
·Unstable RX signal due to ringing 由振铃引起的不稳定RX信号
·SP(sample point; not considering TDC) 采样点
·SSP(secondary SP; taking TDC into account)第二/辅助采样点
·TDC(transmitter delay compensation) 发送器延时补偿
边栏推荐
- Interpretation of the paper: using attention mechanism to improve the identification of N6 methyladenine sites in DNA
- Integrate all lvgl controls into one project (lvgl6.0 version)
- #under指令
- 单片机学习笔记9--串口通信(基于百问网STM32F103系列教程)
- In depth interpretation of Google or tools' complex scheduling program
- Using or tools to solve path planning problem (VRP)
- 利用or-tools来求解路径规划问题(VRP)
- The online seminar on how to help data scientists improve data insight was held on June 8
- How to develop the liquid cooled GPU server in the data center under the "east to West calculation"?
- Matplotlib Usage Summary
猜你喜欢

建设“绿色计算”,解读“智算中心”

How to develop the liquid cooled GPU server in the data center under the "east to West calculation"?

高分子物理名词解释归纳

The green data center "counting from the east to the west" was fully launched

Six trends and eight technologies of high-performance computing in data centers under "data center white paper 2022" and "computing from the east to the west"

高等代数100道题及答案解析

论文解读:《功能基因组学transformer模型的可解释性》

数据挖掘场景-发票虚开

Maybe I can't escape class! How to use paddlex to point the head?

CPC client installation tutorial
随机推荐
Notes | (station B) Adult Liu: pytorch deep learning practice (code detailed notes, suitable for zero Foundation)
NLP自然语言处理-机器学习和自然语言处理介绍(二)
绿色数据中心:风冷GPU服务器和水冷GPU服务器综合分析
C语言中,对柔性数组的理解
高分子物理名词解释归纳
Interpretation of the paper: develop a prediction model based on multi-layer deep learning to identify DNA N4 methylcytosine modification
NVIDIA 英伟达发布H100 GPU,水冷服务器适配在路上
“東數西算”下數據中心的液冷GPU服務器如何發展?
深度学习-神经网络
Connaissance du matériel 1 - schéma et type d'interface (basé sur le tutoriel vidéo complet de l'exploitation du matériel de baiman)
绿色数据中心“东数西算”全面启动
Lvgl8.1 version notes
CPC client installation tutorial
Use pyod to detect outliers
论文解读:《基于注意力的多标签神经网络用于12种广泛存在的RNA修饰的综合预测和解释》
高分子物理考研概念及要点、考点总结
利用pycaret:低代码,自动化机器学习框架解决分类问题
Build "green computing" and interpret "Intelligent Computing Center"
Notes | Baidu flying plasma AI talent Creation Camp: How did amazing ideas come into being?
Use steps of Charles' packet capturing