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

article/2025/10/11 11:33:22

点击返回「《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 结尾

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

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


http://chatgpt.dhexx.cn/article/C5mjLhGQ.shtml

相关文章

MCAL MCU Module详解和配置说明

关注“嵌入式软件实战派”回复“AUTOSAR”获得更多实战教程。 以下内容包含:基本概念、模块依赖、应用时序、参数配置实践讲解,以及ECUM对其引用等。 1. 基本概念 描述了MCU(Microcontroller Unit) 驱动程序的功能和 API。 MCU 驱…

搞一点AutoSar--MCAL SPI-1

整理了一点SPI的资料 目录 1、SPI模块简介2、SPI驱动模块API的使用方法3、SPI通信主要概念4、选择SPI通道缓存(Buffer)位置5、SPI驱动模块API调用流程 1、SPI模块简介 图1 MCAL 4个驱动组与微控制器内核和外设的映射关系SPI属于MCAL模块中的通信驱动组&…

【MCAL_CANDriver】-1.2-Can Mailbox邮箱,Hardware Object,HOH,HRH,HTH之间的关系

点击返回「《Autosar_MCAL高阶配置》总目录」 目录 1 关键字定义 2 Maibox与Hardware Object之间的关系 2.1 接收L-PDU 2.2 发送L-PDU 3 HOH,HRH,HTH,Hardware Object之间的关系 4 Message buffer(MB)结构 5 结尾 1 关键字定义 Mailb…

图解AUTOSAR(五)——微控制器抽象层(MCAL)

微控制器抽象层位于AUTOSAR分层模型中BSW最底层,包含内部驱动,可以直接访问微控制器和片内外设。更进一步地,MCAL又可以分为微控制器驱动、存储器驱动、通信驱动和I/O驱动四个部分,各部分又由具体的与微控制器硬件相对应的驱动模块…

MCAL架构

MCAL位于AUTOSAR软件架构中基本软件(BSW)的底层,是可以直接访问MCU寄存器和内部外设的底层驱动。这样划分的目的是使上层软件(如ECU抽象层、系统服务层等)独立于MCU硬件平台,保证上层软件的标准化和通用性。…

AutoSar之微控制器抽象层MCAL

微控制器抽象层位于AUTOSAR BSW的最底层,包含内部驱动,可直接访问微控制器和外设芯片。从具体应用来看,MCAL主要包括微控制器驱动、存储器驱动、通信驱动和输入输出驱动四个部分,各部分又由具体的与微控制器硬件相对应的驱动模块组…

MCAL介绍及Module Plugin开发流程总结

Mcal–微控制器抽象层位于AUTOSAR分层模型中BSW最底层,包含内部驱动,可以直接访问微控制器和片内外设。 MCAL又可以分为微控制器驱动、存储器驱动、通信驱动和I/O驱动四个部分,各部分又由具体的与微控制器硬件相对应的驱动模块组成。如图所示…

Autosar MCAL软件架构基本概念

MCAL架构介绍 Autosar整体架构图如下所示: MCAL是MicroController Abstraction Layer(微控制器抽象层)的缩写。如下图所示,MCAL位于AUTOSAR软件架构中基本软件(Basic Software,BSW)的底层&…

【Autosar】学习总结-MCAL

一、简介 MCAL:微控制器抽象层;位于BSW层中的最下层; MCAL细分,可将驱动分为:微控制器驱动、存储器驱动、通信驱动、IO驱动: 二、MCAL的配置(EB-Tresos) 1.PORT 我理解的PORT&…

Object数据转map类型

最近 因为调用接口 返回数据 原本项目中是用List<Map<String, Object>> a 接收的 等于说我只能获取到 Map m1 a.get(0); 到第一层的数据 m1.get(“HttpCode”)的数据 然后就是objcet的数据了 无法直接获取到 之前在网上找了好多 什么直接转成jsonObject因为格式的…

Javascript Object和Map之间的转换

简单的区分Map和Object Map是ES6退出的一个类型&#xff0c;特点&#xff1a;任何值都可作为属性名 Object特点&#xff1a;属性名只能是字符串(一开始我也不信&#xff0c;测试后才发现的) 代码图片 创建一个map类型 new Map([[key, value],[key1, value1] ])简单的介绍下面…

Object 转Map,Map转Object方式总结

商品业务对象定义&#xff1a;Product Product product new Product(); product.setId(1L); product.setName("爱他美") product.setProductDt("2022-03-16") 第一种&#xff1a;通过Alibaba Fastjson实现&#xff1a; pom.xml 文件依赖 <dependen…

使用PyQt打包命令pyinstall的几个问题

**问题1&#xff1a;**打包后无demo.spec文件 在windows下使用cmd界面打包时&#xff0c;可以将路径设置到目标文件目录&#xff0c;这样会生成demo.spec文件&#xff0c;方便后期改正软件。 问题2&#xff1a;打包好后提示如下错误&#xff1a; 解决办法&#xff1a;在demo.…

PyCharm打包失败及Pyinstall无法安装问题的解决

问题描述 Python的工程很多情况下需要打包成EXE文件&#xff0c;通过pyinstaller的工具进行打包&#xff0c;首先需 要安装PyInstaller的工具&#xff0c;然后再通过命令行进行打包&#xff0c;安装 PyInstaller 模块与安装其他 Python 模块一样&#xff0c;使用 pip 命令安装…

pyinstall 打包python3.7.1的exe反编译

pyinstall 打包python3.7.1的exe反编译 由于 pyinstall打包的EXE文件&#xff0c;被360认为可能有木马病毒&#xff0c;首先怀疑计算数机系统有毒。用360杀毒&#xff0c;病毒倒是查处了十几个&#xff0c;对于一个对计算机不是十分精通的人来说&#xff0c;只能按360的提示去做…

pyinstall打包多个.py文件成应用程序

Pyinstall打包多个.py文件成应用程序的方法&#xff1a; 这里成功打包了两个.py文件&#xff0c;一张图片&#xff0c;一个.h5文件 如图所示&#xff1a; 第一步&#xff1a;生成.spec文件 pyinstaller -c -D main.py -p image_handler.py这里main.py文件是主文件&#xff0…

解决python3.6中pyinstall打包失败的问题

环境&#xff1a;python 3.6 pyinstall 一开始用百度上的方法&#xff0c;直接执行python目录下的pyinstall.exe文件&#xff0c;很好用。 C:\WINDOWS\System32>C:\Users\hasee\AppData\Local\Programs\Python\Python36\Scripts\pyinstaller.exe F:\python_code_test\ren…

pyqt5 +pyinstall打造属于自己的桌面版程序(学习阶段)

网上关于pyqt5的教程特别少,终于东拼西凑,做出一点东西出来,很简单的小应用,便于上手学习。 pyqt5的主文件代码如下,代码特别多,也没怎么细分。大家可以参考下。github地址 pyinstall打包的一点小技巧送给大家。 取消生成程序doc窗口使用命令pyinstaller -F -i 图标路径 …

tkinter - 使用Pyinstall进行打包封装

1 需要安装 PyInstaller C:\Users\30818> pip install pyinstaller 2 将模块py文件打包成pyd 防止反编译暴露源代码 pyd是一个模块插件 可以通过 Import 来引入pyd文件 直接编译会提示二进制读取错误 2-1 安装cython pip install cython 2-2 在当前目录创建一个 set…

【踩坑日记(一)】: Pyinstall 打包.py文件 生成exe可执行文件

文章目录 Pyinstall 打包.py文件 生成exe可执行文件如何入坑&出坑Analysis 实例其他实例常用参数参考文档&#xff1a;Pyinstall 官方手册 Pyinstall 打包.py文件 生成exe可执行文件 原本认为很轻松的事情&#xff0c;结果花了近2个小时才搞定&#xff0c;值得记录下踩的坑…