LIN框图
一主多从,Master task决定了在LIN总线上传送的是哪一帧,Slave task提供每一帧所携带的数据。
各层框图如下
LIN总线特点
(1)工作方式:LIN总线为单主/多从方式。
(2)数据传输线:LIN总线为单线传输。
(3)工作电压:LIN总线为12V。
(4)传输速率:LIN总线最高为20kb/s,属于低速总线(A类)。
(5)传输距离:LIN总线最长为40m。
(6)LIN总线无需仲裁。
(7)标识符的位数:LIN总线有6位标识符。
波形
主机节点:控制网络中各节点通信的节点
一个LIN网络上的通讯总是由主机任务所发起的,在主机节点上可执行主机任务和从机任务,可控制整个总线网络和协议。
LIN协议是一主多从结构,通信只能由主机节点中的主机任务发起,一个完整的LIN报文帧的传输是由主机任务和从机任务共同实现的,主任务发送报头,从任务用响应来补充报头形成完整的报文。广播形式传输:所有节点都能够接收总线上的帧。
主机任务负责:
- 在主节点上运行的,用于控制总线上所有的通信,负责报文的进度表、发送报文头的任务称为主任务。
- 常见主任务:如定义传输速率,发送同步时间间隔、同步场、标识符ID场,监控并通过检查校验和(check sum)验证数据的有效性。
- 接收从机节点发出的总线唤醒命令
从机任务不能直接向总线发送数据,需要接受到主节点发送的帧头后,根据帧头所包含的信息来判断:
- 发送应答
- 接收应答
- 既不接收也不应答
帧结构
帧(Frame)包含帧头(Header)和应答(Response)两部分。主机任务负责发送帧头,响应可以由主机,也可以由从机发。帧可以被所有节点同时接收。从机任务接收帧头并对帧头所包含信息进行解析,然后决定是发送应答,还是接收应答,还是不作任何反应。
帧头包括同步间隔段、同步段以及PID(Protected Identifier,受保护ID)段,应答包括数据段和校验和段。帧间隔为帧之间的间隔;应答间隔为帧头和应答之间的间隔;字节间间隔包括同步段和受保护ID段之间的间隔、数据段各字节间之间的间隔以及数据段最后一个字节和校验和段之间的间隔。下面对帧头和应答的各部分进行详细说明。
(1)同步间隔段
同步间隔段由同步间隔和同步间隔段间隔符构成:
同步间隔:至少是持续13位的显性电平(以主机节点速率为准),由于帧中所有间隔或总线空闲的时候都必须保持隐性电平,且帧中其他字段不会发出大于9位的显性电平,因此同步间隔可以标志一个帧的开始。(注:从机任务接收同步间隔段时,以该从机任务所在节点速率为准,当检测到总线上有持续11位的显性电平时,则认为是帧的开始)
同步间隔段间隔符:至少持续1位的隐性电平。
(2)同步段
在LIN帧中,数据传输都是先发送LSB(最低有效位),最后发送MSB(最高有效位),固定发0x55(转换为二进制为 01010101b)
从机节点可以不采用精度高的时钟,而采用片上振荡器等精度和成本相对较低的时钟,由此带来的与主机 节点时钟产生的偏差,需要通过同步段进行调整,调整的结果是使从机节点数据的位速率与主机节点一致。同步段用于同步的基准时钟为主机节点的时钟。从机节点通过接收主机节点发出的同步段,计算出主机节点位速 率,根据计算结果对自身的位速率重新作调整。计算公式如下:
1位时间 =(第7位的下降沿时刻 - 起始位的下降沿时刻)/ 8
(3)受保护ID段
受保护ID段的前6位叫做帧ID,加上2个奇偶校验位后称作受保护ID,从机任务对帧头做出的反应都是依据ID判断的,如果ID传输错误,会导致该信号无法正确到达目的地,因此引入奇偶校验位:
P0 =(ID0 ^ ID1 ^ ID2 ^ ID4)& 0x01
P1 =(~(ID1 ^ ID3 ^ ID4 ^ ID5))& 0x01
可以看出PID不会出现全0或全1的情况,因此,如果从机节点收到0xFF或者0x00,可判断为传输错误
(4)数据段
数据段包含了两种数据类型:信号和诊断消息
数据的内容与长度是由系统设计者根据帧ID事先设计好的,低字节先发,低位先发,如果某一信号长度超过1个字节,采用低字节在前的方式发送(小端)。
(5)校验和段
校验和段是对传输的内容进行校验:有经典校验和增强校验。
一般诊断帧(0x3C/0x3D)使用经典校验,数据帧使用增强校验。
(6)帧总长度
帧类型
无条件帧(Unconditional Frame)
具有单一发布节点,无论信号是否发生变化,帧头都被无条件应答的帧。
帧ID = 0x30 应答部分的发布节点为从机节点1,收听节点为主机节点。典型应用如从机节点1 向主机节点报告自身某信号的状态。
帧ID = 0x31 应答部分的发布节点为主机节点,收听节点为从机节点1 和从机节点2。典型应用如主机节点向从机节点发布信息。
帧ID = 0x32 应答部分的发布节点为从机节点2,收听节点为从机节点1。典型应用如从机节点之间彼此通信。
事件触发帧(Event Triggered Frame)
主机节点在一个时隙中查询各从机节点的信号是否发生变化时使用的帧,当存在多个发布节点时,通过冲突解决进度表来解决冲突。
引入事件触发帧的目的是节省带宽。
BCM(Master)需要获取4个车门的状态,该如何实现?
第一种方式:
每次向四个车门请求状态,浪费带宽,因为车门状态不是经常发生。
第二种方法:
将请求四个车门状态的帧合并为一个事件触发帧,Master不需要每次发送四个帧请求车门的状态,只需要发送一个事件触发帧即可,哪个车门状态发生变化,对应的车门将响应该事件触发帧。
事件触发帧的响应会出现如下三种情况:
第一种:没有车门状态变化。
第二种:一个车门状态发生变化:
第三种:多个车门状态发生变化,此时将出现冲突,冲突处理时,Master需要像第一种处理方式一样,重新发送四帧分别请求单个车门状态。LIN1.3与LIN2.0、LIN2.1处理方式有所区别,区别在于LIN1.3不切换调度表,占用事件触发帧的时隙发送,LIN2.0、LIN2.1将切换冲突调度表处理,如下图:
偶发帧(Sporadic Frame)
又称为零星帧,主机节点在同一帧时隙中当自身信号发生变化时向总线启动发送的帧。当存在多个关联的应答信号变化时,通过事先设定的优先级来仲裁。
引入零星帧的目的也是为了节省带宽,如:BCM(Master)需要发送对4个车窗的控制指令,但是,两个车窗的控制命令很少被同时执行,同样大量的带宽被浪费。具体方案如下:
诊断帧(Diagnostic Frame)
诊断帧包括主机请求帧和从机应答帧,主要用于配置、识别和诊断用。主机请求帧(Master Request Frame,MRF),帧 ID = 0x3C,应答部分的发布节点为主机节点;从机应答帧(Slave Response Frame,SRF),帧 ID = 0x3D,应答部分的发布节点为从机节点。数据段规定为 8 个字节,一律采用标准型校验和。
保留帧(Reserved Frame)
保留帧的帧 ID 为 0x3E 和 0x3F,扩展用的。
每种类型的帧都有自己的ID范围
时基
LIN网络里使用的最小时间单位
在主机里实现,用于控制调度表的时间,常用5ms或10ms
帧时隙Slot
帧时隙是调度表规定的一个帧的帧头起始到下一个的帧的帧头起始的时间。
不同帧的发送slot可能不同
Slot必须为时基Time Base的整数倍
偏移/抖动Jitter
指一帧实际开始发送的时刻与帧时隙起点的时间差
进度表(调度表)
这是调度表框图,看不懂不要紧,下面从最简单的讲起。
只有一个调度表时,采用循环执行
三个调度表存在时,顺序执行。切换到另外一个调度表时,一定要等到当前时隙的结束
调度表发生中断
允许在任意时刻切换调度表
切换调度表时,允许切换到任一调度表的任意位置
调度表除规定了帧 ID 的传输次序外,还规定了帧时隙(Frame Slot)的大小。
其中TFrame_Maximum 为帧在总线上传输的最大时间 。