前两天抽时间参加了CiA technology day线上网络会议交流,然后发现自己之前对于CAN/CANFD采样点的理解不是很理想,特别是关于CANFD的第二采样点的理解过于浅薄,这两天查了些资料,特做此记录。

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)的最小时间单位构成,如下图所示:  1位由多少个Tq构成、每个段又由多少个Tq构成等,可以任意设定位时序。通过设定位时序,多个单元可同时采样,也可任意设定采样点。各段的作用和Tq数如下表所示: 

  • 每个比特的位沿 (上升沿,下降沿)应位于1个时间量的同步段内;
  • 同步段之后是传播段, 该部分必须足够大,以处理由延迟引起的所有相位偏移;
  • 两个相位段(PSEG1,PSEG2)应足够大,以覆盖所有位偏移和由SJW补偿的时钟偏移。
  • 同步跳变宽度(SJW):作为重新同步的结果,可以延长PSEG1或缩短PSEG2。相位缓冲器段的延长和缩短的量具有由同步跳变宽度给定的上限。

2.采样点

采样点是接收节点判断信号逻辑的位置,采样点对CAN/CANFD总线来说极其重要,尤其是在组网的时候,网络中多个节点尽量保持同一个采样点,若网络中节点采样点不一致会导致同样的采样频率出现采样错误,进而会使整个网络出现故障。所谓采样点是读取总线电平,并将读到的电平作为位值的点。位置在相位缓冲段1结束处。其计算公式为:Sample Point = (1+TSEG1) / (1+TSEG1+TSEG2)。 

3.传输延迟

在传统CAN里面,ISO 11898-5:2007规定了最大总线传输延迟是255ns,对于最高波特率为1Mbit/s来说,此时对应的位宽为1us/bit,按照极限情况下计算每位由8个Tq组成,则每个Tq为125ns,而总线最大传输延迟是255ns,则传播时间段设置2Tq(250ns)就可以吸收该延迟。

  • CAN驱动器发送端TX到总线延时在20到200ns纳秒之间
  • CAN驱动器在总线到接收端RX延时在20到200ns纳秒之间
  • 绝缘隔离在CAN控制器与CAN驱动器之间大概有10到40ns纳秒的延时

但当使用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) 发送器延时补偿

在CANoe软件中对此也有相关配置,如下图所示:辅助采样点偏移(SSP)用于补偿传输节点延迟(TD)。为了补偿TD,发送器必须能够将其发送的位与CAN网络上的当前位进行比较。然后从发射机接收比特的开头开始测量SSP。从波特率1Mbit/s开始,TD补偿会自动激活。因此,对于SSP偏移,将使用默认值。为什么需要“传输节点延迟(TD)”和“二次采样点(SSP)”?为了检测发送错误,CAN控制器接收其自身发送的帧的位并将其与所需值进行比较。传输节点延迟(TD)是从控制器的Tx FlipFlop到Rx FlipFlop的信号传播延迟。TD包含控制器和收发器的延迟时间。在CANFD数据阶段的比特率为1Mbit/s或更高的情况下,TD可能大于物理比特时间。为了将发送的位值与接收的位电平进行比较,需要对TD进行补偿——所谓的发送节点延迟补偿Transmitting Node Delay Compensation (TDC)。CAN控制器测量TD并据此知道回读位的开始——所谓的辅助采样点Secondary Sample Point (SSP)。因此,从发送位的开始到回读位(SSP)的采样点的时间间隔为SSP = TD + SSP偏移。

4.位定时设置建议

  1. 设置Tq_A(Tq Arbitration Phase) = Tq_D(Tq Data Phase),用来减少量化错误;
  2. 使Tq_A尽可能短,这可以将量化错误最小化;
  3. 选择最高可用的CAN时钟频率(例如40 MHz或80 MHz);
  4. 在仲裁阶段,所有节点应具有完全相同的采样点;
  5. 数据阶段的采样点应放置在,该位的开始处在尽可能的晚的边缘后,和该位的结束处尽可能的早的边缘的中间,在这段时间中,当总线信号稳定的时候。
  6. 启用TDC(基于测量)以获得高于1 Mbit/s的数据阶段比特率。

CiA 601-2文档中关于数据阶段抽样点范围和推荐的寄存器长度如下:不同时钟晶振下的推荐值如下: 参考文献:[1]20201022_CiA_Tech_day(Chinese).ppt[2]ISO 11898-1:2015[3]ISO 11898-2:2016[4]ISO 11898-5:2007[5]CiA 601-3 (version 1.0.0): System design recommendation[6]CiA 601-4 (version 2.0.0): Signal improvement如有疑问,可添加我个人微信,希望能与同行前辈多多交流,共同进步!

can收发器 rx_CAN/CANFD采样点相关推荐

  1. CAN通信稳定性开发分析

    本篇文章从嵌入式工程师的角度,借鉴了一些成熟的通信概念与架构,从包括硬件,软件各个角度分析嵌入式程序如何实现稳定CAN通信的难点以及方案,将相关的难点分别进行梳理,读者在完整读完这篇文章之后能够对实现 ...

  2. 简单聊聊FPGA的一些参数——后篇

    上一篇:https://mp.weixin.qq.com/s/prBScH4D4ixxtbdW_7n9Yg 2. I/O 和体系结构特性 安全器件管理器 英特尔 Stratix 10 器件系列在所有密 ...

  3. [CANFD] 高波特率下收发器延时的处理机制-Transceiver delay compensation

    CANFD数据段支持可变速率,最高可达12Mb/s.我们知道CAN控制器会将收发器RX pin的数据采样接收,用于判断TX pin的数据是否被成功发送,以便实现冲裁判断和错误处理.RX的回环检测是保证 ...

  4. CANfd 一次采样点和二次采样点

    CANfd 一次采样点和二次采样点 采样点的定义 采样点是CAN控制器读取总线电平,并解释各个比特的逻辑值的时间点. 首先我们需要了解Tq的概念,Tq是can控制器的最小时间周期称作时间份额(Time ...

  5. 川土微电子 | CA-IF1051 CAN-FD收发器

    01产品概述 这款CAN收发器专为高速CAN应用而设计,所有器件均支持经典 CAN 和 5Mbps CAN FD,在有负载 CAN 网络中能够实现更快的数据速率.该器件具有静音模式,共模输入电压可达± ...

  6. 全网唯一OpenCyphal/UAVCAN教程(10)canfd协议详解

    OpenCyphal除了支持can 2.0 B,还支持canfd扩展协议.所以先学习下canfd协议. 文章目录 1.CAN-FD协议特性 2.CAN-FD帧结构分析 1.CAN-FD协议特性 随着电 ...

  7. canfd收不到数据_CAN-FD协议浅析

    引言 随着电子.半导体.通讯等行业的快速发展,汽车电子智能化的诉求也越来越强,消费者希望驾驶动力性.舒适性.经济性以及娱乐性更强的汽车.汽车制造商为了提高产品竞争力,将越来越多的电子控制系统加入到汽车 ...

  8. 关于CAN和CANFD物理层和数据链路层的对比分析

    关于CAN和CANFD物理层和数据链路层的对比分析 物理层:CAN和CANFD的物理层相同,只是进行了协议升级.所以硬件方面并未发生改变.需要一个CAN收发器.CAN控制器.其中CAN控制器是CAN局 ...

  9. STM32H750 更好用的CANFD 用例详解

    目录 前言 Message RAM分配 STM32工程搭建 串口配置 100us定时器 FDCAN配置 Bus-Off处理 新消息接收处理 发送处理 使用Xavier配合测试一下 完整工程下载 关于用 ...

最新文章

  1. 比较高明的暗部提亮方法:选取暗部,滤色叠加
  2. C#访问远程共享加锁文件夹
  3. 不用公钥批量部署机器执行命令_模版
  4. sql server 2008 年累计数_MySQL高阶问题:server层和存储引擎层是如何交互的?
  5. 二级测试-简单注册tmp1904
  6. android中的so加固,so加固-加密特定section中的内容
  7. nyist oj 19 擅长排列的小明(dfs搜索+STL)
  8. python3数据结构菜鸟教程_Python3
  9. Python 优雅获取本机 IP 方法【转】
  10. STL容器 之 list
  11. SEO关键词优化 - 利用免费资源刷排名
  12. 网站在线协作工具 onlyoffice在线协作
  13. ensp服务器配置文件,ensp中服务器的基本配置
  14. 从零到一,美芽的技术实战
  15. 史上最全 Vue 前端代码风格指南
  16. Python3:类和对象-烤地瓜
  17. vscode关闭讨厌的单词拼写检查
  18. 锂离子电池热失控的机理
  19. 13种内存卡复活方法
  20. Python基础——继承、多态

热门文章

  1. MATLAB Simulink开发ROS无人车与机器人应用 详细教程
  2. java根据url获取pdf流_从URL获取动态创建的PDF
  3. shell wait的用法及使用“和wait”并行运行
  4. 老邹寻找Magento商业合作伙伴
  5. 用Python实现微信公众号WCI指数计算器
  6. 计算机网络——排查网络故障
  7. 由于无法验证发布者,Windows已经阻止此软件
  8. 洛谷 P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布
  9. 括弧匹配检验(C语言)
  10. 14个同陌路人匿名聊天在线工具排除你的寂寞和无聊