【车载开发系列】AutoSar中的CANTP

news2024/12/27 13:02:22

【车载开发系列】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帧中传输。

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

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

相关文章

腾讯云3年轻量2核4G5M服务器756元,抓紧数量不多

腾讯云轻量应用服务器特价是有新用户限制的,所以阿腾云建议大家选择3年期轻量应用服务器,一劳永逸,免去续费困扰。腾讯云轻量应用服务器3年可以选择2核2G4M和2核4G5M带宽,3年轻量2核2G4M服务器540元,2核4G5M轻量应用服…

十五、信号量

1、概述 (1)前面介绍的队列(queue)可以用于传输数据:在任务之间、任务和中断之间。 (2)有些时候我们只需要传递状态,并不需要传递具体的信息,比如: 我的事做完了,通知一下你。卖包子了、卖包子了,做好了…

python 中用opencv开发虚拟键盘------可以只选择一个单词不会出现一下选择多个

一. 介绍 OpenCV是最流行的计算机视觉任务库,它是用于机器学习、图像处理等的跨平台开源库,用于开发实时计算机视觉应用程序。 CVzone 是一个计算机视觉包,它使用 OpenCV 和 Media Pipe 库作为其核心,使我们易于运行&#xff0c…

基于STM32控制直流电机加减速正反转仿真设计

**单片机设计介绍,基于STM32控制直流电机加减速正反转仿真设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 本设计由STM32F103、L298N电机驱动电路、按键电路组成。通过按键可以控制电机,正转、反转、加…

【FISCO BCOS】十九、区块链浏览器部署

目录 一、环境依赖 检查环境 1.检查java 二、拉取安装脚本 获取部署安装包 ​编辑 解压安装包 进入目录 三、修改配置 四、部署服务 五、状态检查 检查前后端进程 1.检查后端server进程 2.检查前端的nginx进程 检查进程端口 六、使用区块链浏览器 1.配置群组…

关于DataLoader是否shuffle在VOC2007语义分割数据集上引发的问题

问题描述: 在训练过程中,训练集和验证集实时得到的F1分数相差很大,如下图: 这个问题之前从未遇到过,后来经过不断的排查,发现是因为验证集的数据加载器中shuffle设置的为False,而训练集设置的为…

[C/C++]数据结构 深入挖掘环形链表问题

前言 在上一篇文章中讲述了如何判断链表是否带环,在观看本片文章时建议先了解一下这篇文章的内容[C/C]数据结构 链表OJ题:环形链表。本篇文章我们将讲述关于环形链表的几种不同的情况如下,同时我们要解决另一个环形链表问题----找到入环点 slow一次走一步fast一次走两步一定会…

进亦忧,退亦忧,Github Copilot 集成进入 Visual Studio 带来的思考

开篇想到《岳阳楼记》的结尾: 不以物喜,不以己悲;居庙堂之高则忧其民;处江湖之远则忧其君。是进亦忧,退亦忧。然则何时而乐耶?其必曰:“先天下之忧而忧,后天下之乐而乐”乎。未来30…

第26章_事务概述与隔离级别

文章目录 事务事务的特征事务的控制语句事务的生命周期事务的执行过程 ACID特性原子性一致性隔离性持久性 隔离级别不同隔离级别并发异常脏读不可重复读幻读区别 总结 事务 (1)事务的前提:并发连接访问。MySQL的事务就是将多条SQL语句作为整…

SpringDataJpa(二)

三、Spring Data JPA概述 Spring Data JPA 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据库的访问和操作。它提供了包括增删改查等在内的常用功能,且易于扩展!学习并使用 Spring D…

汽车操纵稳定性matlab仿真

1、内容简介 略 14-可以交流、咨询、答疑 2、内容说明 汽车操纵稳定性matlab仿真,包含完整的论文 操纵动力学、两自由度 摘要:当今,仿真技术日益广泛地应用于汽车工程领域,操纵稳定性研究越来越多地使用成熟的计算机仿真理论…

【Proteus仿真】【STM32单片机】多路温度控制系统

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器,使用按键、LED、蜂鸣器、LCD1602、DS18B20温度传感器、HC05蓝牙模块等。 主要功能: 系统运行后,默认LCD1602显示前4路采集的…

Spring学习笔记——AOP(4)

Spring学习笔记——AOP(4) 一、学习AOP1.1 AOP的概述1.2 AOP思想实现方案1.3、模拟AOP的基础代码1.4、AOP的相关概念 二、基于xml配置AOP2.1 AOP基础入门2.2、XML方式AOP配置详解2.3、XML方式AOP原理剖析 三、注解式开发AOP3.1 注解式开发AOP入门3.2 AOP…

Swift 常用类别整理

生成颜色,传入16进制数字生成对应颜色 个人不喜欢传字符串的写法,比如 "0x0080FF" 或者 "0080FF",原因如下: 传了字符串最后还是要解析成数字参与颜色运算的,需要额外做字符串转数字的操作&…

【C++】C++入门详解 I【C++入门 这一篇文章就够了】

C入门 前言一、C关键字(C98)二、命名空间 namespace(一)namespace的出现(二)namespace的定义(1)namespace 的正常定义(2)namespace的功能特性1. 命名空间 可嵌…

Android系统开发快速寻找代码(如何在文件夹中寻找代码)

很多时候对于Android系统开发小白而言,例如预置APK,知道了APK包名不知道具体代码位置需要去寻找代码,但是Android系统代码十分庞大,如何快速准确查询代码是个问题。 本人目前只探索到了一些方法,如有更有效的办法可以…

github私有仓库开发,公开仓库发布版本

文章目录 github私有仓库开发,公开仓库发布版本需求背景实现思路GitHub Releases具体步骤广告 github私有仓库开发,公开仓库发布版本 需求背景 github私有仓库开发,公开仓库发布版本,既可以保护源代码,又可以发布版本给用户使用。许多知名软件项目都采用了这样的开…

VS Code画流程图:draw.io插件

文章目录 简介快捷键 简介 Draw.io是著名的流程图绘制软件,开源免费,对标Visio,用过的都说好。而且除了提供常规的桌面软件之外,直接访问draw.io就可以在线使用,堪称百分之百跨平台,便捷性直接拉满。 那么…

3.HTML中语法规范

3. HTML语法规范 3.1 基本语法概述 3.1.1 HTML标签 1 HTML 标签是由尖括号包围的关键字&#xff0c;例如<html>。 2. HTML 标签通常是成对出现的&#xff0c;例如<html>和</html>,我们称为双标签。标签对中的第一个标签是开始标签&#xff0c;第二个标签是…

Windows10腾讯文档下载和安装

文章目录 Windows10腾讯文档下载和安装官网下载执行安装 Windows10腾讯文档下载和安装 官网下载 官网 下载后&#xff1a; 执行安装 找到下载目录 安装后打开 扫描登录即可