【车载开发系列】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…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
软件工程 期末复习
瀑布模型:计划 螺旋模型:风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合:模块内部功能紧密 模块之间依赖程度小 高内聚:指的是一个模块内部的功能应该紧密相关。换句话说,一个模块应当只实现单一的功能…...
规则与人性的天平——由高考迟到事件引发的思考
当那位身着校服的考生在考场关闭1分钟后狂奔而至,他涨红的脸上写满绝望。铁门内秒针划过的弧度,成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定",构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...
React核心概念:State是什么?如何用useState管理组件自己的数据?
系列回顾: 在上一篇《React入门第一步》中,我们已经成功创建并运行了第一个React项目。我们学会了用Vite初始化项目,并修改了App.jsx组件,让页面显示出我们想要的文字。但是,那个页面是“死”的,它只是静态…...
【PX4飞控】mavros gps相关话题分析,经纬度海拔获取方法,卫星数锁定状态获取方法
使用 ROS1-Noetic 和 mavros v1.20.1, 携带经纬度海拔的话题主要有三个: /mavros/global_position/raw/fix/mavros/gpsstatus/gps1/raw/mavros/global_position/global 查看 mavros 源码,来分析他们的发布过程。发现前两个话题都对应了同一…...
