CAN State Manager Module

本文介绍了CanSM的功能和时序图。
该模块应实现相应总线的控制流。
与通信硬件抽象层和系统服务层交互。

功能规范

1 CAN网络状态机

CAN State Manager Module
T_: Trigger
G_
: Guarding condition
E_*: Effect

1.1 子状态机CANSM_BSM_WUVALIDATION

CAN State Manager Module
CC:CAN Controller
->设置CAN收发器为Normal状态,CanIf_SetTrcvMode(CANTRCV_TRCVMODE_NORMAL)
->设置CAN控制器为Stopped状态,CanIf_SetControllerMode(CAN_CS_STOPPED)
->设置CAN控制器为Started状态,CanIf_SetControllerMode(CAN_CS_STARTED)

1.2 子状态机CANSM_BSM_S_PRE_NOCOM

CAN State Manager Module
CAN State Manager Module
->设置CAN控制器为Stopped状态,CanIf_SetControllerMode(CAN_CS_STOPPED)
->设置CAN控制器为Sleep状态,CanIf_SetControllerMode(CAN_CS_SLEEP)
->设置CAN收发器为Normal状态,CanIf_SetTrcvMode(CANTRCV_TRCVMODE_NORMAL)
->设置CAN收发器为Standy状态,CanIf_SetTrcvMode(CANTRCV_TRCVMODE_STANDBY)

1.3 子状态机CANSM_BSM_S_SILENTCOM_BOR

CAN State Manager Module
应该调用Dem_SetEventStatus报告Bus Off事件。

1.4 子状态机CANSM_BSM_S_PRE_FULLCOM

CAN State Manager Module
->设置CAN收发器为Normal状态,CanIf_SetTrcvMode(CANTRCV_TRCVMODE_NORMAL)
->设置CAN控制器为Stopped状态,CanIf_SetControllerMode(CAN_CS_STOPPED)
->设置CAN控制器为Started状态,CanIf_SetControllerMode(CAN_CS_STARTED)

1.5 子状态机CANSM_BSM_S_FULLCOM

CAN State Manager Module
E_TX_OFF/ON:
结果是TX_OFFLINE/TX_ONLINE
G_BUS_OFF_PASSIVE
如果CANSM_BOR_TX_CONFIRMATION_POLLING禁能且E_TX_ON持续时间大于等于CANSM_BOR_TIME_TX_ENSURED;
或如果CANSM_BOR_TX_CONFIRMATION_POLLING使能且API:CanIf_GetTxConfirmationState返回CANIF_TX_RX_NOTIFICATION则满足条件G_BUS_OFF_PASSIVE。
T_SILENT_COM_MODE_REQUEST
CanSM_RequestComMode(COMM_SILENT_COMMUNICATION)
T_BUS_OFF
如果回调函数CanSM_ControllerBusOff,则以T_BUS_OFF触发状态切换。
T_RESTART_CC_INDICATED
在重启CAN控制器后,CanSM获得状态指示,则以T_RESTART_CC_INDICATED触发状态切换。
G_TX_ON
如果参数CanSMEnableBusOffDelay是FALSE:当bus-off恢复次数小于CanSMBorCounterL1ToL2时,经过时间CanSMBorTimeL1;或当bus-off恢复次数大于等于CanSMBorCounterL1ToL2时,经过时间CanSMBorTimeL2则满足G_TX_ON。

CAN State Manager Module
子状态机CANSM_BSM_S_TX_TIMEOUT_EXCEPTION

1.6 子状态机CANSM_BSM_S_CHANGE_BAUDRATE

CAN State Manager Module
CanIf_SetBaudrate() 如果直接设置波特率失败,执行
->设置CAN控制器为Stopped状态,CanIf_SetControllerMode(CAN_CS_STOPPED)
->设置CAN控制器为Started状态,CanIf_SetControllerMode(CAN_CS_STARTED)

2 ECU online active / passive

如果调用CanSM_SetEcuPassive(true),那么CanSM应该将PDU的状态设为CANIF_TX_OFFLINE_ACTIVE,相应的设置API为CanIf_SetPduMode。
如果调用CanSM_SetEcuPassive(false),那么CanSM应该将PDU的状态设为CANIF_TX_ON,相应的设置API为CanIf_SetPduMode。.

2.1 CanSm_StartCanController

CAN State Manager Module

2.2 CanSm_StopCanController

CAN State Manager Module
它与通信硬件抽象层和系统服务层交互。