一、LIN总线应用场景
LIN总线在汽车应用方面主要应用于座位、车门与天窗模块、开关面板汽车方向盘、乘员舒适系统等外围ECU实时性要求不高或不需要精确容错的场景。
二、LIN总线特点
-
串行通信(线间干扰小,节省线束,传输距离长)
-
物理层基于ISO9141
-
单线传输(总线电压12V)
-
最高传输速率20kbps(满足车身大部分应用需求)
-
单主多从式结构(不存在冲突,无需仲裁)
-
基于UART/SCI接口(几乎所有MCU都具备LIN总线硬件基础)
-
从节点无需晶振或陶瓷振荡器就可以实现同步(利用报头里的同步场实现同步)
-
可计算的信号传输的延迟时间(网络通信可预期)
-
可灵活增加或减少从节点(无需改变其他节点或硬件电路)
-
一条总线最多可连接16个节点
LIN网络拓扑结构:
特点:
- 一个LIN网络由一个主任务,若干个从任务组成
- 主节点既有主任务又有从任务
- 从节点只包含从任务
- 主任务负责决定总线上的报文,从任务提供每一帧的数据
LIN报文帧:
通信原理:主任务发送报头,从任务用响应来补充报头形成完整报文
系统灵活性:能自由增减从节点,不需要改变其他从节点的软硬件
报文传输:报文的内容有ID来定义(与CAN相似)
广播:所有节点都能够同时地接受和响应总线上的帧
三、LIN总线详解
1、帧的结构
字节间隔位于每个字节之间,响应间隔位于报头与响应之间:
- 留给MCU足够的处理时间
- 帧长度可能增长
- 最小值可以是0
1)字节场(Byte Field)
- 基于SCI的通信格式
- 发送一个字节需要10个位时间(TBIT)
2)间隔场(Break Field)
- 表示一帧报文的起始,由主节点发出
- 间隔信号至少由13个显性位组成,间隔界定符至少由1个隐形位组成
- 间隔场是唯一一个不符合字节场格式的场
- 从节点需要检测到至少11个显性位才认为是间隔信号
3)同步场(Sync Break Field)
- 确保所有从节点使用与主节点相同的波特率发送和接收数据
4)标识符场(Identifier Field)
- 帧ID的范围从0到63(0x3f)
- 奇偶校验符(Parity)P0,P1:
5)数据场(Data Field)
- 数据场长度1到8个字节
- 低字节先发,低位先发
- 如果某一信号长度超过1个字节,采用低位在前的方式发送(小端)
6)校验和场(Checksum Field)
- 用于校验接收的数据是否正确(1个字节)
- 经典校验:只校验数据场部分
- 增强校验:校验数据场部分+ID部分
- 标识符为0x3C(60)和0x3D(61)的帧只能使用经典校验
2、帧类型
1)无条件帧(Unconditional Frame)
无条件帧是具有单一发布节点,无论信号是否发生变化,帧头都被无条件应答的帧。 无条件帧在主机任务分配给它的固定的帧时隙中传输。总线上一旦有帧头发送出去,必须有从机任务作应答(即无条件发送应答),
特点:
- 标识符(ID)为0-59(0x00-0x3b)
- 标准LIN帧类型,用于周期通信
- 主任务发出报头,相应的从任务对报头提供响应帧,所有节点接收
三种情况:
2)事件触发帧(Event Triggered Frame)
事件触发帧是主机节点在一个帧时隙中查询各从机节点的信号是否发生变化时使用的帧,当存在多个发布节点时,通过冲突解决进度表来解决冲突。事件触发帧可以增强LIN总线的响应能力,避免为了很少发生的事件,而对从节点进行轮询,从而浪费了大量的带宽。
特点:
- 事件触发帧与一个或几个无条件帧相关联
- 当其中的某个无条件帧有信号被更新时,才发送数据
- 多个无条件帧冲突时,利用冲突解决调度表解决
事件触发帧的典型应用就是轮询四个车门的开关情况。与其利用无条件帧每个车门轮询一遍,不如同时对四个车门进行询问,如果其中一个车门打开了(事件发生),该车门要对询问作应答,即事件触发的含义。这样做可以减小带宽,但同时会导致两种现象,其一就是没有车门被打开,即无节点应答——事件触发帧允许一帧中只有帧头无应答;另外一种情况就是冲突,即同时有大于等于两个车门被打开,对该问题同时作答——事件触发帧允许两个以上的节点对帧头作应答而不视为错误。当发生冲突时,主机节点需要重新作轮询,这样会增加一些响应时间,但由于事件触发帧本身就用来处理低概率事件,总的来说还是节省了带宽。
3)偶发帧(Sporadic Frame)
偶发帧是主机节点在同一帧时隙中当自身信号发生变化时向总线启动发送的帧。当存在多个关联的应答信号变化时,通过事先设定的优先级来仲裁。偶发帧能够为进度表增加一些动态特性——当主机节点的信号发生变化时才有通信发生。事件触发帧和偶发帧反映了帧在不同时机(信号变化或未发生变化)的传输状况,引入它们的目的是为了增加通信的灵活性。
特点:
- 关联的无条件帧没有信号变化,该间隙沉默,主机节点无需发帧头
- 关联的无条件帧信号变化时,发送该关联无条件帧应答部分
- 若两个及以上关联的无条件帧信号发生变化,按照事先规定的优先级进行发送
4)诊断帧(Diagnostic Frame)
诊断帧包括主机请求帧和从机应答帧,主要用于配置、识别和诊断用。主请求帧:60(0x3c),从响应帧:61(0x3d)。
传输方式:
主节点发送主请求帧报头和诊断服务,然后再发送从相应帧报头,等待从节点根据诊断服务发送响应。
5)保留帧(Reserved Frame)
保留帧的帧ID为0x3E和0x3F,为将来扩展用。
3、调度表
作用:
- 负责调度网络各报文发送的顺序
- 为每帧报文分配发送时隙(slot)(发送时隙:报文可以被发送的时间,不同报文的发送时隙可能不同)
- 调度表在网络系统设计阶段确定
- 调度表使得LIN通信具有可预测性
切换调度表:
主任务可以拥有多个调度表,并在不同的调度表之间进行切换,该处理方式增加通信的灵活性。
4、网络管理
1)初始化
复位或者唤醒时先进入初始化状态,初始化时间小于100ms,初始化结束后进入工作模式。
2)睡眠
主节点发送一帧ID为60(0x3C),第一个字节为0x00其余全为0xFF的主请求帧使处于工作模式的节点进入睡眠。
从节点接收到睡眠指令后,也可以选择不进入睡眠状态而继续工作,这根据应用层程序而定。
当总线空闲4到10秒的时候,所有从节点自动进入睡眠状态。(空闲的定义是没有显性位和隐形位之间的转换)
3)唤醒
在一个处于睡眠状态的LIN网络中,任何一个节点都可以发送唤醒信号。
唤醒信号是一个250us(在20Kbit/s波特率)到5ms(在1Kbit/s波特率)的显性电平(5个位)。
每一个节点都需要检测唤醒信号,当检测到唤醒信号之后,在100ms内完成初始化工作。
当从节点发出唤醒信号之后150ms,主节点仍未发送报头时,从节点可以再次发送唤醒信号。当连续发送了3次唤醒信号之后如果主节点仍未发送报头,从节点要至少等待1.5秒以后才可以发送第四次唤醒信号。