1 为什么需要CAN 硬件对象
为了优化软件和硬件过滤的协作以及优化底层硬件的使用,CanIf(CAN 接口)需要了解可用的硬件资源及其配置,而CAN模块的可用的硬件资源 一般是通过CAN 硬件对象来描述的,所以为了让上层模块CanIf了解我们的CAN模块的硬件资源,我们把所有可用的硬件对象句柄都应在 ECU 配置描述中定义来提供给上层如CanIf使用。
2 什么是CAN 硬件对象
如上图所示是硬件对象里我们需要关注和配置的属性,下面会具体介绍。
注意在开始介绍之前,我们要强调一下,CAN 硬件对象是和具体的Can芯片控制相关的,这里我们只介绍一般性的概念。
CAN 硬件对象主要包含以下属性:
- 它包含可以缓存报文的一段内存缓冲区,位于CAN控制器内部,如上图的
- 它包含配置CAN 控制器特定行为的一组特殊功能寄存器
- 我们通过配置这组特殊功能寄存器来设置can报文的标识符CAN ID 和 can报文的长度DLC
- 我们通过配置这组特殊功能寄存器来设置can报文的发送和接收方向(图中的Direction)