LinSM产品参考手册

缩写词注解

缩写词

英文全称

中文解释

LIN

Local Interconnect Network

局域互联网络

LinIf

LIN Interface

LIN 接口层

LinSM

LIN State Manager

LIN状态管理

简介

本文档是AUTOSAR R19-11的LIN State Manager模块参考手册。旨在指导使用LinSM模块的用户能够清晰地了解如何去使用LinSM模块。

LinSM模块的下层是Lin Interface,上层是ComM,BswM等。其主要职责是控制Lin总线的控制流。主要功能包括以下三点:

  1. 根据上层的要求切换到相应的调度表

  2. 根据上层的要求处理go-to-sleep和wake-up请求

  3. 当切换到新的状态时通知上层模块

image1

图1-1 LinSM模块在AUTOSAR架构中的位置

参考资料

[1] AUTOSAR_SWS_LINInterface.pdf,R19-11

[2] AUTOSAR_SWS_LINStateManager.pdf,R19-11

[3] AUTOSAR_SWS_LINTransceiverDriver.pdf,R19-11

[4] AUTOSAR_SWS_LINDriver.pdf,R19-11

[5] LIN Specification Package,Revision 2.1

功能描述

LIN网络的状态管理功能

控制LIN网络的通信状态(NO COMMUNICATION和FULL COMMUNICATION),处理调度表切换请求(仅主节点),处理通信模式请求,将通信状态变更通知给上层。

功能实现

在LINSM_FULL_COM状态,ComM调用LinSM_RequestComMode()请求将网络状态切换到NO_COM时,调用LinIf_GotoSleep(),并阻塞其他请求。当睡眠执行成功后,LinIf调用LinSM_GotoSleepConfirmation(),收到该通知后,将状态切换到LINSM_NO_COM,退出GotoSleep进程,接受其他请求。然后LinSM调用ComM和BswM通知接口,报告当前状态切换到NO_COM。

在LINSM_FULL_COM状态,ComM调用LinSM_RequestComMode()请求将网络状态切换到NO_COM时,LinSM保存该请求。

当LinIf检测到总线睡眠时,调用LinSM_GotoSleepIndication(),调用LinIf_GotoSleep(),并阻塞其他请求。如果之前NO_COM被请求,并且LinIf_GotoSleep()返回E_OK,LinSM调用ComM_BusSM_BusSleepMode通知ComM进入BusSleep状态。

当LinIf调用LinSM_GotoSleepConfirmation()时,将状态切换到LINSM_NO_COM,退出GotoSleep进程,接受其他请求。然后LinSM调用ComM和BswM通知接口,报告当前状态切换到NO_COM。

当节点需要唤醒网络(主动发起或者检测到唤醒信号由EcuM发起),LinSM_RequestComMode()被调用,LinSM设置超时定时器,调用LinIf_Wakeup()。

当网络被成功唤醒,LinSM_WakeupConfirmation()被调用,LinSM停止超时定时器,将状态切换到LINSM_FULL_COM。然后LinSM调用ComM和BswM通知接口,报告当前状态切换到FULL_COM。

当需要切换调度表时,BswM调用LinSM_ScheduleRequest()发送调度表切换请求,LinSM启动超时定时器,然后调用LinIf_ScheduleRequest()。

当调度表切换成功后,LinIf调用LinSM_ScheduleRequestConfirmation()通知LinSM。LinSM取消超时定时器,并将调度表切换结果通知BswM。

源文件描述

表3-1 LinSM源文件

文件

说明

LinSM.c

模块源文件

LinSM.h

模块头文件

LinSM_Cbk.h

模块提供的回掉函数接口头文件

LinSM_MemMap.h

LinSM内存映射头文件

LinSM_Cfg.h

配置头文件

LinSM_Cfg.c

配置源文件

../../_images/image268.png

图3-1 LinSM文件结构图

API接口

类型定义

LinSM_ModeType类型定义

名称

LinSM_ModeType

类型

uint8

范围

1 LINSM_FULL_COM 表示Full communication

2 LINSM_NO_COM 表示No communication

描述

用于向BswM报告当前所处的模式

输入函数描述

输入模块

API

BswM

BswM_LinSM_CurrentSchedule

BswM_LinSM_CurrentState

ComM

ComM_BusSM_ModeIndication

Lin Interface

LinIf_GotoSleep

LinIf_ScheduleRequest

LinIf_Wakeup

静态接口函数定义

LinSM_Init函数定义

函数名称:

LinSM_Init

函数原型:

void LinSM_Init( const L inSM_ConfigType* ConfigPtr)

服务编号:

0x01

同步/异步:

同步

是 否可重入:

不可重入

输入参数:

ConfigPtr

值域:

指针

输入 输出参数:

输出参数:

返回值:

功能概述:

初始化LinSM模块

LinSM_GetVersionInfo函数定义

函数名称:

Lin SM_GetVersionInfo

函数原型:

void LinS M_GetVersionInfo( Std_ VersionInfoType* versioninfo )

服务编号:

0x13

同步/异步:

同步

是 否可重入:

可重入

输入参数:

versioninfo

值域:

指针

输入 输出参数:

输出参数:

返回值:

功能概述:

初始化LinSM模块

LinSM_ScheduleRequest函数定义

函数名称:

LinS M_ScheduleRequest

函数原型:

Std_ReturnType LinSM _ScheduleRequest(

NetworkHandleType channel,

Li nIf_SchHandleType schedule

)

服务编号:

0x10

同步/异步:

异步

是 否可重入:

不可重入

输入参数:

channel

值域:

0 .. 65535

Schedule

值域:

0 .. 255

输入 输出参数:

输出参数:

返回值:

功能概述:

E_OK: 调度 表切换请求被接受

E_NOT_OK: 调度表 切换请求失败,可 能由于以下原因:

① LinS M模块还未被初始化

② Schedule参数代 表的调度表不存在

LinSM_GetCurrentComMode函数定义

函数名称:

LinSM_ GetCurrentComMode

函数原型:

Std_ReturnType LinSM_G etCurrentComMode(

NetworkHandleType network,

ComM_ModeType* mode

)

服务编号:

0x11

同步/异步:

同步

是 否可重入:

可重入

输入参数:

network

值域:

0 .. 65535

输入 输出参数:

None

输出参数:

mode

值域:

0 .. 2

返回值:

E_OK: 获取成功

E_NOT_OK: 获取失败,可 能由于以下原因:

① LinS M模块还未被初始化

② network参数 代表的通道不存在

③ m ode参数为NULL_PTR

功能概述:

获取指定网 络的当前通信模式

LinSM_RequestComMode函数定义


函数名称:

Lin SM_RequestComMode

函数原型:

Std_ReturnType LinS M_RequestComMode(

NetworkHandleType network,

ComM_ModeType mode

)

服务编号:

0x12

同步/异步:

异步

是 否可重入:

可重入

输入参数:

network

值域:

0 .. 65535

mode

值域:

0 .. 2

输入 输出参数:

输出参数:

返回值:

功能概述:

E_OK: 请求成功

E_NOT_OK: 请求失败,可 能由于以下原因:

#. LinS M模块还未被初始化

#. network参数 代表的通道不存在

#. mode参数为 请求的模式不存在

LinSM_MainFunction函数定义

函数名称:

LinSM_MainFunction

函数原型:

void LinSM_MainFunction(void)

服务编号:

0x30

同步/异步:

同步

是 否可重入:

不可重入

输入参数:

输入 输出参数:

输出参数:

返回值:

功能概述:

LinSM的周期处理函数

LinSM_ScheduleRequestConfirmation函数定义

函数名称:

LinSM_ScheduleRe questConfirmation

函数原型:

void LinSM_ScheduleRe questConfirmation (

NetworkHandleType network,

Li nIf_SchHandleType schedule

)

服务编号:

0x20

同步/异步:

同步

是 否可重入:

可重入

输入参数:

network

值域:

0 .. 65535

schedule

值域:

0 .. 255

输入 输出参数:

输出参数:

返回值:

功能概述:

Li nIf模块在成功切换 调度表后会调用本 函数通知LinSM模块

LinSM_WakeupConfirmation函数定义

函数名称:

LinSM_W akeupConfirmation

函数原型:

void LinSM_Wa keupConfirmation(

NetworkHandleType network,

boolean success

)

服务编号:

0x21

同步/异步:

同步

是 否可重入:

可重入

输入参数:

network

值域:

0 .. 65535

success

值域:

TRUE / FALSE

输入 输出参数:

输出参数:

返回值:

功能概述:

LinIf模块在发送 Wakeup信号后会调 用本函数通知LinSM

LinSM_GotoSleepConfirmation函数定义

函数名称:

LinSM_Goto SleepConfirmation

函数原型:

void LinSM_GotoS leepConfirmation(

NetworkHandleType network,

boolean success

)

服务编号:

0x22

同步/异步:

同步

是 否可重入:

可重入

输入参数:

network

值域:

0 .. 65535

success

值域:

TRUE / FALSE

输入 输出参数:

输出参数:

返回值:

功能概述:

Li nIf模块在发送go-t o-sleep命令后会调 用本函数通知LinSM

LinSM_GotoSleepIndication函数定义

函数名称:

LinSM_Go toSleepIndication

函数原型:

void LinSM_Go toSleepIndication (

NetworkHandleType Channel

)

服务编号:

0x03

同步/异步:

同步

是 否可重入:

可重入

输入参数:

Channel

值域:

0 .. 65535

输入 输出参数:

输出参数:

返回值:

功能概述:

如果收到go -to-sleep命令或者 总线空闲定时器超 时,LinIf模块会调 用本函数通知LinS M。仅用于从节点。

可配置函数定义

无。

配置

LinSM General

image2

图5-1 LinSM General容器配置图

表5‑1 LinSM General属性描述

UI名称



描 | 述 | * | * |

Dev Error Detect

取 | true/false 值 | 范 | 围 |

默 | false 认 | 取 | 值 |

参 | 打开或关闭错误( | 数 | Det)检测和通知 | 描 | | 述 | |

依 | 无 赖 | 关 | 系 |

Main Processing Period

取 | 0 .. INF 值 | 范 | 围 |

默 | 0.01 认 | 取 | 值 |

参 | LinSM模 | 数 | 块主函数调用周期 | 描 | | 述 | |

依 | 无 赖 | 关 | 系 |

Version Info Api

取 | true/false 值 | 范 | 围 |

默 | false 认 | 取 | 值 |

参 | 指示 | 数 | LinSM_GetVersion | 描 | Info函数是否可用 | 述 | |

依 | 无 赖 | 关 | 系 |

Transce iverPassiveModeSupport

取 | true/false 值 | 范 | 围 |

默 | false 认 | 取 | 值 |

参 | 选择当进入LINS | 数 | M_NO_COM时收发器 | 描 | 的状态,STANDBY | 述 | (true) or SLEEP |

(false) |

依 | 无 赖 | 关 | 系 |

LinSMConfigSet

image3

图5-2 LinSMConfigSet容器配置图

表5‑2 LinSMConfigSet属性描述

UI名称

描述

Mode Request Repetition Max

取值范围

0 .. 255

默认取值

参数描述

模式请求时,在LinI f没有应答的情况下,Li nSM模块再次请求的次数

依赖关系

LinSM Channel

image4

图5-3 LinSM Channel容器配置图

表5‑3 LinSM Channel属性描述

UI名称

描述

C onfirmation Timeout

取值范围

0 .. INF

默认取值

参数描述

LinSM在向LinIf请 求go-to-sleep,wakeu p和调度表切换时设定的 超时时间。这个超时时 间必须长于go-to-slee p命令在总线上的时间。

依赖关系

Li nSMNodeType

取值范围

SLAVE / MASTER

默认取值

参数描述

指示当前通道的类型

依赖关系

LinSMSil enceAfterWa keupTimeout

取值范围

0 .. INF

默认取值

参数描述

当一个唤醒 操作失败后,到开始下 个唤醒操作的时间间隔

依赖关系

从节点时必须配置 ,主节点不需要该参数

Transceiver Passive Mode

取值范围

true/false

默认取值

false

参数描述

指示当进入LIN SM_NO_COM状态时,收发 器所处的状态。当该参 数设置为true时,收发 器处于STANDBY模式。当 该参数设置为false时, 收发器处于SLEEP模式。

依赖关系

ComMNetwork Handle Ref

取值范围

默认取值

参数描述

指向 ComM中配置的一个通道

依赖关系

LinSMSchedule

image5

图5-4 LinSMSchedule容器配置图

表5‑4 LinSMSchedule属性描述

UI名称

描述

Schedule Index

取值范围

0 .. 255

默认取值

参数描述

调度表的序号(自动生 成,用户不需要关心)

依赖关系

Null Schedule

取值范围

true / false

默认取值

false

参数描述

表示要配置的 调度表是否为空调度表

依赖关系

当Null Schedule设 置为True时,Schedule Index Ref参数不可配置

Schedule Index Ref

取值范围

默认取值

参数描述

指 向LinIf中配置的调度表

依赖关系

当Null Schedule设 置为True时,Schedule Index Ref参数不可配置

※ LinSMSchedule容器只有主节点可以配置并且不能为空,从节点不可以配置该容器,该容器必须为空