CAN State Manager Module
本文介绍了CanSM的功能和时序图。
该模块应实现相应总线的控制流。
与通信硬件抽象层和系统服务层交互。
功能规范
1 CAN网络状态机
T_: Trigger
G_: Guarding condition
E_*: Effect
1.1 子状态机CANSM_BSM_WUVALIDATION
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控制器为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
应该调用Dem_SetEventStatus报告Bus Off事件。
1.4 子状态机CANSM_BSM_S_PRE_FULLCOM
->设置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
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。
子状态机CANSM_BSM_S_TX_TIMEOUT_EXCEPTION
1.6 子状态机CANSM_BSM_S_CHANGE_BAUDRATE
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
2.2 CanSm_StopCanController
它与通信硬件抽象层和系统服务层交互。