LIN总线学习笔记(1)-总线传输规范
?关注菲益科公众号—>对话窗口发送 “CANoe ”或“INCA”,即可获得canoe入门到精通电子书和INCA软件安装包(不带授权码)下载地址。
接触LIN是从最近负责项目中开始的。项目已经快要量产了,因为中间遇到的大大小小的问题,都与LIN传输规范有关系,所以特地花时间找了点资料看了看。B站上有好多视频蛮不错的,看完收益匪浅。
这篇笔记主要总结了对于LIN总线传输规范的初步认识,具体从以下几个方面展开讨论;
- LIN网络特点
- PDU有哪些类型
- NAD是什么
- PCI指的是什么
- LIN报文中的SID以及RSID
- 单帧传输&&多帧传输
- 常见的错误处理策略
接触过CAN的应该知道,LIN的产生是为了降低车载总线技术成本,LIN总线的传输速率远小于CAN,仅为20Kbps。但是LIN网络在汽车中一般不单独存在,要与上层网络相连(如CAN)。
LIN网络特点
LIN网络由一个主机节点和多个从机节点构成。主机节点包含主机任务和从机任务,从机节点只包含从机任务。主机任务主要负责:
- 调度总线上帧的传输次序(发送调度表)
- 检测数据以及处理总线上的错误
- 作为标准时钟参考
- 接收从机节点发出的总线唤醒命令
从机任务不能够主动发送数据,需要接收主机发送的帧头,根据帧头所包含的信息(帧ID)判断做出以下哪种反应:
- 发送应答(帧中除帧头外剩下的部分)
- 接收应答
- 既不接收也不发送应答
LIN网络传输中数据帧包含了两个部分,帧头(header)和应答(Response)两部分。帧头由主节点发送,从节点接收帧头并对帧头所包含的信息进行解析判断是否需要发送应答。
PDU是什么
总线上数据传输的单元叫做PDU(协议数据单元)。主要分为三类:单帧、首帧和连续帧。
- 单帧(SF,Single Frame):只用一个PDU就完成所有数据传输的报文;
- 首帧(FF, First Frame):多帧传输时,被发送的首个PDU;
- 连续帧(CF,Consecutive Frame):多帧传输时,在首PDU发送后,紧接着发送的PDU
简言之,一个LIN单帧SF能传输的数据长度最多为5个字节;如果要传输的数据内容长度超过5个字节,则需要考虑用多帧也就是最少两帧(ff+cf)才可以完成传输。
NAD
NAD指的是从节点地址(Node Address)。LIN协议中对NAD单位进行了定义,具体如下:
LIN规范定义的,主节点发送睡眠指令,发送帧头ID 3C,单帧数据内容为:第一个字节NAD设置为0x0,其余字节设置为0xFF即可
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,PDU为:NAD?0x02?0x11 0x01 0xFF 0xFF 0xFF,0xFF为填充字节。
如果要发送的数据长度为15个字节,则发送的PDU内容如下:
FF:NAD?0x10?0x0A D1 D2 D3 D4
CF:NAD?0x21?D5 D6 D7 D8 D9 D10
CF:NAD?0x22?D11 D12 D13 D14 D15
SID以及RSID
SID(Service Identifier)是指服务标识符,在请求帧中发送;RSID(Response Service Identifier)对应于SID的响应服务标识符,在相应帧中发送。
RSID = SID + 0X40
单帧传输&多帧传输
当需要传输的有效数据长度少于6个字节时,用单帧传输。传输有效数据长度在7~4095字节,需要通过多帧的形式传输。
但是需要记住的是,LIN上面所有从节点从节点的数据传输,必须等到收到主节点的帧头后,次对外发出数据帧。也就是说如果是响应一个主节点的请求,需要通过多帧的形式才可以把反馈数据传输完毕,则FF以及每一个CF的发出都需要在收到主节点的帧头后才可以发出去。
错误处理
规范定义了一些LIN上常用的错误处理机制,比如:
- Length SF >6,则忽略该报文
- Length FF<7,则忽略该报文
- Length FF>BufferSize,则终止接收该报文
- 节点如果处于发送状态,接收到SF或FF(NAD !=0X7E),则终止发送报文,开始接收新报文
- CF编号如果错误,放弃之前接收的CF与FF
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!