0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

LIN总线帧结构及各场干扰

北汇信息POLELINK 2022-09-29 12:19 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、LIN总线帧结构

一个完整的LIN总线报文帧“Message Frame”包含报头“Header”和响应“Response”,主任务发送报头,从任务用响应来补充报头形成完整的报文。

poYBAGM1HCKAehWnAACW7jZQDJI720.png

截取自LIN Specification PackageRevision 2.1

其中帧头包括间隔场、同步段以及标识符场,应答包括数据段和校验和场。每个字节之间存在字节间隔(Inter-byte Space);在报头与响应之间存在响应间隔(Response Space);两帧LIN报文之间存在帧间间隔(Inter-frame Space)。下面将详细介绍每个段的具体内容格式。

1.间隔场

间隔场由间隔信号和间隔界定符组成。间隔场表示一帧报文的起始,由主节点发出。间隔信号至少由13个显性位组成,间隔界定符至少由1个隐形位组成。间隔场是唯一一个不符合字节场格式的场,从节点需要检测到至少连续11个显性位才认为是间隔信号。

pYYBAGM1HCKABaRQAABXTObfLH4776.png

截取自LIN Specification PackageRevision 2.1

2.同步场

同步场顾名思义它的作用是确保所有从节点使用与主节点相同的波特率发送和接收数据,以下降沿为判断标志,同步段采用一个固定的字节结构0X55。从节点通过接收主节点发出的同步段,计算出主节点位速率,根据计算结果对自身的位速率重新作调整。计算公式如下:1位时间 =(第7位的下降沿时刻 - 起始位的下降沿时刻)/ 8

poYBAGM1HCKAfU4sAABudEHLgI8268.png

截取自LIN Specification PackageRevision 2.1

3.标识符场

标识符场由两部分组成,受保护 ID 段的前 6 位叫作帧 ID(Frame ID),加上两个奇偶校验位后称作受保护 ID段。

pYYBAGM1HCKARLFSAACIJ0HMqYA484.png

截取自LIN Specification PackageRevision 2.1

帧ID的范围在0x00~0x3F之间,共64个。帧ID标识了帧的类别和目的地。从任务对于帧头作出的反应(接收/发送/忽略应答部分)都是依据帧ID判断的。如果帧ID传输错误,将会导致信号无法正确到达目的地,因此引入奇偶校验位。校验公式如下,其中“⊕”代表“异或”运算,“¬”代表“取非”运算。

P0 = ID0 ⊕ ID1 ⊕ ID2 ⊕ ID4

P1 = ¬ (ID1 ⊕ ID3 ⊕ ID4 ⊕ ID5)

4.数据场

数据场用于存储节点发送的数据,数据场长度1到8个字节,采用低字节先发,低位先发策略,如果某一信号长度超过1个字节,采用低位在前的方式发送。

pYYBAGM1HCKAIuBXAACtZI5Wqo8792.png

截取自LIN Specification PackageRevision 2.1

5.校验和场

检验和场用于校验接收到的数据是否正确。校验分为经典校验(Classic Checksum)和增强校验(Enhance Checksum)。经典校验仅校验数据场,适用于诊断帧和与 LIN1.x 从机节点通信;增强校验校验标识符场和数据场,适用于与 LIN2.x 从机节点通信(诊断帧除外)。采用标准型校验和还是增强型校验和由主机节点管理,发布节点和各收听节点根据帧ID来判断采用哪种校验和。

poYBAGM1HCKACITmAAA-tVctdv8361.png

截取自LIN Specification PackageRevision 2.1

  1. LIN总线帧结构干扰

LIN帧的不同场格式需要按照协议进行开发,为了测试样件是否不响应错误的帧结构,就需要对LIN帧中各个场分别进行干扰以达到所需要的测试目的。实现干扰的方式有很多,本文通过CAPL自带函数来进行相应的干扰,下面将对CAPL函数linSendHeaderError()、linInvertRespBit()、linInvertHeaderBit()

进行介绍。

  1. linSendHeaderError()

该函数用于干扰报文头,包含三个参数,一个是syncByte,用于设置同步场位;一个是idWithParity,用于设置标识符场;最后一个是StopAfterError,该位置1表示如果报头中一旦有某个场出现错误,则终止之后报头场的发送。

具体参数如图所示

poYBAGM1HCOAdWPHAACjetH76cY597.png

截取自Vector Browser Helper

下面通过一个干扰ID为0x33的报文PID场中奇偶校验位的实例,来帮助大家进一步深入理解该函数。

// Force an error in header of LIN frame with ID=0x33 by setting wrong protected ID

on key 'h'
{
byte linID, protectedID, corParity, errParity, errPID;
// calculate protected ID with wrong parity bits
linID = 0x33; // use frame ID=0x33
protectedID = linGetProtectedID(linID); // get protected ID
corParity = (protectedID & 0xC0) >> 6; // extract parity (0xC=0=11000000)
errParity = (corParity ^ 0x2) & 0x3; // calculate wrong parity using XOR
errPID = linID | (errParity << 6); // calculate PID with wrong parity
linSendHeaderError(0x55, errPID, 0);
}

给大家大致解释一下脚本的实现逻辑,首先通过linGetProtectedID()可以获取该报文正确的PID值,然后通过corParity = (protectedID & 0xC0) >> 6提取出奇偶校验位,与0x2异或干扰校验位,最后通过errPID = linID | (errParity << 6)得出一个干扰过奇偶校验位的PID值并赋值给自己先前声明的errPID即得到了一个带有错误奇偶校验位的PID值,通过函数linSendHeaderError(0x55,errPID,0)发送错误PID值的LIN报头,即实现了对PID场的干扰。

2.linInvertRespBit()

该函数用于干扰响应,主要关注的参数如下,byteIndex用来指定干扰数据场第几字节(如果该参数值设置为报文长度,则干扰的是校验位长度);bitIndex用来指定干扰相对应第几位;level值为0的话,则把相应位从隐形干扰成显性,如果为1则反之从显性干扰成隐性;numberOfExecutions这个参数用来定义干扰的个数。

具体参数如图所示

pYYBAGM1HCOAHwZNAADw6HUOCPE221.png

截取自Vector Browser Helper

下面通过下面的示例,来帮助大家进一步深入理解该函数。

on key 'i'
{
...
// Invert first bit of byte field 8 for LIN frame with ID=0x33
linInvertRespBit(0x33, 7, 0);
...
// Invert bit 7 of checksum byte field for LIN frame with ID=0x33
linInvertRespBit(0x33, 8, 6);
...
// Invert stop bit of byte field 8 for LIN frame with ID=0x33
linInvertRespBit(0x33, 7, 8);
...
}

第一个函数是干扰第8个比特,由于bitIndex是0,所以干扰的是该比特的第一个位,其中第二个函数如果byteIndex的长度和DLC长度一样,则说明干扰的是该报文的checksum位。

3.linInvertHeaderBit()

该函数用于干扰报头,主要关注的参数如下,byteIndex用来指定干扰数据场类型,如果为-1,则是干扰间隔场,如果为0干扰同步场,如果为1干扰PID场;bitIndex用来指定干扰相对应第几位,如果为8则是干扰stopbit;level值为0的话,则把相应位从隐形干扰成显性,如果为1则反之从显性干扰成隐性;numberOfExecutions这个参数用来定义干扰的个数;disturbAfterHeaderID这个参数用来指定在该ID之后进行干扰,这个参数需要搭配waitForHeaders使用,如果设置waitForHeaders为0,disturbAfterHeaderID为5,则是等收到ID为5的报文后,在下一个报头直接进行干扰。

具体参数如图所示

poYBAGM1HCSACCVcAAFGVBLjB5A454.png

截取自Vector Browser Helper

  1. 小结

通过上述的介绍,大家应该对基于CAPL对LIN报文各场干扰有了一定的了解了。通过发送干扰的报头或者对从节点的响应进行干扰,然后再发送正常帧,即可通过该正常帧的数据,对ResponseError位是否能正确置位进行测试了。

北汇信息作为Vector中国的合作伙伴,致力于为中国汽车客户提供优质的工具支持、解决方案以及测试服务。

图片来源:LIN Specification PackageRevision 2.1以及Vector

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • LIN
    LIN
    +关注

    关注

    4

    文章

    235

    浏览量

    42152
  • CANoe
    +关注

    关注

    4

    文章

    90

    浏览量

    9967
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    虹科分享 | 如何精准判断LIN总线从节点是否在线?

    今天给大家分享一个比较实用的方法:如何精准地判断LIN总线上的从节点是否与主节点通讯。也许这时你会觉得奇怪:“我直接用诊断电脑读取故障码不就知道了?LIN总线的从节点当前如果不能通讯,
    的头像 发表于 04-16 11:40 195次阅读
    虹科分享 | 如何精准判断<b class='flag-5'>LIN</b><b class='flag-5'>总线</b>从节点是否在线?

    基于FPGA的轻量级CAN总线控制器实现方案

    CAN总线作为工业和汽车领域最常用的通信总线,具有拓扑结构简洁、可靠性高、传输距离长等优点。CAN总线的非破坏性仲裁机制依赖于ID,CAN
    的头像 发表于 04-03 10:10 4918次阅读
    基于FPGA的轻量级CAN<b class='flag-5'>总线</b>控制器实现方案

    CAN总线报错看不懂?5种错误+5步排查法一次讲清

    CAN总线通信异常?错误帧频繁出现?本文详解五种错误类型,并提供五步排查法,助你快速定位问题根源。错误的作用错误是CAN总线用于错误通
    的头像 发表于 03-16 11:36 669次阅读
    CAN<b class='flag-5'>总线</b>报错看不懂?5种错误<b class='flag-5'>帧</b>+5步排查法一次讲清

    工业级 LIN 收发器、LIN 模块优选:德国 Lipowsky LIN 线产品介绍

    本文将全面解析 Lipowsky 的 LIN 线产品,深入介绍虹科 Baby-LIN 系列 LIN 收发器与 LIN 模块的技术特点、型号选型及行业应用,为汽车电子研发、测试人员提供专
    的头像 发表于 02-10 17:09 337次阅读
    工业级 <b class='flag-5'>LIN</b> 收发器、<b class='flag-5'>LIN</b> 模块优选:德国 Lipowsky <b class='flag-5'>LIN</b> 线产品介绍

    LIN总线相关知识

    一、LIN总线定义 LIN (Local Interconnect Network,局部互联网络总线)是针对汽车分布式电子系统而定义的一种低成本的串行通讯网络。
    发表于 12-10 08:14

    LIN协议电平以及结构

    1、LIN电平 (1)LIN 总线上具有“显性”和“隐性”两种互补的逻辑电平。显性电平(参考地电压)是逻辑 0,隐性电平(电源电压)是逻辑1。 (2)隐形电平和显性电平的收发时,通过预先设定压差
    发表于 12-10 07:05

    瑞萨RL78F24系列微控制器中的LIN总线主机配置方法

    在汽车电子领域,LIN总线是RL78F24系列微控制器的核心外设之一。为简化LIN通信的配置流程,瑞萨电子提供了专用的RLIN3配置工具,该工具能够高效定义LIN信号
    的头像 发表于 12-09 17:48 3554次阅读
    瑞萨RL78F24系列微控制器中的<b class='flag-5'>LIN</b><b class='flag-5'>总线</b>主机配置方法

    瑞萨RL78F24系列微控制器中的LIN总线从机配置方法

    在汽车电子领域,LIN总线是RL78F24系列微控制器的核心外设之一。为简化LIN通信的配置流程,瑞萨电子提供了专用的RLIN3配置工具,该工具能够高效定义LIN信号
    的头像 发表于 12-02 14:11 5568次阅读
    瑞萨RL78F24系列微控制器中的<b class='flag-5'>LIN</b><b class='flag-5'>总线</b>从机配置方法

    新品发布 | 同星智能TH7012首发:CAN(FD)/LIN干扰与ISO 16845测试三合一

    符合ISO11898-1等国际标准,同星智能推出TH7012测试设备,集CAN(FD)/LIN总线干扰与ISO16845测试于一体,成为确保总线质量与系统互操作性的
    的头像 发表于 10-10 20:02 1034次阅读
    新品发布 | 同星智能TH7012首发:CAN(FD)/<b class='flag-5'>LIN</b><b class='flag-5'>干扰</b>与ISO 16845测试三合一

    为什么LIN总线端口必须选用ESD二极管?

    LIN总线端口浪涌静电防护,东沃FAE工程师推荐型号:DWESD1LINLIN总线专用,AEC-Q101认证,低电容(典型30pF),防护
    的头像 发表于 09-19 11:51 749次阅读
    为什么<b class='flag-5'>LIN</b><b class='flag-5'>总线</b>端口必须选用ESD二极管?

    LIN总线端口ESD二极管核心选型要点

    LIN总线是一种低成本、单线结构的车载网络,主要用于与传感器、执行器等设备的通信。
    的头像 发表于 09-08 15:44 3.4w次阅读
    <b class='flag-5'>LIN</b><b class='flag-5'>总线</b>端口ESD二极管核心选型要点

    虹科技术分享 | LIN总线译码功能与LIN控制交流发电机(二)

    上一期,我们详细分享了LIN总线结构、译码方法、休眠与唤醒过程。那如何借助串行译码分析总线故障?我们能否从译码结果中,进一步提取LIN线发
    的头像 发表于 08-07 11:28 1161次阅读
    虹科技术分享 | <b class='flag-5'>LIN</b><b class='flag-5'>总线</b>译码功能与<b class='flag-5'>LIN</b>控制交流发电机(二)

    LIN协议:汽车电子中的隐形功臣

    率的串行通信总线,属于局部互联网。LIN由汽车行业开发,用作经济高效的子总线系统,其属于CAN的下层网络,是SAE规范的汽车A类网络,适用于对总线性能要求不高的车
    的头像 发表于 07-01 11:40 2192次阅读
    <b class='flag-5'>LIN</b>协议:汽车电子中的隐形功臣

    如何评估CAN总线信号质量

    网络中,数据通过双绞线上的差分信号传输。信号质量直接影响节点正确解读数据的能力。信号质量差可能表现为: 位错误 :由于噪声或信号失真导致的位误判。 错误 :CAN结构错误,导致接收节点拒绝。
    发表于 06-07 08:46