本文主要是介绍【CAN】Mailbox/Hardware Object/HRH/HTH概念介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 1. 前言
- 2. MCMCAN硬件RAM缓存区
- 2.1 RAM缓存区分配
- 2.2 发送缓存区
- 2.3 接收缓存区
- 3. MailBox,HWObject,HRH,HTH概念
- 1. MailBox
- 2. HWObject
- 3. HRH
- 4. HTH
- 5. 对应关系
>>返回总目录<<
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中配置方式:
- Dedicated Tx Buffers (发送优先级:CAN ID最小的优先发送)
- Tx FIFO (发送优先级:最早缓存的优先发送)
- Tx Queue (发送优先级:CAN ID小的优先发送)
- Dedicated Tx Buffers 和 Tx FIFO结合使用 (发送优先级:Tx FIFO中最早缓存buffer,Dedicated Buffer中CANID最小buffer,CANID小的优先发送)
- 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. 对应关系
这篇关于【CAN】Mailbox/Hardware Object/HRH/HTH概念介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!