LIN协议栈及AUTOSAR开发

LIN协议栈及AUTOSAR开发

1、LIN简介

        LIN (Local Interconnect Network,本地互连网络)是专门为汽车开发的一种低成本串行通信网络。它是现有汽车多元化网络公文包的一个补充。LIN将成为层级式机动车网络执行的一个可行性因素,能够提高质量、降低车辆成本。

        LIN总线主要有以下特征:

  • 拥有多从机概念的单主机(最多实现1主机15从机)
  • 基于通用 UART/SCI 接口硬件的低成本硅的实现
  • UART/SCI接口硬件相当于软件中的一个等同体,或可以作为纯态机
  • 从机节点不需石英或陶瓷振荡器就能实现自同步信号
  • 传播时间可预先计算出来的确定性信号传播
  • 实现低成本单线实现方式
  • 传输速率最高可达 20Kb/s(推荐低速2400bps,中速9600bps,高速19200bps)
  • 基于应用交互的信号
  • 最新协议为LIN2.2,LIN2.x主机能处理LIN1.x从机,但LIN2.x从机无法与LIN1.x主机操作

2、主机从机

        LIN机群由1个主机任务和几个从机任务组成。主机节点1同时包含主机任务和从机任务。其他的所有节点只包括一个从机任务。

3、报文的帧结构

        帧由许多字段组成,一个间隔段(Break field)后面跟着4到11个字节字段。发送一帧所需的时间是发送每个字节的时间加上响应空间和字节间空间的总和。除间隔段外,每个字节段的传输都是首先发送数据的LSB,最后发送MSB。开始位被编码为0的位(显性),停止位被编码为1的位(隐性)。

3.1 间隔段

        主机任务产生,至少13bit显性值,从机节点至少检测连续的11个显性信号才会认为是间隔信号。

3.2 同步段

        值为0x55

3.3 受保护的标识符

        受保护的标识符包含两部分:0-5bit是标识符,6-7bit是奇偶校验

        标识符共6bit,值范围为0-63,分为四类:

  • 载波帧,0-59(0x3b)
  • 60(0x3c)和61(0x3d)用来携带诊断数据
  • 62(0x3e)和63(0x3f)保留用于以后改进

        奇偶校验是基于标识符进行的,公式如下

  • P0 = ID0 ⊕ ID1 ⊕ ID2 ⊕ ID4             奇校验
  • P1 = ¬ (ID1 ⊕ ID3 ⊕ ID4 ⊕ ID5)       偶校验

3.4 数据

        一帧携带1-8个字节的数据

3.5 校验和

        帧的最后一个场是校验和。校验和场里面包含取向的8个比特和,效验和包含取反的带有进位的8位和,该和的计算是在所有的数据字节或是所有数据字节和保护标志符之上的。仅根据数据字节进行计算的校验和被称为传统的校验和,它可以用于LIN1.x从机通讯。根据数据字节和标识符进行计算的校验和被称为增强校验和,可以与LIN2.x从机进行通讯,主机节点可以控制进行传统或增强校验和的使用,并由帧标识符决定;传统校验和可以与LIN1.x从机进行通讯;增强校验和可以与LIN2.x从机进行通讯,值为60 (0x3c)到63 (0x3f)的标识符经常使用传统校验和。

3.6 帧槽

        每个预定的帧会在总线上分配一个槽。槽的间隙时间必须足够长,以便能够在最糟的情况装载帧。

4、帧类型

4.1 无条件帧

        无条件帧总是携带信号,其标识符值的范围为0-59 (0x3b)。无论什么时候,只要当分配在无条件帧上的帧槽被(主机任务)处理了,无条件帧的帧头才可以被输送。无条件帧(从机任务)的发布器应向帧头提供响应。无条件帧的所有接收方应接收帧,并使它可以被应用(前提是没有发现任何错误)。

主机发送id为0x30的帧头,从节点1应答,向主机发送信息;

主机发送id为0x34的帧头,并向从节点1和从节点2发送信息;

主机发送id为0x32的帧头,从节点2向从节点1发送信息;

4.3 事件触发帧

        帧id为0-59 (0x3b)。事件触发帧是主机节点在一个帧时隙中查询各从机节点的信号是否发生变化(事件)时使用的帧,当存在多个发布节点时,通过冲突解决进度表来解决冲突。当从机节点信号发生变化的频率较低时,主机任务一次次地轮询各个信号会占用一定的带宽。为了减小带宽的占用,引入了事件触发帧的概念。同一个PID 的事件触发帧进和无条件帧对应的第一个字节数据是相同的,从机只有在自身数据变化时才发送应答,当总线上没有任何从机应答时,该帧的应答部分为空。如果总线上有超过一个从机应答,则发生冲突,主机则通过发送无条件帧轮询所有从机,解决冲突的问题。

4.4 偶发帧

        帧id为0-59 (0x3b)。偶发帧是主机节点在同一帧时隙中当自身信号发生变化时向总线启动发送的帧。当存在多个关联的应答信号变化时,通过事先设定的优先级来仲裁。偶发帧主要用于主机发送不经常变化的信息,可以理解为主机用的事件触发帧。与事件触发帧一样,偶发帧的应答也关联了一组无条件帧。

4.5 诊断帧

        诊断帧包括主机请求帧和从机应答帧,主要用于配置、识别和诊断。诊断基于ISO 15765-2传输标准和ISO 14229 UDS标准。主机请求帧的帧 ID = 0x3c,应答部分的发布节点为主机节点,一般用于诊断请求或配置从机;从机应答帧的帧 ID = 0x3d, 应答部分的发布节点为从机节点,一般为诊断应答。数据段规定为8个字节,一律采用标准型校验和。

4.6 保留帧

        0x3e,0x3f为保留帧,没有使用。

5、进度表

        进度表规定了总线上帧的传输次序以及传输时间。调度表位于主机节点,主机任务根据应用程需要进行调度。调度表可以有多个,一般情况下,轮到某个调度表执行的时候,从该调度表的入口处开始执行,到调度表的最后一个帧时,如果没有新的调度表启动则返回到当前调度表的第一个帧开始执行;也有可能在执行到某个调度表时发生中断,跳到另一个调度表后再返回,如事件触发帧就是典型的例子。

6、任务行为模式

6.1 主机任务状态机

6.2 从机任务状态机

        当从机任务充当发布服务器的角色的时候,它才负责发送帧响应;且当从机任务是认购者时,它才负责接收帧响应。从机任务有两个状态机模型:间隔和同步探测器;帧处理器

6.2.1 间隔和同步探测器

        从机任务要求能够与帧的受保护标识符场在一开始的时候保持同步。也就是说,它必须能够正确的收到受保护标志符场。在整个帧里面,它必须在要求的比特率偏差内保持同步,见《LIN物理层规范》第一部分的要求。为了达到这个目的,每个帧在开始的时候,都会伴随着间隔场和同步字节场序列。这个序列在整个LIN通讯过程中是唯一的,且能够提供足够的信息,让从机任务探测到一个新帧的开始,且能够在标识符场一开始的时候便保持同步。

6.2.2 帧处理器

        帧处理过程由两个状态组成:休眠状态和激活状态。激活状态包含5个子状态,只要间隔和同步程序(BreakAndSynch)被激活,系统就会进入接收标识符(Receive Identifier)的激活子状态。这表明,通过探测到一个新的间隔和同步序列,帧的处理程序将会被终止。

7、网络管理

7.1 从机通讯状态图

7.2 唤醒

        休眠LIN集群中的任何节点都可以通过发送唤醒信号来请求唤醒。唤醒信号是通过迫使总线在250μs到5ms内处于主导状态来发出的。主节点可以发出一个break字段,例如,通过发出一个普通的报头,因为这个报头将作为一个唤醒信号(在这种情况下,主节点必须意识到这个帧可能不会被从节点处理,因为它们可能还没有唤醒并准备好监听报头)。

        每个从节点(已接通电源)检测唤醒信号(大于150us的主导脉冲),并准备在100ms内收听总线命令,从主导脉冲的结束边缘开始测量。150 μs的检测阈值与250 μs的脉冲产生相结合,可以为未校准的从节点提供足够的检测裕度。如果发送唤醒信号的节点是从节点,它将立即准备好接收或发送帧。主节点也要唤醒,当从节点准备好后,开始发送报头来查找唤醒的原因(使用信号)。当从节点初始化后,从节点准备好接收或发送。从节点唤醒信号接收如果主节点未发送中断字段(即开始发送帧),或者发出唤醒信号的节点在唤醒信号发出后150 ~ 250 ms内未收到(来自其他节点的)唤醒信号,则发出唤醒信号的节点应重新发送一个唤醒信号。如果从节点发送唤醒信号的同时,主节点发送中断字段,则从节点应接收并识别该中断字段。

从节点接收唤醒信号
唤醒信号块

        在三次(失败)请求之后,节点在发出第四次唤醒信号之前至少要等待1.5秒。这个较长的持续时间的原因是允许集群在唤醒的从节点出现问题时进行通信,例如,如果从节点在读取总线时出现问题,它可能会无限地重新传输唤醒信号。从机可以发送唤醒信号的次数没有限制。但是,建议每个从节点在每个唤醒条件下发送的唤醒信号不超过一个三个唤醒信号块。

长时间唤醒信号

7.3 睡眠

        主机通过发送go to sleep命令将集群设置为总线睡眠模式。请求不一定强制从节点进入低功耗模式。接收到go to sleep命令后,从节点应用程序可能仍处于活动状态。这种行为是特定于应用程序的。go to sleep命令是一个主请求帧,第一个数据字节设置为0,其余字节设置为0xFF,从节点将忽略数据字节2到8,只解释第一个数据字段。在总线不活动的情况下,从节点必须能够在4秒内接收/发送帧。从节点在总线不活动的 4-10s 自动进入总线休眠模式。

8、LIN的AUTOSAR开发

8.1 在AUTOSAR中的结构

8.2 主节点LINSM状态机

8.3 主节点睡眠流程

8.3 内部唤醒流程

8.4 进度表切换流程

8.5 MCAL配置

        这里用EB的Tresos来配置LIN driver。主要是配置时钟,通道波特率以及pin脚的选择

8.6 LinIf LinSM配置

        这里使用ETAS公司的ISOLAR进行配置

8.6.1 导入LDF文件

将LDF导入到DBC arxml文件的Can节点下

选择Master节点(ISOLAR不支持配置从节点)

导入成功后将节点剪切到Can节点所在的ECU下

8.6.2 生成ECU Configuration

生成成功后Com Stack下会出现Lin Modules,system里会有相关的signals,pdu,groups等

8.6.3 LinIf主要配置

根据进度表里的帧延时时间配置LinIf时间周期,以帧延时15ms,为例

配置进度表运行模式

8.6.4 LinSM主要配置

周期和LinIf保持一致

8.6.5 其他配置

ComM

在ComM里配置LinChannel

BswM

在BswM里配置LinIf、LinSM初始化,LinSM使能,NO_COMM,FULL_COMM,ScheduleRequest的请求条件(注意:FULL_COMM要在ScheduleRequest之前才能正常运行进度表)

EcuM

在EcuM里配置LinDriver初始化

  • 24
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值