AUTOSAR_SWS_CANInterface 中文翻译

文档编号:081 | 状态:Final | 发布于:AUTOSAR CP Release 4.4.0
所属标准:AUTOSAR Classic Platform | 文档责任方:AUTOSAR

本翻译覆盖原文档 1-100 页正文。原文为软件规范(SWS),定义 CAN Interface(CanIf)模块的 API、配置、错误处理——CAN 协议栈的 ECU 抽象层。


1 引言与范围

CAN Interface(CanIf)作为 CAN 协议栈的 ECU 抽象层,位于 Can(驱动)/ CanTrcv(收发器)之上与 PduR(PDU Router)/ CanTp(传输层)/ CanNm / CanSm 之下。提供 PDU 路由、滤波、BusOff 协调、唤醒通知、动态 DLC 等服务。

2 缩略语

CanIf / CAN / CAN FD / CAN XL / PDU / HOH / HTH / HRH / CanTp / CanNm / CanSm / BusOff / PduR / L-PDU / I-PDU

3 相关文档

[1] AUTOSAR SWS PduR
[2] AUTOSAR SWS CAN Driver
[3] AUTOSAR SWS CAN Transceiver Driver
[4] AUTOSAR SWS CAN State Manager
[5] AUTOSAR SWS CAN Network Management
[6] AUTOSAR SWS CAN Transport Layer
[7] AUTOSAR SRS CAN

4 约束与假设

CanIf 应:

5 依赖其他模块

CanIf 依赖:Can(驱动)/ CanTrcv(收发器)/ PduR(PDU 路由)/ CanTp / CanNm / CanSm / Dem(错误上报)。

6 功能规格

6.1 架构

CanIf 位于 CAN 协议栈中,是 CAN 协议栈最重要的 ECU 抽象层。

7 API 服务

7.1 初始化 / 关闭

void CanIf_Init(const CanIf_ConfigType* ConfigPtr):初始化。
Std_ReturnType CanIf_DeInit(void):去初始化。

7.2 控制器模式

Std_ReturnType CanIf_SetControllerMode(uint8 Controller, CanIf_ControllerModeType ControllerMode):设置控制器模式(CANIF_CS_UNINIT / CANIF_CS_SLEEP / CANIF_CS_STARTED / CANIF_CS_STOPPED)。
Std_ReturnType CanIf_GetControllerMode(uint8 Controller, CanIf_ControllerModeType* ControllerModePtr):获取模式。

7.3 收发器模式

Std_ReturnType CanIf_SetTrcvMode(uint8 Transceiver, CanTrcv_TrcvModeType TransceiverMode):设置收发器模式。
Std_ReturnType CanIf_GetTrcvMode(uint8 Transceiver, CanTrcv_TrcvModeType* TransceiverModePtr):获取收发器模式。

7.4 帧传输(来自上层)

Std_ReturnType CanIf_Transmit(PduIdType CanIfTxPduId, const PduInfoType* PduInfoPtr):发送 PDU。
Std_ReturnType CanIf_TransmitPdu(CANIF_VIRTUAL_CAN_PDU_MAP / CanIfTxPduCanIdType CanId, PduInfoType* PduInfoPtr):通过 CAN ID 发送 PDU。

7.5 触发传输

Std_ReturnType CanIf_TriggerTransmit(PduIdType TxPduId, PduInfoType* PduInfoPtr):触发传输(用于动态长度)。

7.6 取消

Std_ReturnType CanIf_CancelTransmit(PduIdType TxPduId):取消传输。

7.7 滤波

Std_ReturnType CanIf_SetDynamicTxId(PduIdType CanIfTxPduId, Can_IdType CanId):设置动态 CAN ID。
Std_ReturnType CanIf_SetRxFilter(uint8 Controller, CanIf_RxFilterType* FilterParamsPtr):设置接收滤波。

7.8 状态查询

Std_ReturnType CanIf_GetTxConfirmationState(uint8 Controller):获取发送确认状态。
CanIf_NotifStatusType CanIf_GetStatus(void):获取 CanIf 状态(CANIF_NO_NOTIFICATION / CANIF_TX_RX_NOTIFICATION)。

7.9 回调(来自 Can 驱动)

void CanIf_TxConfirmation(PduIdType CanTxPduId, Std_ReturnType Result):发送确认。
void CanIf_RxIndication(const Can_HwType* Mailbox, const PduInfoType* PduInfoPtr):接收指示。
void CanIf_ControllerBusOff(uint8 Controller):BusOff 指示。
void CanIf_SetWakeupEvent(uint8 Controller, CanIf_TrcvWakeupModeType WakeupMode):唤醒事件通知。

7.10 MainFunction

void CanIf_MainFunction_Read(void):读取处理。
void CanIf_MainFunction_BusOff(void):BusOff 处理。
void CanIf_MainFunction_Wakeup(void):唤醒处理。
void CanIf_MainFunction_Mode(void):模式处理。

8 配置

CanIf 配置类:

9 错误处理

9.1 开发错误

CANIF_E_UNINIT:模块未初始化。
CANIF_E_PARAM_POINTER:参数指针为空。
CANIF_E_PARAM:参数无效。
CANIF_E_INV_CTRL_IDX:控制器索引无效。
CANIF_E_INV_HOH:HOH 索引无效。

9.2 运行时错误

CANIF_E_BUSY:模块忙。


校对记录

校对轮次:L1 自动校对(2026-06-13)