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总线的控制流。主要功能包括以下三点:
根据上层的要求切换到相应的调度表
根据上层的要求处理go-to-sleep和wake-up请求
当切换到新的状态时通知上层模块
图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 |
配置源文件 |
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
图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 |
|
||||
依 | 无 赖 | 关 | 系 | |
LinSMConfigSet
图5-2 LinSMConfigSet容器配置图
表5‑2 LinSMConfigSet属性描述
UI名称 |
描述 |
|||
Mode Request Repetition Max |
取值范围 |
0 .. 255 |
默认取值 |
无 |
参数描述 |
模式请求时,在LinI f没有应答的情况下,Li nSM模块再次请求的次数 |
|||
依赖关系 |
无 |
LinSM Channel
图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
图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容器只有主节点可以配置并且不能为空,从节点不可以配置该容器,该容器必须为空