• 【MCAL_CANDriver】-1.3-FullCAN和BasicCAN的差异及配置使用


    点击返回「《Autosar_MCAL高阶配置》总目录」

    目录

    1 什么是FullCAN和BasicCAN

    1.1 FullCAN / Basic CAN HRH区别

    1.2 FullCAN / Basic CAN HTH区别

    1.3 FullCAN和Basic CAN存在的原因

    1.4 FullCAN/Basic CAN HRH/HTH如何选择

    2 如何配置FullCAN和BasicCAN

    3 来自CAN Driver的理论基础

    4 结尾


    关键字:

    Hardware Object / HW Object 硬件对象

    CAN Mailbox 邮箱

    HOH:Hardware Object Handle 硬件对象句柄

    HRH:Hardware Receive Handle 硬件接收句柄

    HTH:Hardware Transmit Handle 硬件发送句柄

    MB:Message buffer

    注:上述概念详解,详见博文“【MCAL_CANDriver】-1.2-Can Mailbox邮箱,Hardware Object,HOH,HRH,HTH之间的关系icon-default.png?t=M85Bhttps://blog.csdn.net/qfmzhu/article/details/126754519”。

    1 什么是FullCAN和BasicCAN

    CanIf模块中的“7.7 BasicCAN and FullCAN reception”章节给出了如下定义:

    “用于FullCAN operation的一个CAN mailboxHardware object)仅启用单个CanId的发送或接收。因此,一个Hardware object的BasicCAN operation能够发送或接收一个范围的CanId。”

    CAN Drive模块中,参数CanHandleType的枚举值给出了如下定义:

    1. FullCAN:一个Hardware Object仅能处理一个L-PDU;
    2. BasicCAN:一个Hardware Object可以处理多个L-PDU;

    下图直观详细地展示了FullCAN和BasicCAN的用法和差异。

     

    1.1 FullCAN / Basic CAN HRH区别

    接收CAN ID的数量

    Hardware /Software Filter

    HW Object使用情况

    FullCAN HRH

    一个CANID

    (通过参数CanIdValue指定)

    不适用

    一个HRH对应一个HW Object

    BasicCAN HRH

    一组/范围的CANID

    (HW/SW Filter,Range,Mask)

    适用

    用于配置的BasicCAN接收的Hardware Receive Object能够接收通过其hardware acceptance filter的一系列CanId。此范围可能超出此HRH要接收的预定义Rx L-PDU列表。因此,CanIf随后将执行Software filter以仅将预定义的Rx L-PDU列表传递给相应的upper layer module。如果底层CAN controller提供,则CanIf可以使用多个BasicCANFullCAN HRH

    BasicCAN和FullCAN operation的主要区别在于需要一个software acceptance filtering mechanism。详见博文“【AUTOSAR-CanIf】-2.2-图解常用Software Filter Algorithm及其应用场景icon-default.png?t=M85Bhttps://blog.csdn.net/qfmzhu/article/details/126507531

    1.2 FullCAN / Basic CAN HTH区别

    发送CAN ID的数量

    HW Object使用情况

    FullCAN HTH

    一个CANID

    一个HTH对应一个HW Object

    BasicCAN HTH

    一组的CANID

    1.3 FullCAN和Basic CAN存在的原因

    一个ECU在一个CAN网络当中往往需要收发几十个(甚至上百个)CAN Message,但芯片的资源的是有限的。以S32K系列芯片为例,一个CAN Controller最多只有32MB(Message Buffer),如果CAN Drive模块中,所有RX Hardware Object的CanHandleType = FullCAN,则最多也只能接收32个CAN Messsge(假设此时不考虑发送)。

    原因是FullCAN一个Message Buffer仅接收一个CAN ID。为了能够解决该问题,这也是CanHandleType = FullCAN和BasicCAN(BasicCAN一个Message Buffer可以接收多个CAN ID)经常混合使用的原因(有时甚至所有的RX/TX HW Object都使用CanHandleType = BasicCAN)。

    详见博文“【MCAL_CANDriver】-2.1-硬件过滤(Hardware Filter)详述及配置icon-default.png?t=M85Bhttps://blog.csdn.net/qfmzhu/article/details/126713246”。

    1.4 FullCAN/Basic CAN HRH/HTH如何选择

    NM网络管理报文:特定帧唤醒使用FullCAN(如果硬件资源不够,使用BasicCAN);如果是一定范围NM网络管理报文(如CAN ID:0x400~0x4FF),使用BasicCAN。

    APP报文:重要的Message(如E2E Message)使用FullCAN(如果硬件资源不够,使用BasicCAN),不重要的报文,使用BasicCAN

    UDS/OBD诊断报文:一般使用BasicCAN。

    2 如何配置FullCAN和BasicCAN

    /Can/CanConfigSet/CanHardwareObjects/CanHardwareObject路径下,您会看到这些参数CanHandleTypeCanObjectIdCanObjectType

    这些参数与FullCAN/BasicCAN HRH/HTH关系见下表。

    CanHandleType

    CanObjectId

    CanObjectType

    FullCAN HRH

    FULL

    HRH的编号

    RECEIVE

    BasicCAN HRH

    BASIC

    RECEIVE

    FullCAN HTH

    FULL

    HTH的编号

    TRANSMIT

    BasicCAN HTH

    BASIC

    TRANSMIT

    在CanIf模块中CanIfHrhCfgsCanIfHthCfgs中,分别通过参数CanIfHrhIdSymRefCanIfHthIdSymRef引用CanHardwareObjects中的Hardware Object,最后在CanIfRxPduCfgsCanIfTxPduCfgs中,将RX/TX L-PDU与HRH和HTH进行关联。

    3 来自CAN Driver的理论基础

    SWS Item

    ECUC_Can_00323:

    Name

    CanHandleType

    Parent Container

    CanHardwareObject

    Description

    指定Hardware Object的类型(Full-CANBasic-CAN)。

    Multiplicity

    1

    Type

    EcucEnumerationParamDef

    Range

    BASIC

    Hardware Object处理多个L-PDU

    FULL

    Hardware Object仅处理一个L-PDU(标识符)

    Post-Build Variant Value

    true

    Value Configuration Class

    Pre-compile time

    X

    VARIANT-PRE-COMPILE

    Link time

    --

    Post-build time

    X

    VARIANT-POST-BUILD

    Scope / Dependency

    scope: ECU

    dependency:此配置元素仅用作CanIf的信息。相关的CAN Driver配置是通过filter mask和identifier完成的。

    4 结尾

    获取更多“汽车电子资讯”和“工具链使用”,

    请关注“汽车电子助手”,做您的好助手。

  • 相关阅读:
    Cento7 Docker-compose安装以及使用InfluxDB
    Mybatis简介
    嘴笨的技术人员怎么发言
    海外问卷调查加盟可靠吗?
    c/c++/vs2020/函数与指针形参
    consul python sdk
    金蝶云星空签出元数据提示“数据中心业务对象版本高于应用版本”
    【Echarts】自定义提示框tooltip样式,实现点击路由跳转
    redux 中间件
    【python入门】异常、文件操作
  • 原文地址:https://blog.csdn.net/qfmzhu/article/details/126771767