概述
因项目开发需求,需基于LIN2.1规范实现LIN从节点通信功能
LIN2.1
LIN2.1规范可分解为多个子规范要求,包括物理层规范、协议规范、传输成规范、节点配置和标识规范、诊断规范、应用程序和接口规范、节点能力语音规范、配置语言规范等。LIN2.1在2.0的基础上主要变化是增加了传输层规范和节点配置规范,本次LIN2.1从节点软件开发着重实现这两部分。
LINTP
PDU—打包数据单元
传输层的应用对象是诊断报文,通过PDU实现单帧或多帧的数据传输,实现超过8个字节的数据传输,最多可达到4095个字节。
LIN PDU和CAN PDU结构类似,报类型由协议控制信息(PCI)确定,每一帧都是8字节,不同的是LIN TP没有流控帧,LIN的地址信息需要占用1字节空间
NAD —从节点地址(Node Address)
物理地址范围为0x01-0x7d
功能地址为0x7e
将CAN的TP层移植到LIN时,需要注意LIN从机发送数据是主机通过发送3D报文头进行读取的方式进行,需要处理好TP层的数据如何调用LIN发送接口进行数据发送。
节点配置规范:
LIN2.1定义了多个节点配置服务SID,为了区分同一个网络中的不同节点,实现“即插即用”,避免引入新节点的时候发生NAD和PID的冲突。
规范中定义了一个16位的供应商ID,一个16位的功能ID,一个8位的变量ID,在节点配置服务中进行信息校验
常用的服务标识符如下:
LIN节点配置服务 | B0 | Assign NAD |
B1 | Assign frame identifier | |
B2 | Read by Identifier | |
B6 | Save Configuration | |
B7 | Assign frame identifier range |
例:0xB0格式
0X3C | NAD | PCI | SID | D1 | D2 | D3 | D4 | D5 |
初始NAD | 0X06 | 0XB0 | 供应商ID 低字节 | 供应商ID 高字节 | 功能ID低字节 | 功能ID高字节 | 新NAD | |
0X3D | NAD | PCI | RSID | D1 | D2 | D3 | D4 | D5 |
初始NAD | 0X01 | 0XFF | 0XFF | 0XFF | 0XFF | 0XFF | 0XFF |