Bootstrap

使用Basic-CAN模式接收CANFD报文-基于ETAS工具

前言

由于客户提供的CANFD报文接收数量越来越多,使用FULL CAN模式的mailbox完全不够用了,之前为了图方便继续使用FULLCAN,采用了分CanRamBlock的方式,参考:S32K324 CANFD报文接收超限分析,本文介绍使用BasicCAN方式,通过CANIF的过滤实现特定报文的接收

MCAL CAN的修改

将对应CAN Mailbox修改为Basic CAN,并修改对应的CanHwFilter。本文以报文0x305为例,需要接收的报文还有0x307,0x302,低3bit分别为101b,111b,010b,故最低三个bit不能作为过滤的bit,所以在MCAL这边需要配置的Can Hw Filter Code为0x305,Can Hw Filter Mask为0x7f8,这样配置完后,在CAN Driver这边能接收的报文可以从0x300-0x307
在这里插入图片描述

在这里插入图片描述
在ISOLAR对应的CAN模块中也要修改,否则生成BSW会报错

CANIF配置修改

CanIfInitCfg

CanIfInitHohCfg

将CanIfInitHohCfg中对应接收报文的CanIfHrhCfg中的配置修改为与MCAL CAN中一致,并关联对应的CAN Mailbox
在这里插入图片描述

CanIfRxPduCfg

创建对应的PDU,并配置对应的ID和MASK(mask为0x7ff,或者不填,默认也是7ff),以0x302为例,示例配置如下:
在这里插入图片描述
需要关联对应的CanIfRxPduHrhIdRef(CanIfHrhCfg中配置)和PDU。

后面还需要配置PduR,及Com中的Pdu和Signal,本文不再介绍,可以参考:Autosar 通讯栈配置-手动配置PDU及Signal-基于ETAS软件

总结

通过软件过滤的方式,会增加CAN驱动接收的负载,因为使用Mask方式,难免会有不希望接收的报文进入CAN Driver,但是在硬件无法满足过滤的情况下,软件过滤也是一种合理的方法。

;