LIN诊断---传输层结构

PDU

总线上数据传输的单元叫做PDU(协议数据单元)。主要分为三类:单帧、首帧和连续帧。

  • 单帧(SF,Single Frame):只用一个PDU就完成所有数据传输的报文;
  • 首帧(FF, First Frame):多帧传输时,被发送的首个PDU;
  • 连续帧(CF,Consecutive Frame):多帧传输时,在首PDU发送后,紧接着发送的PDU

 如下图所示:PDU的结构包括  节点地址(NAD) ,协议控制信息(PCI),服务ID(SID),应答ID(RSID),消息字段(D1-D6)。发送数据是NAD首先发送。

简言之,一个LIN单帧SF能传输的数据长度最多为5个字节;如果要传输的数据内容长度超过5个字节,则需要考虑用多帧也就是最少两帧(ff+cf)才可以完成传输(例:通过LIN 更新代码)。

1.NAD

NAD指的是从节点地址(Node Address)。LIN协议中对NAD单位进行了定义,具体如下

LIN规范定义的,主节点发送睡眠指令,发送帧头ID为 3C,单帧数据内容为:第一个字节NAD设置为0x0,其余字节设置为0xFF即可。

2.PCI

PCI即协议控制信息(Protocol Control Information)。PCI包含PDU的类型、编号和报文的有效数据长度等信息。根据PDU的不同,PCI不同,具体如下:

注:多个PDU组成的报文中,在每个连续帧CF中必须加入包编号,第一个CF的包编号是1,第二个是2,……包编号超过15则重新从0开始计算。

比如,如果要发诊断ECUreset请求(11 01),需要发送的PDU类型为单帧就可以了,帧头ID为3C,数据长度为2,所以PCI为0x02。

SF:NAD 0x02 0x11 0x01 0xFF 0xFF 0xFF,0xFF为填充字节。

如果要发送的数据长度为15个字节,则发送的PDU内容如下:

FF:NAD 0x10 0x0F 0x11 D1 D2 D3 D4

CF:NAD 0x21 D5 D6 D7 D8 D9 D10

CF:NAD 0x22 D11 D12 D13 D14 D15

3.SID、RSID

SID(Service Identifier)是指服务标识符,在请求帧中发送;RSID(Response Service Identifier)对应于SID的响应服务标识符,在响应帧中发送。

肯定响应,RSID = SID + 0X40

否定响应,RSID = 7F+SID+NRC(1 byte)

4.单帧传输&多帧传输

当需要传输的有效数据长度少于6个字节时,用单帧传输。传输有效数据长度在7~4095字节,需要通过多帧的形式传输。

但是需要记住的是,LIN上面所有从节点从节点的数据传输,必须等到收到主节点的帧头后,次对外发出数据帧。也就是说如果是响应一个主节点的请求,需要通过多帧的形式才可以把反馈数据传输完毕,则FF以及每一个CF的发出都需要在收到主节点的帧头后才可以发出去。

5.错误处理

规范定义了一些LIN上常用的错误处理机制,比如:

  • Length SF >6,则忽略该报文
  • Length FF<7,则忽略该报文
  • Length FF>BufferSize,则终止接收该报文
  • 节点如果处于发送状态,接收到SF或FF(NAD !=0X7E),则终止发送报文,开始接收新报文
  • CF编号如果错误,放弃之前接收的CF与FF
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值