【CAN】Mailbox/Hardware Object/HRH/HTH概念介绍

发布时间:2024年01月14日


>>返回总目录<<

1. 前言

Aurix TC3xx系列MCU中的MCMCAN模块是基于Bosch的M_CAN的IP实现的,本文主要介绍MCMCAN的一些基本信息。如下图,每个MCU有3个MCMCAN模块,每个模块有4个Can nodes,也就是4个CAN控制器,总共有12个CAN控制器。
在这里插入图片描述

2. MCMCAN硬件RAM缓存区

2.1 RAM缓存区分配

MCMCAN硬件单元中有一段RAM区域来作为发送和接收报文数据的缓存区,下面是每个Controller的RAM区地址空间分配图。
在这里插入图片描述

2.2 发送缓存区

发送缓存区每个element支持3种模式:Tx Dedicated Buffer,Tx FIFO Buffer和Tx Queue Buffer,只支持一个Tx FIFO。每个CAN Controller最大支持32个Tx Buffers,这些缓冲区可支持下面5中配置方式:

  1. Dedicated Tx Buffers (发送优先级:CAN ID最小的优先发送)
  2. Tx FIFO (发送优先级:最早缓存的优先发送)
  3. Tx Queue (发送优先级:CAN ID小的优先发送)
  4. Dedicated Tx Buffers 和 Tx FIFO结合使用 (发送优先级:Tx FIFO中最早缓存buffer,Dedicated Buffer中CANID最小buffer,CANID小的优先发送)
  5. Dedicated Tx Buffers 和 Tx Queue结合使用 (发送优先级:Tx Queue中CAN ID最小buffer,Dedicated Buffer中CANID最小buffer,CAN ID小的优先发送)。

2.3 接收缓存区

接收缓存区每个element支持2种模式:Rx FIFO和Dedicated Rx Buffer,最多支持两个Rx FIFO。

3. MailBox,HWObject,HRH,HTH概念

1. MailBox

邮箱。软件与硬件信息交互的接口,在Autosar规范中,定义为一个struct数据类型,Can_HwType,包含CanId,Hoh,ControllerId三个信息。
在这里插入图片描述
在Autosar的架构中,为了实现软硬件之间的解耦,一般来说,CanIf层不直接访问驱动层,而是抽象出一个struct数据类型,用于软件与底层驱动信息的交互。MailBox会用在CanIf-RxIndication接口中,第一个参数就是MailBox,CanIf通过MailBox->Hoh把接收到的数据传递给上层模块。
在这里插入图片描述

2. HWObject

硬件对象。一个HW object可以理解是CAN硬件单元的RAM区中的一个PDU缓存区。
在这里插入图片描述

3. HRH

硬件接受句柄。一般来说,每个HRH表示一个Hardware Object,由驱动层CanDrv定义。通俗来说,HRH就是一个指向某个Hardware Receive Object的一个变量,通过这个变量可以直接访问到关联Hardware Object。

4. HTH

硬件发送句柄。HTH同样由CanDrv定义。一般来说,每个HTH表示一个或多个Hardware Object,具体使用几个Hardware Object,取决于RAM区域的配置。
HTH常用于Can_Write()接口中,将要发送数据传递给驱动层,HTH作为接口的第一个参数,指定使用哪一个HTH来缓存发送数据。同样,HTH也可以理解成指向某个Hardware Transmit Object的一个变量。

5. 对应关系

在这里插入图片描述

文章来源:https://blog.csdn.net/m0_38045338/article/details/135580015
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。