AUTOSAR中CAN通信栈简介(一)

1. 概述

CAN通信栈是在CAN总线上完成Signal的接收/发送功能、Signal的路由转发以及报文的路由转发功能。

AUTOSAR中CAN通信栈简介(一)_第1张图片

AUTOSAR中基于CAN的通信栈框架

2. CANDrv简介

2.1 概述

CAN Driv er处于通信最底层,与硬件进行交互,将不同类型硬件所进行的操作分装为统一的API接口提供给上层,隔离硬件与上层服务。

CAN Driver包含于硬件相关的各配置项,将物理层发生的事件通过回调函数的方式通知上层,控制CAN控制器的行为及状态,并提供与收发报文相关的服务。

2.2功能

CAN 驱动API命名规则

CAN驱动的状态机

CAN Controller状态机

CAN模块/Controller的初始化

L-PDU的发送/接收

CAN驱动唤醒

通知机制

错误分类

AUTOSAR中CAN通信栈简介(一)_第2张图片                    AUTOSAR中CAN通信栈简介(一)_第3张图片

              驱动状态机                                               Controller状态机

2.3 CanDrv初始化

Can_Init在CAN模块中别的API之前被调用(除Can_GetVersionInfo)。

初始化内容:

  • 静态变量,包括各种flag;

  • 整体硬件单元的一般寄存器设置;

  • 每个CAN Controller的特定设置。

2.4 PDU的收发

发送时可选择多路发送Multiplexed Transmission(多对一,不止一对一);

确保收发数据的一致性。

2.5 驱动唤醒

两种方式:中断和轮询。

与EcuM模块交互:

  • EcuM_CheckWakeup;

  • EcuM_SetWakeupEvent;

2.6 通知机制

  • 中断

  • 轮询

与CanIf模块交互(除唤醒与EcuM交互外):

  • CanIf_ControllerBusOff;

  • CanIf_RxIndication;

  • CanIf_TxConfirmation.

3 CanIf概述

3.1 CanIf功能

➢lardware objeet huandles (IOII)

➢动态/静态IL-PDU以及Me taData概念

➢接收L-PDU的BasicCAN和Fu1 1CAN概念

➢L PDU的发送

➢L-PDU的接收

➢CAN Controller模式控制

➢PDU模式控制

➢软件滤波

➢DLC检测

➢对于多个CAN驱动的支持

➢错误分类

3.2 HOH

➢HOH为CAN邮箱的抽象,关联CAN Controller中1-n个具体邮箱。

➢HOH分为Hardware Receive Handle (HRH)和Hardware Transmit Handle(HTH) .

3.3 静态/动态L-PDU及MetaData概念

➢这里动态指的是L-PDU的CanId在运行时会改变。

➢对于发送1L-PDU改 变JtCanId的途径有两种:

①通过调用CanIf_ SetDynamicTxId接口来实现:

②通过NetaDeta来实现。

➢MetaData长度为0 4个byte,在I PDU数据域后面( 小端顺序)

➢发送L-PDU的真IE.CanId计算方式: .

(CanIfTxPduCanId &CanIfTxPduCanIdMaesk) | (MetaDatak (-CanIfTxPduCanIdMask) )

3.4 静态/动态L-PDU及MetaData概念

➢其中CanI fTxPduCanId由配置的CanId或者CanIf_ SetDynamicTxId决定。RxL-PDU配置了MetaData时,将接收到的CanId作为MetaData放在I-PDU数据域之后,传给上层模块,Pdu 长度为数据域长度+MetaData长度。

3.5 BasicCAN和FullCAN概念

➢FullCAN指接收邮箱只收-一个CanId,通过硬件滤波实现:

➢BasicCAN指接收邮箱能接收多个CanIds.

➢由CAN驱动中设置邮箱的滤波掩码决定。如果是BasieCAN,在CanIf中 需要进行软件滤波。

3.6 PDU模式控制

> PDU模式可看作为Cortrollet模式为STARTED时的细分。

➢分别对应4种模式:

CANIF ONLINE、CANIF OFFLINE、CANIF TX OFFLINE、CANIF_ TX OFFLINE_ ACTIVE。

➢其中,CANIF_ TX_ OFFLINE ACTIVE模式用作特殊情况(如diagnosis pasive mode ),该模式下不真正发送L-PDU,但会通i过TxCnfimatiou通知上层模块发送完成。

AUTOSAR中CAN通信栈简介(一)_第4张图片

3.7 软件滤波

➢软件滤波分2部分:

①HRH滤波:因为一般硬件邮箱都足通过邮箱掩码按bit位来进行滤波,这里实现基于.上下限HRH滤波作为补充。

②通过HRH滤波之后,根据按收到的CanId找到匹配的Rx L-PDU ( 日前代码实现LINEAR滤波方式)。

3.8 DLC检测

➢对于Rx L PDU要实现DLC检测功能, 需要配置该PDU的最小长度。只有当接收到的PDU长度≥配置的最小长度时,DLC检测通过。

你可能感兴趣的:(网络协议)