LIN总线学习笔记(1)-总线传输规范

关注菲益科公众号—>对话窗口发送 “CANoe ”或“INCA”,即可获得canoe入门到精通电子书和INCA软件安装包(不带授权码)下载地址。

接触LIN是从最近负责项目中开始的。项目已经快要量产了,因为中间遇到的大大小小的问题,都与LIN传输规范有关系,所以特地花时间找了点资料看了看。B站上有好多视频蛮不错的,看完收益匪浅。
这篇笔记主要总结了对于LIN总线传输规范的初步认识,具体从以下几个方面展开讨论;
- LIN网络特点
- PDU有哪些类型
- NAD是什么
- PCI指的是什么
- LIN报文中的SID以及RSID
- 单帧传输&&多帧传输
- 常见的错误处理策略
接触过CAN的应该知道,LIN的产生是为了降低车载总线技术成本,LIN总线的传输速率远小于CAN,仅为20Kbps。但是LIN网络在汽车中一般不单独存在,要与上层网络相连(如CAN)。

LIN网络特点
LIN网络由一个主机节点和多个从机节点构成。主机节点包含主机任务和从机任务,从机节点只包含从机任务。主机任务主要负责:
- 调度总线上帧的传输次序(发送调度表)
- 检测数据以及处理总线上的错误
- 作为标准时钟参考
- 接收从机节点发出的总线唤醒命令
从机任务不能够主动发送数据,需要接收主机发送的帧头,根据帧头所包含的信息(帧ID)判断做出以下哪种反应:
- 发送应答(帧中除帧头外剩下的部分)
- 接收应答
- 既不接收也不发送应答

LIN网络传输中数据帧包含了两个部分,帧头(header)和应答(Response)两部分。帧头由主节点发送,从节点接收帧头并对帧头所包含的信息进行解析判断是否需要发送应答。
PDU是什么
总线上数据传输的单元叫做PDU(协议数据单元)。主要分为三类:单帧、首帧和连续帧。
- 单帧(SF,Single Frame):只用一个PDU就完成所有数据传输的报文;
- 首帧(FF, First Frame):多帧传输时,被发送的首个PDU;
- 连续帧(CF,Consecutive Frame):多帧传输时,在首PDU发送后,紧接着发送的PDU

简言之,一个LIN单帧SF能传输的数据长度最多为5个字节;如果要传输的数据内容长度超过5个字节,则需要考虑用多帧也就是最少两帧(ff+cf)才可以完成传输。
NAD
NAD指的是从节点地址(Node Address)。LIN协议中对NAD单位进行了定义,具体如下:

LIN规范定义的,主节点发送睡眠指令,发送帧头ID 3C,单帧数据内容为:第一个字节NAD设置为0x0,其余字节设置为0xFF即可
PCI
PCI即协议控制信息(Protocol Control Information)。PCI包含PDU的类型、编号和报文的有效数据长度等信息。根据PDU的不同,PCI不同,具体如下:

注:多个PDU组成的报文中,在每个连续帧CF中必须加入包编号,第一个CF的包编号是1,第二个是2,……包编号超过15则重新从0开始计算。
比如,如果要发诊断ECUreset请求(11 01),需要发送的PDU类型为单帧就可以了,帧头ID为3C,数据长度为2,所以PCI为0x02,PDU为:NAD 0x02 0x11 0x01 0xFF 0xFF 0xFF,0xFF为填充字节。
如果要发送的数据长度为15个字节,则发送的PDU内容如下:
FF:NAD 0x10 0x0A D1 D2 D3 D4
CF:NAD 0x21 D5 D6 D7 D8 D9 D10
CF:NAD 0x22 D11 D12 D13 D14 D15
SID以及RSID
SID(Service Identifier)是指服务标识符,在请求帧中发送;RSID(Response Service Identifier)对应于SID的响应服务标识符,在相应帧中发送。
RSID = SID + 0X40
单帧传输&多帧传输
当需要传输的有效数据长度少于6个字节时,用单帧传输。传输有效数据长度在7~4095字节,需要通过多帧的形式传输。
但是需要记住的是,LIN上面所有从节点从节点的数据传输,必须等到收到主节点的帧头后,次对外发出数据帧。也就是说如果是响应一个主节点的请求,需要通过多帧的形式才可以把反馈数据传输完毕,则FF以及每一个CF的发出都需要在收到主节点的帧头后才可以发出去。
错误处理
规范定义了一些LIN上常用的错误处理机制,比如:
- Length SF >6,则忽略该报文
- Length FF<7,则忽略该报文
- Length FF>BufferSize,则终止接收该报文
- 节点如果处于发送状态,接收到SF或FF(NAD !=0X7E),则终止发送报文,开始接收新报文
- CF编号如果错误,放弃之前接收的CF与FF
了解更多产品信息,请致菲益科电子官网查询
相关文章:
LIN总线学习笔记(1)-总线传输规范
关注菲益科公众号—>对话窗口发送 “CANoe ”或“INCA”,即可获得canoe入门到精通电子书和INCA软件安装包(不带授权码)下载地址。 接触LIN是从最近负责项目中开始的。项目已经快要量产了,因为中间遇到的大大小小的问题…...
Qt界面篇:Qt停靠控件QDockWidget、树控件QTreeWidget及属性控件QtTreePropertyBrowser的使用
1、功能介绍 本篇主要使用Qt停靠控件QDockWidget、树控件QTreeWidget及Qt属性控件QtTreePropertyBrowser来搭建一个简单实用的主界面布局。效果如下所示。 2、控件使用详解 2.1 停靠控件QDockWidget QDockWidget可以停靠在 QMainWindow 内或作为桌面上的顶级窗口浮动。默认值…...
H266/VVC网络适配层概述
视频编码标准的分层结构 视频数据分层的必要性:网络类型的多样性、不同的应用场景对视频有不同的需求。 编码标准的分层结构:为了适应不同网络和应用需求,视频编码数据根据其内容特性被分成若干NAL单元(NAL Unit,NALU…...
new FormData 同时发送表单 json 以及文件二进制流
需要新增时同时发送表单 json 以及对应的文件即可使用以下方法传参 let formDataParams new FormData(); 首先通过 new FormData() 创建你需要最后发送的表单 接着将你的对象 json 存储,注意使用 new Blob 创建大表单转换成 json 格式。以…...
计算机环境安全
操作系统安全----比如windows,linux 安全标识--实体唯一性 windows---主体:账户,计算机,服务 安全标识符SID-Security Identifier 普通用户SID是1000,管理用SID是500 linux---主体:用户,用户组…...
Activiti7工作流引擎:多租户
一:多租户 表示每个租户之间数据隔离互不影响,互不可见。通常一个租户表示一个系统应用(类似于appid的作用)或者一家公司。 通过数据库级别进行隔离,每个租户对应一个数据库;通过表记录级别进行隔离&…...
Postman实现压力测试
从事软件开发对于压力测试并不陌生,常见的一些压测软件有Apache JMeter LoadRunner Gatling Tsung 等,这些都是一些比较专业的测试软件,对于我的工作来说一般情况下用不到这么专业的测试,有时候需要对一些接口进行压力测试又不想再安装新软件,那么可以使用Postman来实现对…...
爬虫工具(tkinter+scrapy+pyinstaller)
需求介绍输入:关键字文件,每一行数据为一爬取单元。若一行存在多个and关系的关键字 ,则用|隔开处理:爬取访问6个网站的推送,获取推送内容的标题,发布时间,来源,正文第一段࿰…...
MySQL常用sql语句记录
1,创建用户及赋权 -- 创建用户 CREATE USER usernamelocalhost IDENTIFIED BY password;-- 赋予所有权限 GRANT ALL PRIVILEGES ON database_name.* TO usernamelocalhost;-- 赋予特定表的某些权限 GRANT SELECT, INSERT ON table_name TO usernamelocalhost;-- 更…...
2024.1.4力扣每日一题——被列覆盖的最多行数
2024.1.4 题目来源我的题解方法一 回溯位运算优化 题目来源 力扣每日一题;题序:2397 我的题解 方法一 回溯位运算优化 这道题一看就会想到使用回溯法,但是采用回溯法后如何判断有多少行被覆盖,直接计算矩阵时间复杂度较高&…...
Elasticsearch:Serarch tutorial - 使用 Python 进行搜索 (一)
本实践教程将教你如何使用 Elasticsearch 构建完整的搜索解决方案。 在本教程中你将学习: 如何对数据集执行全文关键字搜索(可选使用过滤器)如何使用机器学习模型生成、存储和搜索密集向量嵌入如何使用 ELSER 模型生成和搜索稀疏向量如何使用…...
第五讲_css元素显示模式
css元素显示模式 1. 元素的显示模式1.1 块元素1.2 行内元素1.3 行内块元素 2. 元素根据显示模式分类3. 修改元素的显示模式 1. 元素的显示模式 1.1 块元素 块元素的特性: 在页面中独占一行,从上到下排列。默认宽度,撑满父元素。默认高度&a…...
Shell脚本入门实战:探索自动化任务与实用场景
引言 Shell脚本作为一种强大的自动化工具,在现代操作系统中具有广泛的应用。无论是简单的文件操作,还是复杂的系统管理,Shell脚本都能提供高效、快速的解决方案。在本文中,我们将探索Shell脚本的基础知识,并通过实战场…...
【AI视野·今日Sound 声学论文速览 第四十二期】Fri, 5 Jan 2024
AI视野今日CS.Sound 声学论文速览 Fri, 5 Jan 2024 Totally 10 papers 👉上期速览✈更多精彩请移步主页 Daily Sound Papers PosCUDA: Position based Convolution for Unlearnable Audio Datasets Authors Vignesh Gokul, Shlomo Dubnov深度学习模型需要大量干净的…...
Java中如何使用SQLite数据库
目录 SQLite简介SQLite优势安装 SQLite基本使用Java使用SQLite Springboot使用SQLite1.添加依赖2.配置数据库3.创建实体类 4.创建Repository接口5.创建控制器6.运行应用程序 SQLite简介 SQLite 是一个开源的嵌入式关系数据库,实现了自给自足的、无服务器的、配置无…...
kettle的基本介绍和使用
1、 kettle概述 1.1 什么是kettle Kettle是一款开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。 1.2 Kettle核心知识点 1.2.1 Kettle工程存储方式 以XML形式存储以资源库方式存储…...
数据结构第2章 栈和队列
名人说:莫听穿林打叶声,何妨吟啸且徐行。—— 苏轼《定风波莫听穿林打叶声》 本篇笔记整理:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 0、思维导图栈和队列1、栈1)特点2࿰…...
Axure鲜花商城网站原型图,网上花店订花O2O本地生活电商平台
作品概况 页面数量:共 30 页 兼容软件:仅支持Axure RP 9/10,非程序软件无源代码 应用领域:鲜花网、花店网站、本地生活电商 作品特色 本作品为「鲜花购物商城」网站模板,高保真高交互,属于O2O本地生活电…...
【docker】centos 使用 Nexus Repository 搭建私有仓库
Nexus Repository 是一种流行的软件仓库管理工具,它可以帮助您搭建私有仓库,以便在内部网络或私有云环境中存储、管理和分发各种软件包和组件。 它常被用于搭建Maven的镜像仓库。本文演示如何用Nexus Repository搭建docker 私有仓库。 使用Nexus Repos…...
RabbitMQ(八)消息的序列化
目录 一、为什么需要消息序列化?二、常用的消息序列化方式1)Java原生序列化(默认)2)JSON格式3)Protobuf 格式4)Avro 格式5)MessagePack 格式 三、总结 RabbitMQ 是一个强大的消息中间…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
Docker拉取MySQL后数据库连接失败的解决方案
在使用Docker部署MySQL时,拉取并启动容器后,有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致,包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因,并提供解决方案。 一、确认MySQL容器的运行状态 …...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...
FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
