【图解CAN总线】-10-详解CANFD的TDC以及SSP(收发器延迟补偿和第二采样点)

news2024/11/24 19:59:58

目录

1 CAN Transceiver收发器结构

1.1 CAN收发器对本ECU发送CAN报文的“回采”

1.2 什么是Loop delay环路延迟

1.2.1 Loop delay环路延迟的典型值

2 什么是TDC:Transceiver Delay Compensation收发器延迟补偿

2.1 总结:Transceiver Delay Compensation启用条件

2.2 Secondary sample point test第二采样点测试方法

2.3 Infineon英飞凌TC2xx系列芯片 – TDC配置寄存器摘录

END


注:Transceiver Delay CompensationTransmitter Delay Compensation

推荐阅读(单击下方文字即可跳转至对应博文):

Vector工具链

CAN Matrix DBC

CAN Matrix Arxml

CANFD/经典CAN/CANXL

1 CAN Transceiver收发器结构

NXP恩智浦TJA1145A为例(见图1-1),来介绍CAN收发器。TJA1145A是一款高速CAN收发器,可在控制器局域网(CAN)协议控制器物理双线式CAN总线之间提供接口。该收发器专门设计用于汽车行业的高速CAN和CAN FD应用,可为微控制器中的CAN协议控制器提供具有差异化优势的信号发送和接收能力。

TJA1145A在CAN FD快速相位下,即使数据速率高达5 Mbit/s,也能实现可靠的通信。

TJA1145A在待机模式休眠模式下具有超低的功耗,通过使用选择性唤醒功能,支持符合ISO 11898-6标准的CAN Partial networkingPN

图1-1

下图(见图1-2)为TJA1145A高速CAN收发器功能框图。

图1-2

Pin编号

Pin名称

描述

1

TXD

MCUCAN控制器发送报文。CAN收发器通过该pin接收发送报文的0和1数字电平序列,并通过CANH和CANL转换为差分电平。

2

GND

Ground地

3

VCC

CAN收发器的5V供电

4

RXD

节点接收报文,以及CAN收发器回采的报文。CAN收发器通过该pin将差分电平转换为0和1数字电平序列给到MCUCAN控制器

5

VIO

输入/输出电平适配器的供电电压

6

SDO

SPI通信。CAN收发器作为从机,通过该pin发送数据给主机MCU。

7

INH

用于切换外部稳压器的高边输出。CAN总线或WAKE引脚上的唤醒事件将INH引脚切换到BAT电平。系统上电后(BAT从零上升),INH引脚自动切换到BAT电平。

8

SCK

SPI通信。MCU作为主机,通过该pin提供Clock时钟。

9

WAKE

Local Wake-up输入

10

BAT

车辆低压12V电池供电输入

11

SDI

SPI通信。CAN收发器作为从机,通过该pin接收来自主机MCU的数据。

12

CANL

CAN低

13

CANH

CAN高

14

SCSN

SPI通信。MCU作为主机,通过该pin提供片选信号。

1.1 CAN收发器对本ECU发送CAN报文的“回采”

回采”的理论基础。在CAN协议规范(ISO 11898-1-2015中,有如下图的要求:

 “监视(发送器将发送的位电平与网络上检测到的位电平进行比较);”

abit error位错误

在总线上,一个节点发送一个位也应监视总线。当监视的位值与发送的位值不同时,就会在该bit time检测到bit error位错误。”

上述这些要求,在CAN controllerCAN transceiver之间是如何实现的?我们将图1-2的左下角部分进行单独的分解,得到图1-3:

Step1:ECU准备发送一帧报文,CAN控制器按照经典CAN/CANFD帧格式,通过TX发送0和1数字电平序列给到CAN收发器

Step2CAN收发器中的Transmitter将0和1数字电平序列转换差分电平,通过CANHCANL发送到CAN Bus上;

Step3:与此同时,CAN收发器中的Receiver回读CAN Bus上的差分电平,并转化为0和1数字电平,给到CAN控制器,完成一次“该ECU发送一帧CAN报文的回采”;

Step4CAN控制器比较Step1Step3TXRX上数字电平是否一致,见图1-4,CAN报文发送过程可详见博文“【图解CAN总线】-9-详述经典CAN和CANFD报文是如何收发的”。

图1-3

图1-4

1.2 什么是Loop delay环路延迟

loop delay环路延迟的概念:

在“回采”过程中,CAN收发器经历了两次转换:Transmitter将0和1数字电平序列转换差分电平;Receiver将差分电平转换0和1数字电平序列。因为转换是需要时间的,势必有物理上的延迟。见图1-5,ECU发送一帧报文。TXRx Pin上电平变化:Rx上的数字电平变化会滞后些许时间。

图1-5

图1-6展示的是示波器下,一个CANFD帧局部放大的后效果:RX电平变化相比TX滞后了100多纳秒。

图1-6

1.2.1 Loop delay环路延迟的典型值

另外在TJA1145AData Sheet数据手册中,也给出了Loop delay环路延迟典型值,见图1-7和1-8。该值随着电气参数的变化而变化。

图1-7

图1-8

2 什么是TDC:Transceiver Delay Compensation收发器延迟补偿

在CAN FD数据段,如果使用较快的比特率(启用BRS),导致bit time较短,则local CAN transceiver loop delay造成的延迟将大于Phase_Seg1(见图2-1,采样点前的time segment时间段假设Loop delay环路延迟255纳秒,如果CANFD帧数据段Bit Rate大于等于4Mhz,即一个Bit Time小于等于250纳秒,从而导致检测到bit error位错误transceiver loop delay收发器环路延迟限制了CAN FD帧数据段的Bit Rate比特率

图2-1

因此,为了克服这一限制,引入了TDC(Transceiver Delay Compensation收发器延迟补偿)功能,即CAN FD帧的数据段,发送器应使用一个新的采样点SSPSecondary Sample Point第二采样点),而忽略transceiver loop delay收发器环路延迟SPsample point)。

Secondary Sample Point第二采样点transceiver loop delay收发器环路延迟可配置的transceiver delay compensation offset收发器延迟补偿偏移组成。

Transceiver loop delay收发器环路延迟是在每个发送帧中从EDL位(同FDF)到下一位r0的边沿,对应发送位边沿和接收位边沿之间测量的(见图2-2,图2-3)。测得的loop delay不足以用于定义secondary sample point,因为它与位边沿有关。

图2-2 Transceiver loop delay收发器环路延迟测量

图2-3 示波器下,一个CANFD帧RX电平变化相比TX滞后了120纳秒

Transceiver delay compensation offset收发器延迟补偿偏移用于将secondary sample point从边沿转移到bit time内的中间点,远离其边沿。因此,offset值不能大于data phasebit time

如果secondary sample point设置得非常接近CAN bit边沿(见图2-1,Sync_Seg字段),则在data phase的位采样期间可能会出现问题。为了使TDC可靠地工作,offset必须使用最佳设置。为确保在最佳区域中执行位采样,TDC offset建议参考如下等式,参考图2-1:

Offset = Phase_Seg1 + Prop_Seg + 2

下图2-4显示了使用这些设置时的SSP位置。

图2-4

2.1 总结:Transceiver Delay Compensation启用条件

通过以上章节的描述,总结如下:

条件1:该帧必须是CANFD帧(不适用于经典CAN帧,原因是其bit time远大于Loop Delay),并且启用了BRS位(数据段比特率高于仲裁段比特率),SSP作用在CANFD帧的数据段;

条件2:TDC仅适用于ECU发送的CANFD,不适用ECU接收的CANFD

条件3:在MCU的寄存器中启用TDC功能;

2.2 Secondary sample point test第二采样点测试方法

在《ISO 16845-1-Part 1_Data link layer and physical signalling_2016》标准的”8.8.2 Secondary sample point test”章节描述SSP的测试方法。

2.3 Infineon英飞凌TC2xx系列芯片 – TDC配置寄存器摘录

Transceiver Delay Compensation收发器延迟补偿寄存器TDCRx包含设置Transceiver Delay Compensation收发器延迟补偿功能的所有参数以及相应的状态位。NTDCRx寄存器只有在NCRx.CCE位被设置时才能写入。

CAN_NTDCRx(x = 0-2)

Node x Transceiver Delay Compensation收发器延迟补偿寄存器(23CH+x*100H)0000 0000H

CAN1_NTDCRz(z = 0-2)

Node z Transceiver Delay Compensation收发器延迟补偿寄存器(23CH+z*100H)0000 0000H

Field

Bits

Type

Description

TDCV

[4:0]

r

Transceiver Delay Compensation Value

该位字段显示secondary sample point第二采样点,即测量的transceiver delay收发器延迟(从CAN发送到接收)与transceiver delay compensation offset收发器延迟补偿偏移NTDCRz.TDCO之和。

TDCV的有效值为tq(time quanta)的0至31倍。

TDCO

[11:8]

rw

Transceiver Delay Compensation Offset

该位字段定义了Transceiver Delay Compensation收发器延迟补偿偏移量,该偏移量被添加到测量的transceiver delay收发器延迟(从CAN发送到接收)中,形成secondary sample point

TDCO的有效值为tq(time quanta)的0至15倍。

TDC

15

rw

Transceiver Delay Compensation Enable

该位启用Transceiver Delay Compensation收发器延迟补偿功能:

0B:禁用Transceiver Delay Compensation收发器延迟补偿

1B:启用Transceiver Delay Compensation收发器延迟补偿

0

[7:5],

[14:12],

[31:16]

r

Reserved

读为0;应写为0。

推荐阅读(单击下方文字即可跳转至对应博文):

《Autosar从入门到精通-实战篇》总目录_培训教程持续更新中...

《Autosar_BSW高阶配置》总目录_培训教程持续更新中...

《Autosar_MCAL高阶配置》总目录_培训教程持续更新中...

END

获取更多“汽车电子资讯”和“工具链使用”,

请关注“汽车电子助手”,做您的好助手

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/794944.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C#】.Net Framework框架使用JWT

2023年,第31周,第2篇文章。给自己一个目标,然后坚持总会有收货,不信你试试! 本篇文章主要简单讲讲,.Net Framework框架下使用JWT的代码例子,以及他们的基本概念。 2002年微软发布了.net framewo…

读书会-《博弈论究竟是什么》

一. 什么是博弈论? 博弈即一些个人、队组或其他组织,面对一定的环境条件,在一定的规则下,同时或先后,一次或多次,从各自允许选择的行为或策略中进行选择并加以实施,各自取得相应结果的过程。 博…

re学习(25)i春秋-re-basebasebase(base64+函数构造)

参考文章:re学习笔记(22)爱春秋CTF答题夺旗赛(第四季)-re-basebasebase_ctfbase~base_Forgo7ten的博客-CSDN博 总结:1.flag——→base64加密(自定义)——→与3异或——→加密后数据…

spring启动流程 (6完结) springmvc启动流程

SpringMVC的启动入口在SpringServletContainerInitializer类,它是ServletContainerInitializer实现类(Servlet3.0新特性)。在实现方法中使用WebApplicationInitializer创建ApplicationContext、创建注册DispatcherServlet、初始化ApplicationContext等。 SpringMVC…

大数据Flink(五十):流式计算简介

文章目录 流式计算简介 一、数据的时效性 二、流式计算和批量计算

dubbo概论

目录 前言: 1.概述 2.服务发现 3.容错 3.1.注册中心宕机 3.2.负载均衡 3.3.限流、熔断 4.通信协议 4.1.HTTP 4.2.dubbo 5.总结 前言: 这可能是全网最深入浅出的dubbo文章,如果你会spring cloud,恭喜你,你可…

Zookeeper命令总结

目录 1、常用命令2、ls path3、create xxx创建持久化节点创建临时节点创建持久化序列节点 4、get path5、set path6、delete path7、监听器总结1)节点的值变化监听2)节点的子节点变化监听(路径变化)3)当某个节点创建或…

Maven基础之项目创建、packaging

文章目录 创建 maven 项目流程骨架是浮云,packaging 是关键 创建 maven 项目流程 通过骨架(archetype)创建 maven 工程 第一步:选择 new → maven → Maven Project 第二步:New Maven Project 窗口不作任何设置&…

【软件测试】基于博客系统的自动化测试

目录 1.我的博客系统链接 2.使用selenium对博客系统进行自动化测试 1.引入依赖 2.创建公共类 3.创建测试套件类 4.测试登陆界面 5. 测试博客列表页 6.测试写博客页面 7.测试删除博客 8.最终运行结果 1.我的博客系统链接 用户登录 2.使用selenium对博客系统进行自动…

网络安全(黑客)系统自学,成为一名白帽黑客

前言 黑客技能是一项非常复杂和专业的技能,需要广泛的计算机知识和网络安全知识。你可以参考下面一些学习步骤,系统自学网络安全。 在学习之前,要给自己定一个目标或者思考一下要达到一个什么样的水平,是学完找工作(…

学习笔记22 map

一、概论 map的每个元素都由两个部分组成:键和值。每个键都与一个特定的值相关联,并且可以用于定位该值。 map和set很像,只不过map存储的是key,由key再映射到value,而set存储的就是value本身。 Map接口是泛型的&…

拦截Bean使用之前各个时机的Spring组件

拦截Bean使用之前各个时机的Spring组件 之前使用过的BeanPostProcessor就是在Bean实例化之后,注入属性值之前的时机。 Spring Bean的生命周期本次演示的是在Bean实例化之前的时机,使用BeanFactoryPostProcessor进行验证,以及在加载Bean之前进…

flink to starrocks 问题集锦....

[问题排查]导入失败相关 - 问题排查 - StarRocks中文社区论坛 starrocks官网如下: Search StarRocks Docs starrocks内存配置项: 管理内存 Memory_management StarRocks Docs 问题1:实时写入starrocks ,配置参数设置如下&a…

【【51单片机11.0592晶振红外遥控】】

51单片机11.0592晶振红外遥控 红外遥控,51单片机完结 这是初步实现的架构 怎么实现内部的详细逻辑 我们用状态机的方法 0状态时一个空闲状态 当它接收到下降沿开始计时然后转为1状态 1状态下 寻找start 或者repeat的信号 再来下降沿读出定时器的值 如果是start 那…

华为eNSP:isis的配置

一、拓扑图 二、路由器的配置 配置接口IP AR1&#xff1a; <Huawei>system-view [Huawei]int g0/0/0 [Huawei-GigabitEthernet0/0/0]ip add 1.1.1.1 24 [Huawei-GigabitEthernet0/0/0]qu AR2: <Huawei>system-view [Huawei]int g0/0/0 [Huawei-GigabitEthe…

【沁恒蓝牙mesh】数据收发接口与应用层模型传递

本文主要描述了沁恒蓝牙mesh SDK的蓝牙数据收发接口&#xff0c;以及应用层的回调函数解析以及模型传递 这里写目录标题 1. 数据收发接口1.1【发送数据】1.2 【数据接收】 2. 应用层模型分析 1. 数据收发接口 1.1【发送数据】 /*&#xff08;1&#xff09;接口1 */ /*接口一&…

力扣热门100题之最大子数组和【中等】【动态规划】

题目描述 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组 是数组中的一个连续部分。 示例 1&#xff1a; 输入&#xff1a;nums [-2,1,-3,4,-1,2,1,-5,4] 输出&a…

Java文字转语音功能实现

需要下载jacob-1.18&#xff0c;网上一堆 项目中引入pom文件 <!-- https://mvnrepository.com/artifact/com.jacob/jacob 文字转语音 --> <dependency><groupId>com.hynnet</groupId><artifactId>jacob</artifactId><version>1.18&…

Go语言中‘String’包中的‘Cut‘函数的实现

Go语言中‘String’包中的’Cut’函数的实现 ​ Cut函数用于在字符串**‘s’中查找子串’sep’&#xff0c;并将字符串’s’在子串 ‘sep’ 第一次出现的位置分割成两部分&#xff1a;before和after** package main import("fmt" "strings" ) func main(…

Python初学

认识计算机&#xff1a; 计算机是怎么构成的——冯诺依曼体系结构 内存外存的区别&#xff1a; 一般机械硬盘的存储数据的期限是&#xff1a;几年到十几年 什么是编程&#xff1f; 制作软件——编程/软件开发 编程语言有哪些&#xff1f; Python Python背景知识 荷兰人Guid…