LIN总线协议详解2(LIN总线报文帧结构)

目录

一、LIN总线报文帧结构 (Message Frame )

1、报文整体机构

2、同步间隔段(Break Field)

3、同步段(Sync Byte Field)

4、受保护 ID 段(Protected Identifier Field)

5、数据段(Data Field) 

6、校验和段(Checksum Field)

二、帧传输时间的计算


一、LIN总线报文帧结构 (Message Frame )

1、报文整体机构

        一个完整的LIN 总线报文帧“Message Frame”包含 报头“Header”和响应“Response”,主机任务负责发送帧头;从机任务接收帧头并对帧头所包含信息进行解析,然后决定是发送应答,还是接收应答,还是不作任何反应。

        帧头包括同步间隔段同步段以及PID(Protected Identifier,受保护ID)段,应答包括数据段校验和段,其中值“0”为显性电平(Dominant),值“1”为隐性电平(Recessive),总线上实行“线-与”:当总线上有大于等于一个节点发送显性电平时,总线呈显性电平;所有的节点都发送隐性电平或不发送信息(不发送任何信息时总线默认呈隐性电平)时,总线才呈现隐性电平,即显性电平起主导作用。图中帧间隔为帧之间的间隔;应答间隔为帧头和应答之间的间隔;字节间间隔包括同步段和受保护ID段之间的间隔、数据段各字节间之间的间隔以及数据段最后一个字节和校验和段之间的间隔。

 2、同步间隔段(Break Field)

        同步间隔段由同步间隔(Break)和同步间隔段间隔符(Break Delimiter)构成,如图3.3所示。同步间隔是至少持续 13 位(以主机节点的位速率为准)的显性电平,由于帧中的所有间隔或总线空闲时都应保持隐性电平,并且帧中的任何其它字段都不会发出大于 9 位的显性电平,因此同步间隔可以标志一个帧的开始。同步间隔段的间隔符是至少持续 1 位的隐性电平。

 3、同步段(Sync Byte Field)

        在介绍同步段之前,首先介绍一下字节域(Byte Field)的概念,字节域包括 1 位起始位(Start Bit,显性) + 8 位数据位 + 1 位停止位(Stop Bit,隐性),是一种标准 UART 数据传输格式,如图 3.4 所示。在 LIN 的一帧当中, 除了上一节讲述的同步间隔段,后面的各段都是通过字节域的格式传输的。在 LIN 帧中,数据传输都是先发送 LSB(Least Significant Bit,最低有效位),最后发送 MSB(Most Significant Bit,最高有效位)。

         LIN 同步以下降沿为判断标志,采用字节 0x55(转换为二进制为 01010101b)。同步段的字节域如图 3.5 所示。

从机节点可以不采用精度高的时钟,而采用片上振荡器等精度和成本相对较低的时钟,由此带来的与主机 节点时钟产生的偏差,需要通过同步段进行调整,调整的结果是使从机节点数据的位速率与主机节点一致。同 步段用于同步的基准时钟为主机节点的时钟。从机节点通过接收主机节点发出的同步段,计算出主机节点位速 率,根据计算结果对自身的位速率重新作调整。计算公式如下:

1位时间 =(第7位的下降沿时刻 - 起始位的下降沿时刻)/ 8

4、受保护 ID 段(Protected Identifier Field)

        受保护 ID 段的前 6 位叫作帧 ID(Frame ID),加上两个奇偶校验位后称作受保护 ID。如图 3.6 所示。

        接收/发送/忽略应答部分)都是依据帧 ID 判断的。如果帧 ID 传输错误,将会导致信号无法正确到达目的地,因此引入奇偶校验位。校验公式如下,其中“⊕”代表“异或”运算,“¬”代表“取非”运算。

 P0 = ID0 ⊕ ID1 ⊕ ID2 ⊕ ID4

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

        由公式可以看出,PID 不会出现全 0 或全 1 的情况,因此,如果从机节点收到了“0xFF”或“0x00”,可判断为传输错误。

        依据帧 ID 不同将帧进行分类,如下所示:

5、数据段(Data Field) 

        节点发送的数据位于数据段,包含 1 到 8 个字节(注 1),先发送编号最低的字节 DATA1,编号依次增加, 如图 3.7 所示。

        数据段包含了两种数据类型,信号(Signal)和诊断消息(Diagnostic messages)。

        信号(Signal)由信号携带帧传递,一个帧 ID 对应的数据段可能包含一个或多个信号。信号更新时要保证其 完整性,不能只更新一部分。一个信号通常由一个固定的节点发出,此节点称为该信号的发布节点(Publisher);其余的一个或多个节点接收,它们称为信号的收听节点(Subscriber)(注 2)。

        诊断消息(Diagnostic message)由诊断帧传递,对消息内容的解析由数据自身和节点状态决定。

  6、校验和段(Checksum Field)

        校验和段是对帧中所传输的内容进行校验,如下图所示。

校验和分为标准型校验和(Classic Checksum)及增强型校验和(Enhanced Checksum),如下表所示。

        采用标准型校验和还是增强型校验和由主机节点管理,发布节点和各收听节点根据帧 ID 来判断采用哪种校验和。

        校验方法为将校验对象的各字节作带进位二进制加法(每当结果大于等于 256 时就减去 255),并将所得最 终的和逐位取反,以该结果作为要发送的校验和。接收方根据校验和类型,对接收数据作相同的带进位二进制 加法,最终的和不取反,并将该和与接收到的校验和作加法,如果结果为 0xFF,则校验和无误,这在一定程度上保证了数据传输的正确性。

例如:采用标准型校验和,Data1 = 0x4A,Data2 = 0x55,Data3 = 0x93,Data4 = 0xE5,计算方法如表 3.3 所示:

二、帧传输时间的计算

        帧(有关帧的结构参照 3.1 节的图 3.2)在总线上传输的时间计算如表 3.4 所示。其中,TFrame_Maximum为帧在总 线上传输的最大时间;THeader_Maximum为帧头在总线上传输的最大时间;TResponse_Maximum为应答在总线上传输的最 大时间;THeader_Nominal为帧头额定传输时间:同步间隔段(包含同步间隔和同步间隔段间隔符)的最小传输时间 + 同步段传输时间 + 受保护ID段传输时间;帧头的余量THeader_Rest包含字节间间隔,规定为帧头额定传输时间的 0.4 倍;TResponse_Nominal为应答额定传输时间:数据段传输时间 + 校验和段传输时间;应答的余量TResponse_Rest包含 应答间隔以及字节间间隔,规定为应答额定传输时间的 0.4 倍;Ndata表示数据段包含N个字节。

 最小帧长度:

✓ Theader_nominal=34*Tbit
✓ Tres ponse_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

  • 31
    点赞
  • 198
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值