4.1CanIf模块简介
CanIf模块是为了要隔离MCal层与服务层,因此CanIf不可直接操作硬件资源。然而CanIf传输数据、接收数据要使用到Can模块的缓存,如果直接使用Can模块的缓存的话,那CanIf就与MCal层耦合在一起了。
为了解决这个问题,CanIf层使用了一个HOH的概念:Hardware Object。HOH根据发送与接收的不同,又分为HTH和HRH: Hardware Transmit Handle, Hardware Receive Handle。那HTH、HRH应该怎么理解呢?
Can Mcal层负责定义Can数据的发送、接收缓存(通常我们称它们为邮箱)数组,而HTH、HRH则代表的是数组的下标。这样HTH、HRH就与缓存对应起来了。
下图直观展示了HTH、HRH与Can模块缓存的关系:
4.2CanIf调用的驱动
Canif需要调用两个驱动:Can Controller(Can控制器), Can Transceiver(Can收发器)。Can控制器是MCU中can模块,can收发器则是外部对Can信号进行差分转换的控制器。
4.3关于FullCan与Basic Can
配置为FullCan的邮箱只能接收、发送一个Can Id,而配置为Basic Can的邮箱可发送、接收一个范围段的CanId。
4.4CanIf发送缓存
CanIf可以配置发送缓存,也可以不配置。<