【车载开发系列】AutoSar中的CANTP
【车载开发系列】AutoSar中的CANTP
【车载开发系列】AutoSar中的CANTP
- 【车载开发系列】AutoSar中的CANTP
- 一. CANTP相关术语
- 二. CANTP相关概念
- 1)单帧:SF(Single Frame)
- 2)首帧:FF(First Frame)
- 3)连续帧CF(Consecutive Frame)
- 4)流控帧:FC(Flow Control)
- 三. CANTP介绍
- 四. CANTP的作用
- 五. CANTP网络层参数
- 1)N_As与N_Ar
- 2)N_Bs
- 3)N_Br
- 4)N_Cs
- 5)N_Cr
- 6)STmin
- 7)BS(Block Size)
- 六. CANTP模块的接口
- 1)CanTp_Transmit()函数
- 2)CanTp_CancelTransmit()函数
- 3)CanTp_Init()函数
- 4)CanTp_Shutdown函数
- 2)receiveData()函数
- 七. CANTP提供服务的总结
一. CANTP相关术语
PDU(Protocol Data Uint)协议数据单元
N-PDU(Network Protocol Data Uint)网络层协议数据单元
I-PDU(Interaction Protocol Data Uint)交互层协议数据单元
N-SDU(Network Service Data Uint)网络服务数据单元
L-PDU:Data Link Layer PDU,一个或多个I-PDU组包成一个L-PDU
FS(Flow Status)流状态
BS(Block Size)数据块的大小
STmin(Separation Time Min)最小间隔时间
SN(Sequence Number 帧序列号)
FF_DL(Frist Frame Data Length)首帧数据长度
SF_DL(Signle Frame Data Length)单帧数据长度
SDU:Service Data Unit服务数据单元。
二. CANTP相关概念
1)单帧:SF(Single Frame)
用于发送单个CAN帧即可发送完成的数据;数据长度小于等于7个Byte(标准CAN是7Byte,CAN-Fd是63Byte)时,使用单帧进行传输。
2)首帧:FF(First Frame)
用于发送较大数据情况下的第一帧;
3)连续帧CF(Consecutive Frame)
用于发送较大数据情况下首帧外的其余部分
4)流控帧:FC(Flow Control)
接收后用于调节数据发送速度。
三. CANTP介绍
CANTP是CAN Transport Layer的简称。是基础软件通讯模块中最重要的模块之一。
CanTp是AUTOSAR通信栈中负责网络解析的模块,主要负责接收CanIf层传输的N-PDU数据解析成I-PDU数据,并发送给PDUR模块。

AUTOSAR CAN传输层规范是基于汽车领域最常用的国际标准ISO15765。ISO15765描述了两个适用的CAN传输层规范:OEM增强型诊断:采用ISO 15765-2;
OBD诊断:采用ISO15765-4。
四. CANTP的作用
CANTP模块的主要作用是对CAN I-PDU进行分段和重新组装,使得I-PDU的长度不大于8个字节,对CAN FD而言,CAN I-PDU不大于64个字节。
CANTP主要解决了数据多帧传输的问题,由于CAN总线每次只能发送8个字节的数据,因此对于多帧数据,需要拆分成多个块传输。无论是单帧还是多帧传输,CanTp一共提供四种帧进行数据传输:单帧,首帧,连续帧,流控帧。
五. CANTP网络层参数
CAN-TP 网络层参数有N_As/N_Ar/N_Bs/N_Br/N_Cs/N_Cr/STmin/BS/
1)N_As与N_Ar
N_As : Sender.req->Sender.con ,Sender任意帧类型从请求发送到发送完成的时间间隔。
N_Ar :Receiver.Req->Receiver.con , Receiver任意帧类型从请求发送到发送完成的时间间隔。
2)N_Bs
N_Bs可理解为Sender 从XXX到收到流控帧 的时间。XXX分为三种情况
1.Sender从发送完首帧(FF)到收到流控帧的时间
2.Sender从发送完连续帧(CF)到收到流控帧的时间
3. Sender从收到流控帧(FC)(状态为Wait)到收到下一个流控帧的时间
3)N_Br
N_Br可理解为Receiver 从XXX到请求发送流控帧的时间,XXX分为三种情况
1.Receiver 从收到首帧(FF)到请求发送流控帧的时间
2.Receiver 从收到连续帧(CF)到请求发送流控帧的时间
3.Receiver 从发送完流控帧(FC)(状态为Wait) 到请求发送下一个流控帧的时间
4)N_Cs
N_Cs可理解为 Sender从XXX 到请求发送连续帧(CF)的时间,XXX分为两种情况1.Sender从收到流控帧(FC)到请求发送连续帧(CF) 的时间
2.Sender从发送完连续帧(CF)到请求发送下一包连续帧(CF) 的时间
5)N_Cr
N_Cr 可理解为 Receiver 从XXX到收到下一个连续帧(CF) 的时间,XXX分为两种情况
1.Receiver 从发送完流控帧(FC)到收到连续帧(CF) 的时间
2.Receiver 从收到连续帧(CF)到收到下一包连续帧(CF) 的时间
6)STmin
STmin 是Sender发送两包连续帧之间的最小间隔,单位为ms。
7)BS(Block Size)
Block Size 是 Sender 收到一包流控帧后,发送连续帧的个数,0代表无限制,收到流控帧后可以一直发连续帧,直到数据发送完毕。
六. CANTP模块的接口
作用与功能:CAN Tp模块用于处理分包数据传输和错误检测,在诊断过程中使用频率较高。
CanTp模块提供用于分割、流控传输和消息重新组装的服务。它的主要目的是发送和接收可能适合也可能不适合一个CAN帧的消息。不适合一个CAN帧的消息被分割成多个部分,这样每个部分都可以在一个CAN帧中传输。
1)CanTp_Transmit()函数
CAN Tp模块通过此接口将数据进行分包并传输。它是异步函数。在传输请求被接受后,无论N-SDU传输是否成功被完全处理,CanTp模块都将通知其上层。
2)CanTp_CancelTransmit()函数
传输取消特性允许上层取消正在进行的传输。
使用案例:由于接收到另一个具有更高优先级的诊断协议而取消诊断传输。CanTp_CancelTransmit()被调用之后,该连接上的传输将被中止,将在接收端产生一个超时错误。
3)CanTp_Init()函数
函数CanTp_Init初始化模块的所有全局变量,并将所有传输协议连接设置为CANTP_ON的子状态,在此状态下,既不进行分段发送,也不进行分段接收(Rx线程处于CANTP_RX_WAIT状态,Tx线程处于CANTP_TX_WAIT状态)。
成功初始化后,CanTp模块将变为内部状态CANTP_ON。只有当CanTp处于CANTP_ON状态时,CanTp模块才会执行分段和重组任务。CanTp模块上电后处于CANTP_OFF状态。
如果CanTp模块在处于全局状态CANTP_ON时调用CanTp_Init函数,则CanTp_Init函数将模块返回到Idle状态(state = CANTP_ON,但发送和接收均未进行)。
4)CanTp_Shutdown函数
它用来正确停止CanTp模块。

2)receiveData()函数
CAN Tp模块通过此接口接收传输的数据并进行错误检测。
七. CANTP提供服务的总结
1)分割发送方向上的数据
2)重组接收方向上的数据
3)控制数据流
4)检测分割会话中的错误
CanTp模块提供用于分割、流控传输和消息重新组装的服务。它的主要目的是发送和接收可能适合也可能不适合一个CAN帧的消息。不适合一个CAN帧的消息被分割成多个部分,这样每个部分都可以在一个CAN帧中传输。
相关文章:
【车载开发系列】AutoSar中的CANTP
【车载开发系列】AutoSar中的CANTP 【车载开发系列】AutoSar中的CANTP 【车载开发系列】AutoSar中的CANTP一. CANTP相关术语二. CANTP相关概念1)单帧:SF(Single Frame)2)首帧:FF(First Frame)3)连续帧CF(Consecutive F…...
JUL日志
文章目录 JUL日志JUL日志讲解Properties配置文件编写日志配置文件Lombok快速开启日志Mybatis日志系统 JUL日志 如果使用System.out.println来打印信息,项目中存在大量的控制台输出语句,会显得很凌乱,而且日志的粒度是不够细的,假…...
ZZ308 物联网应用与服务赛题第G套
2023年全国职业院校技能大赛 中职组 物联网应用与服务 任 务 书 (G卷) 赛位号:______________ 竞赛须知 一、注意事项 1.检查硬件设备、电脑设备是否正常。检查竞赛所需的各项设备、软件和竞赛材料等; 2.竞赛任务中所使用…...
如何使用 vcpkg 编译Google-V8脚本引擎(ECMA/JavaScript)?
WIN32K下一键杀死所有同名进程命令行:taskkill /F /IM chrome.exe ############################## 1、准备 Visual Studio 2019 2、准备 Visual Studio 2022 3、安装 VC、MSBuild 编译集成环境 4、安装 Python 3.x,早期V8发行版本编译安装 2.x 5、…...
系列二十二、idea Live Templates
一、idea Live Templates 1.1、Java Group 1.1.1、fast fast 快速在类上添加注解Data AllArgsConstructor NoArgsConstructor Accessors(chain true) ToString(callSuper true) 1.1.2、getThreadName getThreadName快速获取当前线程的名字Thread.currentThread().getName…...
电脑本地安装宝塔/docker 安装宝塔
一、先去docker官网(http://docker.com)下载软件并进行安装,网站打不开多试几次或者找梯子。 二、macos系统里按“command 空格”搜索“终端”回车,启动终端程序。 三、执行下面命令,拉取docker镜像。 docker pull pch18/baota:clear pch…...
Java Lambda 表达式笔记
文章目录 Java Lambda 表达式语法Lambda 表达式实例Lambda表达式与函数式接口方法引用处理lambda表达式的接口 Java Lambda 表达式语法Lambda 表达式实例Lambda表达式与函数式接口方法引用处理lambda表达式的接口 Java Lambda 表达式 Lambda 表达式,也可称为闭包. …...
Flutter笔记:状态提升、控制器模式、GetX控制器和服务
Flutter笔记 状态提升、控制器模式、GetX控制器和服务 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/1…...
9.spark自适应查询-AQE之动态调整Join策略
目录 概述动态调整Join策略原理实战 动态优化倾斜的 Join原理实战 概述 broadcast hash join 类似于 Spark 共享变量中的广播变量,Spark join 如果能采取这种策略,那join 的性能是最好的 自适应查询AQE(Adaptive Query Execution) 动态调整Join策略 原…...
CentOs7 NAT模式连接网络
1.配置动态网络 1.1 检查主机网卡配置 检查主机的网络设置 进入控制面板,找到网络共享中心 查看适配器是否都已经开启 1.2 设置虚拟机的网络配置 打开虚拟机网络配置设置,对网卡VMnet8 进行设置 记住网关 全部选择应用,确定 1.3 设置…...
linux安装git
目录 声明 前言 正文 (1)下载git压缩包 (2)git压缩包解压 (3)解压完成后需要进行源码的编译操作 a.首先进去到解压后的文件目录中: b.执行: 编译的过程中可能遇到的问题&am…...
thinkphp6 起步
1、安装 composer create-project topthink/think6.0 tp62、使用多应用模式,你需要安装多应用模式扩展think-multi-app composer require topthink/think-multi-app3、config/app.php中,将 ‘auto_multi_app’ > flase, 改为true; 需要自…...
会员题-力扣408-有效单词缩写
有效单词缩写 字符串可以用 缩写 进行表示,缩写 的方法是将任意数量的 不相邻 的子字符串替换为相应子串的长度。例如,字符串 “substitution” 可以缩写为(不止这几种方法): “s10n” (“s ubstitutio n”) “sub4…...
spring-cloud-stream
系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…...
2.0 熟悉CheatEngine修改器
Cheat Engine 一般简称为CE,它是一款功能强大的开源内存修改工具,其主要功能包括、内存扫描、十六进制编辑器、动态调试功能于一体,且该工具自身附带了脚本工具,可以用它很方便的生成自己的脚本窗体,CE工具可以帮助用户…...
微信小程序数据交互和缓存
目录 前言: 数据交互 1. 发起网络请求 2. WebSocket 2.1实时数据库 3. 微信支付 数据缓存 1. 页面级缓存 2. 内存级缓存 3. 数据缓存策略 优化用户体验 总结 前言: 在开发微信小程序时,数据交互和缓存是非常重要的方面。本文将介…...
kubernetes集群编排——k8s认证授权
pod绑定sa [rootk8s2 ~]# kubectl create sa admin [rootk8s2 secret]# vim pod5.yaml apiVersion: v1 kind: Pod metadata:name: mypod spec:serviceAccountName: admincontainers:- name: nginximage: nginxkubectl apply -f pod5.yamlkubectl get pod -o yaml 认证 [rootk8s…...
rabbitmq下载安装教程
1.首先需要下载erlang和rabbitmq安装包: 官网下载比较慢,通过网盘下载: 链接:https://pan.baidu.com/s/1fM2BrJqefyzUDZD4tfZLIg 提取码:5hsu 2.安装,傻瓜式安装就可以,可以自定义自己要安装的目…...
数据分析实战 | SVM算法——病例自动诊断分析
目录 一、数据分析及对象 二、目的及分析任务 三、方法及工具 四、数据读入 五、数据理解 六、数据准备 七、模型训练 八、模型应用及评价 一、数据分析及对象 CSV文件——“bc_data.csv” 数据集链接:https://download.csdn.net/download/m0_70452407/88…...
Splunk Connect for Kafka – Connecting Apache Kafka with Splunk
1: 背景: 1: splunk 有时要去拉取kafka 上的数据: 下面要用的有用的插件:Splunk Connect for Kafka 先说一下这个Splunk connect for kafka 是什么: What is Splunk Connect for Kafka? Spunk Connect for Kafka is a “sink connector” built on the Kafka Connect…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
一些实用的chrome扩展0x01
简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...
数据结构:泰勒展开式:霍纳法则(Horner‘s Rule)
目录 🔍 若用递归计算每一项,会发生什么? Horners Rule(霍纳法则) 第一步:我们从最原始的泰勒公式出发 第二步:从形式上重新观察展开式 🌟 第三步:引出霍纳法则&…...
路由基础-路由表
本篇将会向读者介绍路由的基本概念。 前言 在一个典型的数据通信网络中,往往存在多个不同的IP网段,数据在不同的IP网段之间交互是需要借助三层设备的,这些设备具备路由能力,能够实现数据的跨网段转发。 路由是数据通信网络中最基…...
qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001
qt 5.9.7 vs2013 qt add-in 2.3.2 起因是添加一个新的控件类,直接把源文件拖进VS的项目里,然后VS卡住十秒,然后编译就报一堆 error LNK2001 一看项目的Generated Files下的moc_和ui_文件丢失了一部分,导致编译的时候找不到了。因…...
