| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> Lin总线概述及入门 -> 正文阅读 |
|
[网络协议]Lin总线概述及入门 |
一、概述1、如下图为一个LIN网络,包含了一个Master节点,两个Slave节点: ? LIN网络 在LIN总线通讯中,Master task决定了在LIN总线上传送的是哪一帧,Slave task提供每一帧所携带的数据。 2、如下图为一个LIN节点的层次结构图: ? LIN1.3与LIN2.1的区别在于,LIN1.3没有TL层,Signal interaction放在Protocol层中,没有单独的TP层。 3、LIN总线特点: 串行通信:线间干扰小,节省线束,传输距离长; 单线传输:增强的ISO9141 (ISO 15765-1) , 总线电压基于VBAT; ?最高速率20Kbit/s:满足车身上大部分的应用需求; 单主多从结构:无需仲裁; 基于通用UART/SCI的低成本接口硬件:几乎所有MCU有具备LIN总线的硬件基础; 从节点无须晶振或陶瓷震荡器就可以实现同步:大幅度降低成本; 一条总线最多可连接16个节点:由总线电气特性决定; 支持诊断功能:支持UDS服务; 4、LIN2.1节点模型: ? LIN1.3节点模型: ? LIN2.1与LIN1.3节点模型的差别在于LIN1.3没有Transport layer,所以也就没有流控、传输时间控制的功能,LIN1.3协议中没有对诊断及节点配置进行规范,所以在LIN1.3中完成相应的功能都放在自定义诊断中完成。 5、LIN网络拓扑结构: 1)单主任务,多从任务; 2)主节点包含主任务和从任务; 3)从节点只包含从任务; 4)主任务决定总线上的报文,从 任务发送数据; 6、LIN帧:
LIN帧结构? 通信原理:主任务发送报头,从任务用响应来补充报头形成完整的报文。 报文传输:报文的内容由ID来定义。 广播:所有节点都能够接受总线上的帧。 7、调度表 1)负责调度网络各报文发送的顺序; 2)为每帧报文分配发送时隙(slot); 3)发送时隙:报文可以被发送的时间; 4)不同报文的发送时隙可能不同; 5)调度表在网络系统设计阶段确定; 6)调度表使得LIN通信具有可预测性; ?8、切换调度表: 主任务可以拥有多个调度表,并在不同的调度表之间切换,该处理方式增加通信的灵活性。 二、协议规范(1)字节间隔位于每个字节之间; (2)响应间隔位于报头与响应之间; (3)留给MCU足够的处理时间; (4)帧长度可能增长; 1、字节场 1)基于SCI的通信格式; 2)发送一个字节需要10个位时间(TBIT); 2、间隔场 1)表示一帧报文的起始,由主节点发出; 2)间隔信号至少由13个显性位组成; 3)隔界定符至少由1个隐形位组成; 4)间隔场是唯一一个不符合字节场格式的场; 5)从节点需要检测到至少连续11个显性位才认为是间隔信号; 3、同步场 1)确保所有从节点使用与节点相同的波特率发送和接收数据; 2)一个字节,结构固定:0X55; 4、标识符场 1)ID的范围从0到63(Ox3f); 2)奇偶校验符(Parity)P0,P1; ?5、数据场 1)数据场长度1到8个字节; 2)低字节先发,低位先发; 3)如果某信号长度超过1个字节采用低位在前的方式发送(小端); 6、校验和场 用于校验接收的数据是否正确 1)经典校验(Classic Checksum)仅校验数据场(LIN1.3) 2)增强校验(Enhance Checksum)校验标识符场与数据场内容(LIN2.0、LIN2.1) 标识符为0x3C和0x3D的帧只能使用经典校验 计算方法:反转8位求和(inverted eight bit sum) 例:Data=0x4A、0x55、0x93、0xe5 7、帧长度
最小帧长度 THEADER_NOMINAL=34*TBIT TRESPONSE_NOMINAL=10*(NDATA+1)*TBIT ?? TFRAME_NOMINAL=THEADER_NOMINAL+TRESPONSE_NOMINAL 最大帧长度 THEADER_MAX=1.4*THEADER_NOMINAL TRESPONSE_MAX=1.4*TRESPONSE_NOMINAL TFRAME MAX=THEADER MAX+TRESPONSE MAX 8、帧类型
1)无条件帧 使用频度最高的帧类型,无任何发送条件; 标识符(ID)为0到59(0x3B); 主任务发出报头,一个任务响应,一个或多个任务接收如下图: ?帧?ID = 0x30应答部分的发布节点为从机节点1,收听节点为主机节点。典型应用如从机节点1向主机节点报告自身某信号的状态。 帧?ID = 0x31应答部分的发布节点为主机节点,收听节点为从机节点1和从机节点2。典型应用如主机节点向从机节点发布信息。 帧?ID = 0x32应答部分的发布节点为从机节点2,收听节点为从机节点1。典型应用如从机节点之间彼此通信。 2)事件触发帧 引入事件触发帧的目的是节省带宽。 BCM(Master)需要获取4个车门的状态,该如何实现? 第一种方式:
?每次向四个车门请求状态,浪费带宽,因为车门状态不是经常发生。 第二种方法:
?将请求四个车门状态的帧合并为一个事件触发帧,Master不需要每次发送四个帧请求车门的状态,只需要发送一个事件触发帧即可,哪个车门状态发生变化,对应的车门将响应该事件触发帧。 事件触发帧的响应会出现如下三种情况: 第一种:没有车门状态变化。 ?第二种:一个车门状态发生变化 第三种:多个车门状态发生变化,此时将出现冲突,冲突处理时,Master需要像第一种处理方式一样,重新发送四帧分别请求单个车门状态。LIN1.3与LIN2.0、LIN2.1处理方式有所区别,区别在于LIN1.3不切换调度表,占用事件触发帧的时隙发送,LIN2.0、LIN2.1将切换冲突调度表处理,如下图: ?3)零星帧(偶发帧(Sporadic Frame)) 引入零星帧的目的也是为了节省带宽,如:BCM(Master)需要发送对4个车窗的控制指令,但是,两个车窗的控制命令很少被同时执行,同样大量的带宽被浪费。 具体方案如下: 4)诊断帧 诊断帧用来传输诊断或配置信息,一般包含8个字节。 标识符: 60(0x3C):主请求帧 61(0x3D):从响应帧 传输方式: ?5)保留帧 标识符: ?62(0x3e), 63(0x3f) 在LIN 2.1中未对保留帧进行定义, 留给用户自定义或将来的版本升级。 9、调度表
? 10、偏移 偏移(jitter)是指一帧报文实际开始发送的时刻与帧时隙起点的时间差(该值在LDF文件中定义)。 ??? TFrame_Slot> jitter + TFrame_Maximum 11、网络管理 12、睡眠(Go To Sleep) 睡眠指令只有主节点可以发送,从节点在接到睡眠指令之后,也可以选择不进入睡眠状态而继续工作,这根据应用层协议而定。 13、唤醒(Wake Up) 在一个处于睡眠状态的LIN网络中,任何一个节点都可以发送唤醒信号。 发送节点发送的唤醒信号: 接收节点检测的唤醒信号: 14、主任务状态机模型
15、从任务状态机模型
? |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 4:35:53- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |