精华内容
下载资源
问答
  • LIN通讯

    千次阅读 2019-04-25 11:33:00
    LIN(Local Interconnect Network)总线是基于UART/SCI(通用异步收发器/串行接口)的低成本串行通讯协议。其目标定位于车身网络模块节点间的低端通信,主要用于智能传感器和执行器的串行通信。 2.背景 3.拓扑...

    1.定义

    LIN(Local Interconnect Network)总线是基于UART/SCI(通用异步收发器/串行接口)的低成本串行通讯协议。其目标定位于车身网络模块节点间的低端通信,主要用于智能传感器和执行器的串行通信。

    2.背景

    3.拓扑结构

    4.工作机理

    总线任务负责: 1. 调度总线上帧的传输次序 2. 监测数据,处理错误 3. 作为标准时钟参考 4. 接收从机节点发出的总线唤醒命令

    从机任务不能直接向总线发送数据,需要接受到主节点发送的帧头后,根据帧头所包含的信息来判断: 1. 发送应答 2. 接收应答 3. 既不接收也不应答

    4.1 报文结构

    LIN报文帧包括帧头(hearder)与应答(response)两部分。帧头结构包括同步间隔段、同步段、PID段(受保护ID)段,应答部分包括数据段与效验和段。

    单帧报文结构:

    收发过程:

    5.特点

    1. 网络由一个主节点与若干个从节点构成。

    2. 使用LIN总线可以大幅度削减成本。

    3. 传输具有确定性,传播时间可以提前计算

    4. LIN具有可预测的EMC(电磁兼容性)性能,为了限制EMC的强度,LIN协议规定最大传输速率为20kbps。

    5. LIN总线提供信号的配置、处理、识别和诊断功能。

     

    参考:https://blog.csdn.net/zhanshen112/article/details/80672458

     

    转载于:https://www.cnblogs.com/yrm1160029237/p/10767386.html

    展开全文
  • C# NI LIN通讯

    2019-08-30 09:42:32
    C# NI USB-8476 LIN通讯源码,包含命令发送示例及dll.
  • 项目上用到的LIN通讯源码,分享出来以供需要者学习参考!
  • MC9S12XEP100 LIN通讯例程

    2017-11-07 22:45:26
    MC9S12XEP100 LIN通讯例程,一个基于飞思卡尔单片机的LIN通讯例程。
  • lin通讯程序

    2011-09-09 11:43:27
    是完整的Lin通讯程序,可以直接移徝使用,内嵌的汇编不要随意更改
  • 硬件开源,基于STM8S003的LIN通讯验证板DEMO。包括原理图,PCB,Gerber生产文件。 功能描述: 采用STM8S系列单片机的LIN通信功能,配合LIN收发器进行汽车LIN总线通信功能验证与学习; 设计特点: 1、使用TJA1027T(可...
  • 汽车LIN通讯芯片 TJA1028
  • 本资料是基于MC9S14D64的LIN通讯代码,以压缩包的形式
  • LIN通讯的校验我们先从比较简单的开始,在理解校验之前需要对通讯的基础知识有所了解,因为校验的计算会涉及到基础的概念,如果对基础概念还不清楚的朋友可以参看小编之前推送的文章《汽车上除了CAN通讯还有另外一...

    c991b88f072ed0de8f541b1c1b22dafb.png

    在前一段时间推送的几篇文章中涉及到了几种不同的通讯方式,在每一个通讯方式讲解时都有提到校验,而且每一种通讯中的校验也是不尽相同的,今天小编就和大家一起看一看这些检验到底是怎么回事。

    d86cfca9d3fc0953fd4735df1f4b57dc.gif LIN通讯的校验 

    我们先从比较简单的开始,在理解校验之前需要对通讯的基础知识有所了解,因为校验的计算会涉及到基础的概念,如果对基础概念还不清楚的朋友可以参看小编之前推送的文章《汽车上除了CAN通讯还有另外一种总线你需要知道》。

    LIN通讯的校验分两种:经典型校验和增强型校验。而其应用又和协议的版本以及通讯的类型有关,LIN2.0以前通讯帧和诊断帧都是使用经典型校验,LIN2.0以及LIN2.0以后通讯帧使用的是增强型校验,而诊断帧还是使用的经典型校验,用一个表格来表示如下

    LIN 2.0以前LIN2.0以及之后
    通讯帧经典型增强型
    诊断帧经典型经典型

    两种校验类型的计算

    01

    经典型校验

    经典型校验算法涵盖的范围只有LIN的数据段,即一帧LIN信号的数据段包含几个字节的数据就计算几个字节,计算的时候是累加计算,因为校验字节只有一个字节,所以checksum的数值一定是小于255(0xFF),用一个公式来表示如下:

    byte 0 + ... + byte n + checksum = 0xFF  的整数倍

    即 checksum = 0xFF - 数据之和的低八位

    举例说明:

    假设一帧LIN数据如下

    0xc0  0x00 0x00 0x0c 0x00 0x00 0x08  0x00

    对应的checksum应该是多少呢?

    首先计算所有数据的累加和

    0xc0+0x00+0x00+0x0c+0x00+0x00+0x08+0x00 = 0xd4

    再计算checksum

    checksum = 0xff - 0xd4 = 0x2b

    所以这一帧数据的checksum是2b

    note:

    在这个例子中数据的累加和没有超过0xff,如果超过了计算方法是类似的,比如有一个字节不是0x00,而是0xff, 如下:

    0xc0  0x00 0x00 0x0c 0x00 0xff 0x08  0x00

    那么计算的累加和就是0x1d4,对应的低八位还是0xd4,所以校验和还是0x2b.

    02

    增强型校验

    增强型校验相比于经典型校验最大的区别就是计算的范围变化了,增强型校验需要计算的范围是除了数据段还要加上ID的数值,变化一下计算公式如下:

    ID + byte 0 + ... + byte n + checksum = 0xFF  的整数倍

    除此之外,在计算上和经典型校验完全一样

    举例说明:

    假设一帧LIN数据如下:

    0x08(ID) 0x30 0x12 0x09 0x22 0x32 0x02 0x87 0x91

    第一步仍然是计算累加和

    0x08 + 0x30 + 0x12 +0x09 + 0x22 +0x32 +0x02 +0x87 + 0x91 = 0x1c1

    第二步计算校验和

    累加和低八位是0xc1,0xff - 0xc1 =0x3e

    所以这一帧LIN信号的checksum为0x3e

    03

    3

    通讯帧和诊断帧

    前面说明了经典型和增强型校验算法,有的朋友可能会疑惑为什么诊断帧都是使用的经典型校验算法,因为在LIN的通讯中诊断帧的ID是固定的,请求的frame ID就是0x3c,响应的frame ID就是0x3d,所以计算不计算ID意义不是很大,所以不管哪个协议的LIN通讯,诊断帧都是使用的经典型校验算法。

    d86cfca9d3fc0953fd4735df1f4b57dc.gif CAN通讯的校验 

    在CAN通讯的数据结构中,第五个部分是CRC段,不清楚CAN通讯数据结构的可以参看此前的一篇文章《相比于LIN通讯,大家可能对CAN更感兴趣》,文章对CAN的数据结构进行了详细的说明,这个CRC段就是CAN消息的校验,这个校验是如何计算的呢,下面我们来说一下。

    01

    生成多项式

    理解CRC校验,首先需要了解生成多项式的概念,生成多项式也就是发送方和接受方约定的一个除数而已,发送方和接收方都使用这一个相同的除数进行模2运算,计算结果相同则说明传输数据没有问题,而如果计算结果不同可能传输的数据就出现了问题,目的就是为了保证数据传输的可靠性。

    上面提到的模二计算本质上就是异或运算,相同的位为0,不同的位为1,也就是不考虑进位、错位的二进制加减法运算,例如:10011011 + 11001010 = 01010001.

    常见的生成多项式:

    CRC8 = X8 + X5 + X4 +1

    CRC16 = X16 + X15 + X5 +1

    CRC12 = X12 + X11 + X3 + X2 + 1

    CRC32 = X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X5 + X4 + X2 + X1 + 1

    每一个生成多项式都是与一个代码相对应的,比如CRC8对应的代码就是100110001

    02

    通讯校验的过程

    假设被处理的报文的多项式为P(X),收发双方约定的多项式为G(X),使用P(X)除以G(X)求得余数多项式R(X),并将余数多项式R(X)附加到被处理报文多项式P(X)后,生成M(X),按照此计算,M(X)除以G(X)的余数应该是0,然后将M(X)发送给接收方,假设接收方接收的报文为N(X),除以同样的除数G(X),余数应该也是零,如果结果为零说明发送和接收序列一致,否则传输出现了问题。

    举例说明:

    假设待发送的信息为1011001,对应的多项式为X6+X4+X3=1,若选取约定多项式为G(X)=X4+X3+1,其对应的代码为11001,然后使用模二算法求出余数多项式,如下所示:

    a8fb6f857ce4673699b6abf55e649680.png

    求余数之前需要将发送消息的生成多项式乘以约定多项式的最高次幂以后做被除数,然后求得的余数为1010,将余数1010附加到发送消息的后边,则发送消息变为10110011010。

    接收方接收此数据后,再做除数运算,余数应该为0。

    03

    CAN总线中使用的生成多项式

    前面讲述了CRC校验的基本规律,而在CAN通讯中使用的CRC算法和一般的算法的区别就是生成多项式不同,计算的方式是相同的。

    通过下面一个图可以看出不同的CAN使用的生成多项式的差异

    adc0a6e19ebedf58b2afd021b1d119e1.png

    传统CAN使用的是CRC15的算法,这个通过CAN的数据结构也可以看出,CRC段的长度就是15位。CAN FD之所以有两种是因为CAN FD的数据长度是可变的,针对不同的数据长度使用的方法不同,低于16字节的使用的是CRC17,高于16字节的使用的是CRC21。

    ☆ END ☆ 1e87d3b6121c1a01fc365e05591cfec5.gif

    ●DBC文件到底是个啥

    ●顺着CAN总线的知识给大家说说仪表的故障灯是怎么点亮的

    ●相比于LIN通讯,大家可能对CAN更感兴趣

    ●汽车上除了CAN通讯还有另外一种总线你需要知道

    点在看,让更多看见。

    展开全文
  • LIN通讯技术在汽车智能电子控制系统中的应用研究.pdf
  • 汽车上的LIN通讯(一)

    千次阅读 2020-09-02 12:02:42
    汽车上的LIN通讯(概述) 1、什么是LIN? LIN(Local Interconnect Network)是面向汽车低端分布式应用的低成本、低速率(20kbps)、串行通信总线。 @由汽车行业开发,用作经济高效的子总线系统 @属于CAN的下层网络...

    汽车上的LIN通讯(概述)

    1、什么是LIN?
    LIN(Local Interconnect Network)是面向汽车低端分布式应用的低成本、低速率(20kbps)、串行通信总线。
    @由汽车行业开发,用作经济高效的子总线系统
    @属于CAN的下层网络
    @属于SAE规范的汽车A类网络
    @是对CAN总线的补充,适用于对总线性能要求不高的车身系统
    例如:车门、车窗、灯光等智能传感器、执行器的连接和控制
    @LIN实现了一种具有成本效益的智能传感器和执行器的通讯方式

    2、LIN的目标
    @为现有的汽车网络CAN提供辅助功能
    @在不需要CAN总线的带宽和多功能的场合使用,降低成本
    @将开关、执行元件和传感器从子总线连接到主总线(CAN)

    3、LIN 总线应用广泛的原因
    @目前,高/低速CAN和J1850总线已经成为标准的车用网络总线,这些总线速度极高,具有高抗电磁干扰性和高传输可靠性等优越的性能,但价格也较高
    @大量的车身和安全性能方面的应用对车用网络总线的性能要求并不太高,只需要一种性价比
    更高的标准车用网络总线,而LIN总线正好可以满足这一需求。因此,目前LIN总线技术正被
    越来越广泛的应用到车身电子中。

    4、 LIN 起源和发展
    @LIN联盟成立于1999年,并发布了LIN1.0版本
    最初联盟成员有:奥迪、宝马、克莱斯勒、摩托罗拉、博世、大众、沃尔沃等
    @2000年,LIN联盟再次发布了1.1版本
    @2001年,第一辆采用LIN1.1版本的量产汽车面世
    @2003年,LIN2.0版本出现
    @2006年,LIN2.1版本面世并沿用至今

    5、LIN 的市场
    @LIN总线产品已经成为汽车总线的第二大市场
    @第一大市场是CAN总线,其在2006年已经达到顶峰

    展开全文
  • 完整Lin通讯程序

    2011-09-09 12:07:27
    一个完整Lin协议通讯程序,大家可以直接去使用,内嵌汇编程序
  • 在之前的一篇文章中我们给大家分享了LIN通讯的一些信息,不知道大家是否感兴趣,因为其实在整车的应用中LIN应用的范围不是特别广,只是在一些对实时性要求不是很高,相对来说比较小一点的控制器才会使用,而且这些小...

    818c48bb6dc7ea120253469d4a4121a0.png

    本文首发自微信公众号“汽车技术馆”。

    在之前的一篇文章中我们给大家分享了LIN通讯的一些信息,不知道大家是否感兴趣,因为其实在整车的应用中LIN应用的范围不是特别广,只是在一些对实时性要求不是很高,相对来说比较小一点的控制器才会使用,而且这些小的零部件不太会被大家所关注,不过也不要紧,有用到最好,用不到就当拓展知识了。相比之下,CAN通讯在整车的应用还是非常广泛的,并且这个概念为大家所熟知,今天我们就和大家分享一下关于CAN通讯的一些信息。

    什么是CAN通讯

    CAN是Control Area Network,直译就是控制局域网,其实说白了和所有的网络都是类似的,大家应该知道我们经常使用的互联网,早期的时候在还没有出现无线网络形式之前都是通过网线连接的,而那时候的因特网是必须要有网线接入才可以访问,而如果你不需要访问外部的网络,只想在一个房间内的几台电脑之间建立网络的话,是可以建立局域网的,其形式如下图所示:

    6b554af45c66749bd3e3bf90babac36b.png

    建立好局域网之后,各个终端之间就可以互相访问了,简单的说就是可以实现信息的交互了,信息之间的传递是通过网线来完成的。
    而CAN通讯的出现也是借用网络的概念,所以它也是成为局域网,只不过它的局域网和我们电脑通常使用的局域网略有不同,CAN的信号传递介质是一对双绞线

    0381eb849194f8620258beb56ba169cd.png

    建立起来的CAN网络其实是和前面提到的概念是类似的

    5e81a8c91c69172656225c40fdcd1770.png

    各个节点都连接到一条CAN总线上,然后通过这一条总线实现信息的交互。

    CAN的信号结构

    还是那句老话,只要是通讯就需要有结构,CAN通讯也不例外,CAN的通讯和LIN其实都是基于帧的,CAN通讯的帧结构如下

    3e9ff65adfee1ec67cccb3db88874974.png

    这里需要说明一下,CAN的帧分为两种:标准帧和扩展帧。这也分别对应着两个不同的协议:CAN2.0A和CAN2.0B,由上图的结构可以看出,扩展帧和标准帧的区别在于ID的长度,标准帧是11位的长度,而扩展帧是29位的长度,具体的情况我们在后边介绍。
    下面我们逐一地说明一下帧结构的组成部分:

    01帧起始

    帧起始是一个显性位电平,当总线空闲时,发送节点发送一个显性电平,所有的接收节点同步于该帧起始位。这里稍微补充一下,在CAN通讯中,低电平代表的是显性电平,高电平代表的是隐性电平,所以,一个总线显性电平的信号如下:

    b39fd78d478a603956cb7ab43ce75ff2.png

    这一个显性电平的发出也代表着一帧信号的开始。

    02仲裁段


    由一开始我们分享给大家的帧结构可以看出,对于标准帧来说,仲裁段包含的部分是:ID和RTR,而对于扩展帧,仲裁段包含的部分是:ID、SRR、IDE和RTR

    dbda7ca4b69a98a1278a1f3d18b1dbb4.png

    为什么这一段称为仲裁段呢?这里我们就要说一下CAN通讯的仲裁机制。之前对CAN通讯有所了解的朋友应该知道,CAN通讯在收发数据的时候是没有像LIN那样的调度机制的,理论上来说,任何一个CAN节点在任何一个时刻都可以向总线发送数据,那么如果多个节点同时向总线发送数据就需要对信号进行裁决,所谓的裁决就是决定出来谁的可以发,谁的不可以发,因为只有一条总线,所以同一个时刻只能发送一帧消息。

    在进行裁决的时候,依据就是信号的ID,总线会对ID进行逐位的比较,比较的过程中显性电平胜出,隐形电平退出发送。举例如下:

    5c7eb9b1d14c53e6ab8ecfe028f170a5.png

    通过两次裁决之后,A节点最终获得了信息的发送权,B和C节点则在裁决过程中逐一地退出发送模式,这就是CAN信息的仲裁,所以这一段称之为仲裁段。从这里大家应该也可以看出,其实CAN的ID就决定了这帧CAN消息发送的优先级,当然这也是在整车的网路架构开发时根据不同节点的应用定义出的优先级,然后再分配相应的ID。

    ✎ 小贴士

    CAN的ID的数值越小,其优先级越高

    仲裁机制对于标准帧和扩展帧是一样的

    仲裁段中除了ID外,还有RTR,这个位是为了区分数据帧和远程帧的,当RTR为显性电平时代表的是数据帧,当RTR为隐形电平时代表的是远程帧。既然RTR也在仲裁段内,那么就会和消息的优先级有关系,如果在一帧消息内,ID都是完全一样的,到了RTR位的时候,数据帧是显性的,显然就击败了远程帧,所以同样ID下,数据帧的优先级高于远程帧,其仲裁过程如下:

    dfd29116bd515581dff15abc8dd13dba.png

    接下来我们再看IDE这个标志位,这个位存在于标准帧的控制段,而存在于扩展帧的仲裁段,这个位在两个帧当中的相对位置是一样的,都是第十三位,所以在一个网络中如果既存在标准帧又存在扩展帧,而且两个帧类型的ID是一样的,那么标准数据帧的优先级是高于扩展数据帧的,因为仲裁到第十三位时,标准帧的IDE是显性电平,而扩展帧的IDE是隐性电平,所以标准数据位胜出。
    在扩展帧当中还有一个SRR位,这个是在同样的位置替代远程请求帧的RTR的。

    03控制段

    两种类型的帧控制段的长度都是六位,在标准帧中的控制段包含IDE,保留位r0以及数据长度DLC;在扩展帧中的控制段包含保留位r0,r1以及数据长度DLC。

    7c52d477191c7ae059d8ac2befe4c4c4.png

    标准帧中包含的IDE在上一个章节中已经提到了,这里不再赘述。
    保留位暂时没有特别的用途,所以一般都用隐性位填充。DLC代表的就是下一个部分数据段的长度,从编码的规则上来说是BCD编码,可以表示的长度范围是0到8,根据具体的应用长度定义即可。

    04数据段

    这一块没有什么需要特别说明的了,根据需要传输的数据长度传输相应的字节即可。

    8835bf469371ae702bdd277f70ae6004.png

    每次传输最多只有八个字节,至于多帧传输的问题,我们在后边的文章中再给大家介绍说明。

    05CRC段


    CRC中文的意思是循环冗余校验,其目的就是要对这一帧信号中前面的部分进行校验,以保证数据传输的正确性,校验的部分包括:帧起始、仲裁段、控制段以及数据段。

    a787f07aedb2a7a76c128908bcb89aea.png

    发送节点在发送数据时会把计算的校验值写到CRC段,接收节点在接收数据时,会在接收节点以同样的CRC校验方式进行计算,然后比对自己的计算结果和接收的计算结果,以判断数据在传输的过程中是否出现了位丢失或者其它位错误的情况,是一种通讯安全的机制。和其他的累加和校验什么的都是类似的,只是CRC校验的原理稍微复杂一点,在校验的安全性上更高。
    至于其校验的原理,不在本文的内容范畴,如果大家有兴趣的话,我们可以专门写一篇关于校验机制的文章,分享给大家。

    06ACK段

    这一段和CRC是相关的,上一段进行了CRC校验的比对,如果CRC校验结果没有问题的话,接收节点会在总线发送一个显性电平。

    6edeae4cff2323d75853fd2ddd736a11.png

    最终总线的电平状态是显性电平。

    07帧结束

    和一开始的帧起始相呼应,帧结束是由七个连续的隐性电平组成。

    352e0465a9f6375c64766875ee840e2a.png

    在各种类型的CAN帧中,不管是数据帧还是远程帧,数据帧还是扩展帧都是包含相同的帧起始和帧结束。

    CAN通讯的一些特点

    它是一种多主总线,即每个节点机均可成为主机,且节点机之间也可进行通信。

    通信介质可以是双绞线,通信速率最高可达1mb/s。

    CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余校验、优先级仲裁等项工作。

    数据段长度最多为8个字节,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。同时,8个字节不会占用总线时间过长,从而倮证了通信的实时性。

    CAN协议采用crc检验并可提供相应的错误处理功能,保证了数据通信的可靠性。CAN总线所具有的卓越性能、极高的可靠性和独特设计,特别适合工业设备测控单元互连。因此备受工业界的重视,并已公认为最有前途的现场总线之一。

    b8ba8ad978d648005ae33ae087320285.png

    今天主要给大家分享了CAN的一些基本概念,以及CAN帧的结构,为理解CAN通讯机制打下一个基础,我们在后续的文章中再为大家介绍CAN通讯的报错机制,CAN通讯在诊断上的应用等等,如果有兴趣的话就关注我们吧!

    83be87b3b85905ddaef317eaf37bfe23.gif
    展开全文
  • 局域网 - LIN通讯介绍

    2020-12-06 22:53:02
    通常,使用LIN协议,去控制车灯。 使用的LIN协议速率,通常为19.2Kbit/s 协议通常要兼容LIN 2.0/2.1/2.2
  • 用TJA1021为收发器,使用的电源为DC24V,因为用于24V系统,所以特意选用1021,其电源最大可以是36V。主从两机通讯,结果用示波器抓到的波形如下。不知硬件哪里出错了。
  • 最新LIN2.2通讯协议

    热门讨论 2012-06-27 16:36:19
    最新LIN2.2通讯协议,开发LIN通讯必备的资料。请大家不要错过!
  • 通讯LIN协议

    2017-08-12 16:00:39
    可抓取LIN总线,上的数据包。
  • LIN2.0通讯应用程序

    2011-11-06 06:59:48
    LIN2.0通讯驱动程序。 用PIC单片机编写。
  • 最新LIN2.2A通讯协议

    2018-08-24 16:18:34
    最新LIN2.2A通讯协议。
  • LabVIEW LIN-CAN 通讯协议的程序
  • stm8s的lin主机通讯

    2019-03-11 14:31:52
    stm8s作为主机用于模拟BCM主节点发送报文,各个接口已实现,方便使用
  • ST官网例程_LIN_communication_with_two_STM8AF_boards_of_STM8A-DISCOVERY 两个STM8_DEMO板分别作为LIN主、从机通讯
  • LIN 协议2.0,用于汽车通讯方面用于汽车通讯方面用于汽车通讯方面用于汽车通讯方面
  • 原文链接如下:UDS(ISO14229)诊断协议-LIN有不少的朋友在后台留言说还不太清楚LIN总线是个啥,在没有了解LIN总线之前理解基于UDS的实现着实有点困难,所以今天这篇文章给大家分享一下LIN通讯。什么是LIN总线?LIN是...
  • can&lin;资料

    2018-06-06 16:13:49
    can&lin;资料通讯,适合学习CAN,LIN通讯的同学学习。。
  • LIN总线技术原理.pdf

    2021-02-05 16:10:48
    LIN通讯 ,应用,规则
  • 对汽车LIN通信有一个很全面的介绍,很适合汽车LIN通信的学习。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,793
精华内容 1,517
关键字:

lin通讯