不同Autosar CAN版本的主要实现差异
文章目录
- 前言
- Autosar规范
- CanIf_RxIndication
- 4.0.3
- 4.2.2及以上
- Can_Write
- CanIf_ControllerModeIndication
- 4.2.2及以下
- 4.3.1
- Can_SetControllerMode
- 4.2.2及以下
- 4.3.1
- 总结
前言
针对于不同的Autosar版本,例如4.0.3,4.2.2,4.3.1,其对应的CAN driver实现有部分差异,对应的CanIf模块也需要进行适配,本文介绍规范中各个版本的主要差异
Autosar规范
4.0.3的规范在官网正常搜不到了,但是我发现一个链接规律,以4.3.1版本的CANDriver为例,官网上的文档链接为:https://www.autosar.org/fileadmin/standards/R4.3.1/CP/AUTOSAR_SWS_CANDriver.pdf,这样是不是很明显可以看出来了,所以只要改下Autosar版本号,找到需要的规范名称,理论上即可找到对应的规范文档
CanIf_RxIndication
4.0.3
4.0.3版本的CanIf_RxIndication需要传递ID,DLC,data buffer指针
4.2.2及以上
ID已经集成到mailbox的结构体里面了,DLC集成到pduinfo的结构体里面了
Can_Write
各个版本的API是一样的
注意:CanIdType在4.0.3不支持Canfd,后面的版本才支持
4.0.3定义如下:
4.2.2及以上定义如下:
CanIf_ControllerModeIndication
ControllerMode的定义不同
4.2.2及以下
对应的参数ControllerMode类型为CanIf_ControllerModeType,其定义为
4.3.1
对应的参数ControllerMode类型为Can_ControllerStateType,其定义为
Can_SetControllerMode
Transition参数定义不同
4.2.2及以下
Transition类型为Can_StateTransitionType,其定义为
4.3.1
Transition类型为Can_ControllerStateType,其定义为
总结
在进行不同的MCAL版本切换时,需要注意版本间的差异,否则可能导致CAN通信异常。