CanIf:
在AUTOSAR中与上层通信层与CAN驱动程序服务接口
1、初始化CANIF
CanIf_InitMemory() 初始化全局配置,将CANIF初始化成原始数据
CanTrcv_xxx_InitMemory() 、CanTrcv_xxx_Init() 初始化CAN收发器,要在CanIf_Init()之前就 要把收发器设置成正常状态
Can_InitMemory() 、 Can_Init() 初始化CAN存储以及初始化CAN(也要在CanIf_Init()之前调用)
CanIf_Init() 初始化所有的CAN接口控制器,
CanIf_SetControllerMode(0, CANIF_CS_STARTED) 配置CANIF在CAN控制器0的状态为启动状态
CanIf_SetPduMode(0, CANIF_SET_ONLINE) 配置CAN接口在CAN控制器0上的模式为在线模式
在初始化CANIF之前要先调用 EcuM_BswErrorHook(),当产生下面任一错误时初始化操作就会停止
错误1:ECUM_BSWERROR_NULLPTR 指向配置的指针无效
错误2:ECUM_BSWERROR_COMPATIBILITYVERSION 收发器不兼容
错误3:ECUM_BSWERROR_MAGICNUMBER 罕见的数字错误
2、通信
控制器模式:物理状态上控制,有停止(CANIF_CS_STOPPED)、启动(CANIF_CS_STARTED)、睡眠(CANIF_CS_SLEEP)、不初始化(CANIF_CS_UNINIT),每次进行转换都要先停止再切换,比如要想从开始模式切换到睡眠模式,就要先让切换到停止模式再切换到睡眠模式