CAN通信篇 - CanIf模块配置(三)

10 篇文章 7 订阅 ¥199.90 ¥299.90
本文详细介绍了AUTOSAR CAN通信架构下CanIf模块的配置,包括CanIfStrlDrvCfgs、CanIfCtrlCfg、CanIfTrcvCfg等一级配置容器的设置,以及CanIfRxPduCfgs、CanIfTxPduCfgs等关键配置,涉及到CanIf的Buffer、PDU和唤醒支持等功能配置。
摘要由CSDN通过智能技术生成

CanIf配置介绍

在AUTOSAR CAN通信架构下,CanIf是位于Can模块上层的模块,向下与Can模块交互。CanIf模块的配置比Can模块稍微复杂些,一级配置容器就有6个,如下图所示,下面一一详细介绍。
在这里插入图片描述

CanIfStrlDrvCfgs

CanIfCtrlDrvCfg中需要注意的是Ctrl Drv Init Hoh Config Ref是引用CanIf的Hoh配置容器(后续介绍);Ctrl Drv Name Ref是引用Can模块的CanGeneral。
在这里插入图片描述

CanIfCtrlCfg

CanIfCtrlCfg是CanIfCtrlDrvCfg的二级配置容器,其包含了相应Can通道的参数配置,如下图所示:
在这里插入图片描述
需要注意的配置项是:

  • Controller Can Controller Ref,引用Can模块的通道对应的Can控制器配置容器;
  • Controller J1939 Dynamic Address Support,定义是否支持J1939协议的动态CAN控制器地址;
  • Controller Transceiver Cfg Ref,引用CanIf模块的配置容器CanIfTrcvCfg;
  • Controller Wakeup Support,定义是否支持唤醒(CAN控制器硬件具有支持唤醒功能才可用);

CanIfTrcvCfg

CanIfTrcvCfg配置容器是CAN发送器相关设置,如下图所示:
在这里插入图片描述
在该容器的设置中仅是对CanTrcv模块的发送器配置的引用,以及决定发送器唤醒功能的开关的配置。

CanIfDispatchCfg

下图是CanIfDispatchCfg容器的配置项。
在这里插入图片描述
这里大部分配置都是配置函数名及报告的上层的,多数和Partial Network相关,另外还有几个Ram检查相关的,根据项目具体需求配置即可。

CanIfInitCfg

CanIfInitCfg配置容器是CanIf模块比较重要的一个配置单元,其中包括了CanIfBufferCfgs、CanIfInitHohCfgs、CanIfRxPduCfgs和CanIfTxPduCfgs四个二级配置容器。

CanIfBufferCfgs

CanIfBufferCfg是用于配置CanIf相对应每一个CAN通道,所使用的buffer属性,配置参数项如下:
在这里插入图片描述
这里需要注意的是:

  • Buffer Hth Ref,该项是引用Hth,后续介绍;
  • Tx Buffer Handling Type,定义Tx缓存处理方式,有三种参数 PRIO_BY_CANID、FIFO和NONE,分别表示储存在Tx缓存中的Tx-PDUs将以CANID优先级方式处理、以First-In-First-Out方式处理和禁用Tx缓存。当CAN硬件对象(MailBox)为FULL类型时,该参数必须设置为NONE;
  • Tx Buffer Mapped Tx Pdus,该参数表示处理的Tx Pdu数量,这个参数是工具从参数BufferHthRef中自动计算出来的;

CanIfInitHohCfgs

CanIfHrhCfg

该配置容器包含了每个硬件接收对象(Hardware Rx Object,HRH)的配置。
在这里插入图片描述

  • Hrh Can Ctrl Id Ref,引用前面CanIf模块对应的CanIfCtrlDrvCfg;
  • Hrh Id Sym Ref,引用Can模块定义的对应的Rx类型的Can硬件对象;

CanIfHthCfg

该配置容器包含了每个硬件发送处理(Hardware Tx Handle,HtH)的配置。
在这里插入图片描述

  • Hth Can Ctrl Id Ref,引用前面CanIf模块对应的CanIfCtrlDrvCfg;
  • Hth Id Sym Ref,引用Can模块定义的对应的Tx类型的Can硬件对象;

CanIfRxPduCfgs

该配置容器包含了每一个Rx-PDU的配置参数,每一个PDU为一个子容器,如下图所示。
在这里插入图片描述
这里面的配置需要注意的是:

  • Rx Pdu Can Id;
  • Can Id Type;
  • 对相应Hrh的引用;
  • EcuC中Pdu的引用;
  • Rx Indication UL;
    Can Id Type就是CAN报文类型,分为标准/扩展、FD/非FD,组合六种情况;对与EcuC中Pdu的引用可以看作是该PDU的存放的地方;Rx Indication UL是通知的上层,根据实际需求可以是PduR,CanTp,CDD等等。

CanIfTxPduCfgs

该配置容器包含了每一个Tx-PDU的配置参数,每一个PDU为一个子容器,如下图所示。
在这里插入图片描述
这里面的配置需要注意可Rx类型的基本一样。Tx Pdu Type这个参数是Tx Pdu特有的,用于定义Tx Pdu的类型,可定义为STATIC或DYNAMIC, DYNAMIC类型的Tx-PDU可以使用CanIf_SetDynamicTxId进行动态设置CanId,而STATIC类型的不可以;

CanIfPrivateCfg

CanIfPrivateCfg的配置项如下图所示,基本不需要特殊注意的配置。
在这里插入图片描述

CanIfPublicCfg

CanIfPublicCfg配置参数基本也不需要特殊关注,需要稍微注意的是开启了唤醒支持时,需要开启唤醒验证支持;另外是定义是否仅对NM报文做验证的配置项 WakeupCheckValidationByNM。
在这里插入图片描述

总结

CanIf模块配置主要分为如下四部分:

  • 通过CanIfCtrlDrvCfg引用到对应Can控制器;
  • 通过CanIfTrcvDrvCfg 引用到对应的Can收发器;
  • CanIf buffer的定义、配置;
  • CanIf Pdu的定义、配置(Tx和Rx)

需要特别注意的是在Pdu的配置中,需要引用到EcuC模块定义的Pdu,这里这个EcuC模块定义的Pdu,可以理解为存放该CanIf Pdu的容器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汽车电子开发攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值