文档对这4个状态和控制器模式设置函数Can_SetControllerMode都做明确的定义 引自[1] 引自[1] 8.3 CAN 模块/控制器初始化 上述两个状态一般都是先通过初始化函数设置,即在使用Can模块的任何其他功能之前,ECU状态管理器模块在启动阶段调用CAN模块的初始化函数(Can_Init)进行初始化,其内容有: 静态变量,包括标志; ...
Can_SetControllerMode ——控制器模式设置 Can_DisableControllerInterrupts Can_EnableControllerInterrupts Can_CheckWakeup Can_GetControllerErrorState Can_GetControllerMode ——获取控制器模式 Can_GetControllerRxErrorCounter Can_GetControllerTxErrorCounter Can_GetCurrentTime Can_EnableEgressTimeStamp Can_GetEgress...
static void Can_17_McmCan_lReceiveHandler(const uint8 HwControllerId, const Can_17_McmCan_RxBufferType CheckBuffType, const Can_17_McmCan_ProcessingType ProcessingType, const Can_17_McmCan_CoreGlobalType *const CoreGlobalPtr, const Can_17_McmCan_CoreConfigType *const CoreConfigPtr) 1. 2. ...
举例:ECU1::CAN1发送的错误帧只能使ECU1::CAN1进入Busoff状态,而不能使ECU2::CAN1进入Busoff,如下所示: 因为错误由ECU1::CAN1自己产生,ECU1::CAN1有问题,自己脱离CAN总线即可,不要影响ECU2::CAN1继续使用CAN总线。 2 Busoff信息交互及Busoff恢复机制 节点产生Busoff以后,ControllerMode状态自动切换到CANIF...
Can_SetControllerMode: 设置CAN控制器的工作模式。这个接口可以用来控制CAN控制器的工作模式,如初始化模式、停止模式、运行模式等。 Can_Write: 发送CAN帧。这个接口可以用来向CAN总线发送CAN帧,它需要提供一个CAN帧的数据结构,包括帧ID、数据长度和数据等信息。
清除相应的CanIf传输缓冲区, 防止调用上层模块的接收指示回调服务, 防止调用上层模块的传输确认回调服务。 如果调用CanIf_SetControllerMode()或CanIf_ControllerBusOff(),则CanIf应将相应通道的PDU通道模式设置为CANIF_TX_OFFLINE。 对于切换到CANIF_TX_OFFLINE模式的物理通道,CanIf应该: ...
AUTOSAR 时间同步方案可以通过标准API函数CanTSyn_SetTransmissionMode(Controller, Mode)来完成针对CAN时间同步报文的发送请求控制。 当Mode ==CANTSYN_TX_OFF,所有在该对应物理CAN通道上的时间同步报文发送请求均将被舍弃; 当Mode ==CANTSYN_TX_ON, 所有在该对应物理CAN通道上的时间同步报文发送请求均能够被正确处理...
由于DBC中包含3个ECU,这里分别为它们新建一个CAN Controller,点击Next可进入下图: 此时,选择DBC文件所定义的网络节点(ECU)。为之后体现系统级设计的特点,勾选3个ECU>点Next,出现下图: 在选择ECU基础上,需要选择与其相关的CAN报文,点击Select All>Finish>完成DBC文件导入。
位速率设置函数Can_SetBaudrare,使控制器状态转移到STOPPED; 控制器模式设置函数Can_SetControllerMode, 使控制器状态转移到目标状态; 硬件事件触发,比如唤醒事件使控制器从SLEEP转移到STOPPED,总线关闭事件使控制器从STARTED转移到STOPPED。 文档对这4个状态和控制器模式设置函数Can_SetControllerMode都做明确的定义 ...
在这种模式下,CanIf和CanDrv既不能发送也不能接收L-PDU。 如果在运行期间需要重新初始化整个CAN模块,EcuM会调用CanSm,通过调用CAN接口模块的API服务CanIf_SetControllerMode()来启动CAN控制器所需的状态转换,具体过程后续介绍CAN状态管理时会展开。CanIf将来自CanSm的调用映射到Candrv的调用上。