热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LIN总线技术详解

LIN(LocalInterconnectNetwork)总线是一种基于UART/SCI(通用异步收发器/串行接口)的低成本串行通信协议,主要用于汽车车身网络中智能传感器和执行器之间的通信。
LIN总线技术详解

概述

LIN(Local Interconnect Network)总线是一种基于UART/SCI(通用异步收发器/串行接口)的低成本串行通信协议。它主要用于汽车车身网络中的低端通信,特别是在智能传感器和执行器之间,这些应用场景不需要像CAN总线那样高的带宽和复杂的功能。

技术分享图片CAN与LIN总线的区别

在汽车网络中,LIN网络通常不单独使用,而是与上层的CAN网络结合,形成CAN-LIN网关节点,以实现更高效的网络架构。

LIN总线的主从架构

LIN总线采用单线传输,支持单主机多从机的架构,工作电压一般为12V,最大传输速率为20kbps。一个LIN网络最多可以连接16个节点。总线任务包括调度帧的传输顺序、监测数据、处理错误、提供标准时钟参考以及响应从机节点的唤醒命令。

从机节点不能主动发送数据,必须在接收到主机节点的帧头后,根据帧头信息决定是否发送应答、接收应答或忽略。

LIN总线的主要特点

LIN总线的特点包括:
1. 网络结构简单,由一个主节点和多个从节点组成。
2. 成本低廉,适合于低带宽需求的应用。
3. 传输具有确定性,传播时间可预测。
4. 具有良好的EMC(电磁兼容性)性能,最大传输速率为20kbps。
5. 支持信号配置、处理、识别和诊断功能。

LIN报文帧结构

LIN报文帧由帧头和应答两部分组成,主机负责发送帧头,从机负责接收帧头并解析,然后决定是否发送应答。帧头包括同步间隔段、同步段和PID段,应答部分包括数据段和校验和段。

技术分享图片

同步间隔段由至少13位显性电平组成,用于标记帧的开始。同步段使用字节0x55(01010101b)进行同步,允许从机节点使用低精度时钟,并通过同步段调整时钟偏差。PID段的前6位表示帧ID,后两位为奇偶校验位。

根据帧ID的不同,LIN报文可分为信号帧、诊断帧和保留帧。

LIN总线波形分析

技术分享图片LIN总线通信波形

在LIN总线通信中,所有帧头均由主机节点发送。当主机节点发送数据时,整个帧由主机节点完成。当从机节点发送数据时,帧头由主机节点发送,应答部分由从机节点发送,确保所有节点都能接收到完整的报文帧。

帧类型及其应用

1. 无条件帧
无条件帧由一个固定的发布节点发送,无论信号是否变化,帧头都会被无条件应答。例如,帧ID=0x30用于从机节点向主机节点报告状态,帧ID=0x31用于主机节点向从机节点发送指令。

2. 事件触发帧
事件触发帧用于主机节点查询从机节点的信号变化。当信号变化频率较低时,使用事件触发帧可以减少带宽占用。如果多个从机节点同时变化,主机节点将通过冲突解决进度表来确定具体的从机节点。

3. 偶发帧
偶发帧用于主机节点在信号变化时发送数据。如果多个关联信号同时变化,将根据预设的优先级进行仲裁。

4. 诊断帧
诊断帧用于配置、识别和诊断,包括主机请求帧和从机应答帧。主机请求帧ID为0x3c,从机应答帧ID为0x3d,数据段固定为8字节,使用标准校验和。

5. 保留帧
保留帧ID为0x3e和0x3f,预留用于未来扩展。

进度表管理

进度表是LIN总线的调度表,定义了帧的传输顺序和时间。进度表存储在主机节点中,根据应用程序的需求进行调度。一个LIN网络可以有多个进度表,每个进度表的执行可以被中断并切换到其他进度表,例如事件触发帧的处理。

状态机实现

主机状态机
技术分享图片

从机状态机
从机状态机负责处理帧的应答,包括同步间隔段和同步段的检查、帧处理。
技术分享图片从机任务状态机
技术分享图片帧处理任务状态机

结语

LIN总线与CAN总线是汽车网络中最重要的两种总线技术。LIN总线因其低成本和简单的架构,在车身电子控制单元(BCM)设计中广泛应用,是现代汽车电子系统的重要组成部分。


推荐阅读
  • Mysqlcheck作为MySQL提供的一个实用工具,主要用于数据库表的维护工作,包括检查、分析、修复及优化等操作。本文将详细介绍如何使用Mysqlcheck工具,并提供一些实践建议。 ... [详细]
  • 探索OpenWrt中的LuCI框架
    本文深入探讨了OpenWrt系统中轻量级HTTP服务器uhttpd的工作原理及其配置,重点介绍了LuCI界面的实现机制。 ... [详细]
  • IEC60825激光产品安全标准详解
    随着激光技术在全球范围内的广泛应用,尤其是激光投影显示技术的兴起,了解和遵守相关的安全标准变得尤为重要。本文将详细介绍IEC60825激光产品安全标准及其重要性。 ... [详细]
  • 本文介绍了一个基本的同步Socket程序,演示了如何实现客户端与服务器之间的简单消息传递。此外,文章还概述了Socket的基本工作流程,并计划在未来探讨同步与异步Socket的区别。 ... [详细]
  • 使用IntelliJ IDEA高效开发与运行Shell脚本
    本文介绍了如何利用IntelliJ IDEA中的BashSupport插件来增强Shell脚本的开发体验,包括插件的安装、配置以及脚本的运行方法。 ... [详细]
  • ED Tree HDU4812 点分治+逆元
    这道题非常巧妙!!!我们进行点分治的时候,算出当前子节点的所有子树中的节点,到当前节点节点的儿子节点的距离,如下图意思就是当前节点的红色节点,我们要求出红色节点的儿子节点绿色节点, ... [详细]
  • LoadRunner中的IP欺骗配置与实践
    为了确保服务器能够有效地区分不同的用户请求,避免多人使用同一IP地址造成的访问限制,可以通过配置IP欺骗来解决这一问题。本文将详细介绍IP欺骗的工作原理及其在LoadRunner中的具体配置步骤。 ... [详细]
  • 本文探讨了Java编程语言中常用的两个比较操作符==和equals方法的区别及其应用场景。通过具体示例分析,帮助开发者更好地理解和使用这两个概念,特别是在处理基本数据类型和引用数据类型的比较时。 ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文概述了在GNU/Linux系统中,动态库在链接和运行阶段的搜索路径及其指定方法,包括通过编译时参数、环境变量及系统配置文件等方式来控制动态库的查找路径。 ... [详细]
  • 本文详细介绍了如何使用Rufus工具制作一个兼容UEFI启动模式的Windows Server 2008 R2安装U盘,包括必要的软件和步骤。 ... [详细]
  • 本文介绍如何使用 Python 计算两个时间戳之间的时间差,并将其转换为毫秒。示例代码展示了如何通过 `time` 和 `datetime` 模块实现这一功能。 ... [详细]
  • 使用 ModelAttribute 实现页面数据自动填充
    本文介绍了如何利用 Spring MVC 中的 ModelAttribute 注解,在页面跳转后自动填充表单数据。主要探讨了两种实现方法及其背后的原理。 ... [详细]
  • 使用REM和媒体查询实现响应式布局
    本文介绍如何利用REM单位和媒体查询(Media Queries)来创建适应不同屏幕尺寸的网页布局。通过具体示例,展示在不同屏幕宽度下如何调整页面元素的样式。 ... [详细]
  • SPFA算法详解与应用
    当图中包含负权边时,传统的最短路径算法如Dijkstra不再适用,而Bellman-Ford算法虽然能解决问题,但其时间复杂度过高。SPFA算法作为一种改进的Bellman-Ford算法,能够在多数情况下提供更高效的解决方案。本文将详细介绍SPFA算法的原理、实现步骤及其应用场景。 ... [详细]
author-avatar
teemitop
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有