CAN Transceiver Driver (CanTrcv)
Controls physical bus transceiver states and wakeup detection on CAN lines.
Funktionen — Übersicht
void CanTrcv_Init (const CanTrcv_ConfigType* ConfigPtr);Initializes the Can Trcv module.Std_ReturnType CanTrcv_SetOpMode (uint8 Transceiver, CanTrcv_TrcvModeType OpMode);Sets the mode of the Transceiver to the value Op Mode.Std_ReturnType CanTrcv_GetOpMode (uint8 Transceiver, CanTrcv_TrcvModeType* OpMode);Gets the mode of the Transceiver and returns it in Op Mode.Std_ReturnType CanTrcv_GetBusWuReason (uint8 Transceiver, CanTrcv_TrcvWakeupReasonType* reason);Gets the wakeup reason for the Transceiver and returns it in parameter Reason.void CanTrcv_GetVersionInfo (Std_VersionInfoType* versioninfo);Gets the version of the module and returns it in Version Info.Std_ReturnType CanTrcv_SetWakeupMode (uint8 Transceiver, CanTrcv_TrcvWakeupModeType TrcvWakeupMode);En ables, disables or clears wake - up events of the Transceiver according to Trcv Wakeup Mode.Std_ReturnType CanTrcv_GetTrcvSystemData (uint8 Transceiver, uint32* TrcvSysData);Reads the transceiver configuration/ status data and returns it through parameter Trcv Sys Data.Std_ReturnType CanTrcv_ClearTrcvWufFlag (uint8 Transceiver);Clears the WUF flag in the transceiver hardware.Std_ReturnType CanTrcv_ReadTrcvTimeoutFlag (uint8 Transceiver, CanTrcv_TrcvFlagStateType* FlagState);Reads the status of the tim eout flag from the transceiver hardware.Std_ReturnType CanTrcv_ClearTrcvTimeoutFlag (uint8 Transceiver);Clears the status of the timeout flag in the transceiver hardware.Std_ReturnType CanTrcv_ReadTrcvSilenceFlag (uint8 Transceiver, CanTrcv_TrcvFlagStateType* FlagState);Reads the status of the silence flag from the transceiver hardware.Std_ReturnType CanTrcv_CheckWakeup (uint8 Transceiver);Service is called by underlying CANIF in case a wake up interrupt is detected.Std_ReturnType CanTrcv_SetPNActivationState (CanTrcv_PNActivationType ActivationState);The API configures the wake - up of the transceiver for Standby and Sleep Mode: Either the CAN transceiver is woken up by a...Std_ReturnType CanTrcv_CheckWakeFlag (uint8 Transceiver);Requests to check the status of the wakeup flag from the transceiver hardware.void CanTrcv_DeInit (void);De - initializes the Can Trcv module.void CanTrcv_MainFunction (void);Service to scan all busses for wake up events and perform these event.void CanTrcv_MainFunctionDiagnostics (void);Reads the transceiver diagnostic status periodically and sets product/ development accordingly.
Typen — Übersicht
struct CanTrcv_ConfigTypeThis is the type of the external data structure containing the overall initialization data for the CAN transceiver driver and...CanTrcv_PNActivationTypeDatatype used for describing whether PN wakeup functionality in Can Trcv is enabled or disabled.enum CanTrcv_TrcvFlagStateTypeProvides the state of a flag in the transceiver hardware.enum CanTrcv_TrcvModeTypeOperating modes of the CAN Transceiver Driver.enum CanTrcv_TrcvWakeupModeTypeThis type shall be used to control the CAN transceiver concerning wake up events and wake up notifications.enum CanTrcv_TrcvWakeupReasonTypeThis type denotes the wake up reason detected by the CAN transceiver in detail.
Funktionen & Typen — Detailansicht
函数 CanTrcv_Init [SWS_CanTrcv_00001] 📄 PDF
void CanTrcv_Init (const CanTrcv_ConfigType* ConfigPtr);
Initializes the Can Trcv module.
用法与语义
函数 CanTrcv_Init 用于对 CanTrcv 模块以及所有连接的 CAN 收发器进行基本初始化 [SWS_CanTrcv_00001] [SWS_CanTrcv_00180]。执行是同步进行的,并被指定为不可重入 [SWS_CanTrcv_00001]。作为传入参数,它通过 ConfigPtr 期望一个指向驱动配置的指针,并且没有返回值 [SWS_CanTrcv_00001]。
交互与硬件检查
在运行过程中,该函数根据配置执行所有相连收发器的硬件相关初始化序列,并在此过程中支持 AUTOSAR 堆栈的初始化序列 [SWS_CanTrcv_00180]。通过此调用,每个收发器根据其各自的配置分别切换到模式 CANTRCV_TRCVMODE_SLEEP 或 CANTRCV_TRCVMODE_STANDBY [SWS_CanTrcv_00148]。如果硬件支持,CanTrcv_Init 还会检查之前是否存在因收发器活动引起的唤醒事件,并通过 EcuM_SetWakeupEvent 使用通过 CanTrcvWakeupSourceRef 定义的源将其报告给 EcuM [SWS_CanTrcv_00167]。
错误处理
如果与硬件的通信出现错误或缺失(例如通过端口引脚或 SPI),该函数向 Default Error Tracer 报告运行时错误 CANTRCV_E_NO_TRCV_CONTROL [SWS_CanTrcv_00113]。如果开发错误检测处于激活状态,且相应收发器不支持已配置的波特率,则还会报告 CANTRCV_E_BAUDRATE_NOT_SUPPORTED [SWS_CanTrcv_00168]。
此文本由 AI 基于 AUTOSAR R20-11 规范生成。
实现者指南即将推出(复杂度 I1)
函数 CanTrcv_SetOpMode [SWS_CanTrcv_00002] 📄 PDF
Std_ReturnType CanTrcv_SetOpMode (uint8 Transceiver, CanTrcv_TrcvModeType OpMode);
Sets the mode of the Transceiver to the value Op Mode.
函数CanTrcv_SetOpMode用于异步切换 CAN 收发器的操作模式[SWS_CanTrcv_00002]。它接收收发器的设备编号(Transceiver)以及所需的目标模式(OpMode),目标模式可以取值CANTRCV_TRCVMODE_NORMAL、CANTRCV_TRCVMODE_STANDBY或CANTRCV_TRCVMODE_SLEEP[SWS_CanTrcv_00102]。该函数针对不同的收发器是可重入的[SWS_CanTrcv_00002]。返回值E_OK确认切换请求已被接受;E_NOT_OK表示请求被拒绝、参数错误或硬件不支持该模式[SWS_CanTrcv_00002],[SWS_CanTrcv_00105]。
调用时必须遵循预定的状态转换:
- 如果收发器处于模式
CANTRCV_TRCVMODE_NORMAL,则仅允许将CANTRCV_TRCVMODE_STANDBY或CANTRCV_TRCVMODE_NORMAL作为目标模式传递[SWS_CanTrcv_00103]。 - 如果收发器处于
CANTRCV_TRCVMODE_STANDBY,则仅允许使用CANTRCV_TRCVMODE_SLEEP或CANTRCV_TRCVMODE_STANDBY调用该函数[SWS_CanTrcv_00104]。
在启用开发错误检测(DET)时,函数将初始化前的调用报告为CANTRCV_E_UNINIT[SWS_CanTrcv_00122],无效的收发器编号报告为CANTRCV_E_INVALID_TRANSCEIVER[SWS_CanTrcv_00123],不允许的操作模式报告为CANTRCV_E_PARAM_TRCV_OPMODE[SWS_CanTrcv_00087]。如果在收发器未处于 Normal 或 Standby 状态时请求 Standby,则触发CANTRCV_E_TRCV_NOT_NORMAL[SWS_CanTrcv_00120];在 Standby 或 Sleep 之外请求 Sleep 时,将报告CANTRCV_E_TRCV_NOT_STANDBY[SWS_CanTrcv_00121]。如果 DET 被禁用,则在这些情况下返回E_NOT_OK。在收发器通信缺失或发生故障时,向 DET 报告运行时错误CANTRCV_E_NO_TRCV_CONTROL并返回E_NOT_OK[SWS_CanTrcv_00114]。
如果硬件支持选择性唤醒(Selective Wakeup),API 会检查状态标志POR和SYSERR[SWS_CanTrcv_00186]。一旦收发器达到请求的模式,模块就会通过回调CanIf_TrcvModeIndication通知上层[SWS_CanTrcv_00158]。
此文本由 AI 基于规范要求生成。
实现者指南即将推出(复杂度 I2)
函数 CanTrcv_GetOpMode [SWS_CanTrcv_00005] 📄 PDF
Std_ReturnType CanTrcv_GetOpMode (uint8 Transceiver, CanTrcv_TrcvModeType* OpMode);
Gets the mode of the Transceiver and returns it in Op Mode.
函数 CanTrcv_GetBusWuReason [SWS_CanTrcv_00007] 📄 PDF
Std_ReturnType CanTrcv_GetBusWuReason (uint8 Transceiver, CanTrcv_TrcvWakeupReasonType* reason);
Gets the wakeup reason for the Transceiver and returns it in parameter Reason.
函数 CanTrcv_GetVersionInfo [SWS_CanTrcv_00008] 📄 PDF
void CanTrcv_GetVersionInfo (Std_VersionInfoType* versioninfo);
Gets the version of the module and returns it in Version Info.
函数 CanTrcv_SetWakeupMode [SWS_CanTrcv_00009] 📄 PDF
Std_ReturnType CanTrcv_SetWakeupMode (uint8 Transceiver, CanTrcv_TrcvWakeupModeType TrcvWakeupMode);
En ables, disables or clears wake - up events of the Transceiver according to Trcv Wakeup Mode.
用法与语义
同步函数CanTrcv_SetWakeupMode用于激活、停用或清除特定收发器的唤醒事件[SWS_CanTrcv_00009]。目标收发器通过参数Transceiver传递给它,所需模式通过TrcvWakeupMode传递。状态更改成功时,函数返回E_OK。如果无法更改状态或参数无效,则返回E_NOT_OK,并且先前的状态保持不变[SWS_CanTrcv_00009]。
操作模式与交互
如果使用值CANTRCV_WUMODE_CLEAR调用TrcvWakeupMode,函数将清除寻址收发器的已存储唤醒事件[SWS_CanTrcv_00094]。在使用CANTRCV_WUMODE_ENABLE调用时,如果相关总线已有已存储的唤醒事件挂起,模块会将唤醒事件更新为“present”状态[SWS_CanTrcv_00111]。Interpretation:对于停用唤醒事件,可能同样存在相应的模式值,即使该值在当前的规范摘录中未予单独详述。 问题 Q-e0f15d1d0855db81 (未决)
错误处理与并发
该函数针对不同的收发器实例是可重入的[SWS_CanTrcv_00009]。在调用之前,收发器驱动程序必须已完全初始化:在未初始化状态下调用时,如果开发错误检测(DET)处于激活状态,则触发错误CANTRCV_E_UNINIT,否则返回E_NOT_OK[SWS_CanTrcv_00127]。Transceiver处的无效索引会导致CANTRCV_E_INVALID_TRANSCEIVER(或E_NOT_OK)[SWS_CanTrcv_00131],并且TrcvWakeupMode中不允许的模式值会报告CANTRCV_E_PARAM_TRCV_WAKEUP_MODE或返回E_NOT_OK[SWS_CanTrcv_00089]。如果与收发器不存在通信或通信出现故障,将向 Default Error Tracer 报告运行时错误CANTRCV_E_NO_TRCV_CONTROL并返回E_NOT_OK[SWS_CanTrcv_00117]。
此使用说明基于 AUTOSAR Classic R20-11 规范自动生成。
实现者指南即将推出(复杂度 I2)
函数 CanTrcv_GetTrcvSystemData [SWS_CanTrcv_00213] 📄 PDF
Std_ReturnType CanTrcv_GetTrcvSystemData (uint8 Transceiver, uint32* TrcvSysData);
Reads the transceiver configuration/ status data and returns it through parameter Trcv Sys Data. This API shall exist only if Can Trcv Hw Pn Support = TRUE.
函数 CanTrcv_ClearTrcvWufFlag [SWS_CanTrcv_00214] 📄 PDF
Std_ReturnType CanTrcv_ClearTrcvWufFlag (uint8 Transceiver);
Clears the WUF flag in the transceiver hardware. This API shall exist only if Can Trcv Hw Pn Support = TRUE.
同步函数 CanTrcv_ClearTrcvWufFlag 清除所寻址 CAN 收发器硬件中的唤醒帧标志(WUF),并且仅在配置了 Selective-Wakeup 支持时可用(CanTrcvHwPnSupport = TRUE)[SWS_CanTrcv_00214]、[SWS_CanTrcv_00175]。成功清除时返回 E_OK,否则返回 E_NOT_OK [SWS_CanTrcv_00214]、[SWS_CanTrcv_00194]。
交互与流程
该 API 在进入低功耗模式时由模块 CanSM 使用,以确保在状态转换期间不会丢失帧唤醒事件 [SWS_CanTrcv_00194]。重置 WUF 标志后,必须将 CAN 收发器置于待机模式(CANTRCV_STANDBY)[SWS_CanTrcv_00194]。
并发与调用上下文
对 CanTrcv_ClearTrcvWufFlag 的调用对于不同的收发器实例(Transceiver)是可重入的 [SWS_CanTrcv_00214]。
错误处理
- 开发错误(DET):如果错误检测处于活动状态,该函数在驱动程序未初始化时报告
CANTRCV_E_UNINIT[SWS_CanTrcv_00197],在参数无效时(Transceiver)报告错误CANTRCV_E_INVALID_TRANSCEIVER[SWS_CanTrcv_00198]。如果 DET 被禁用,在这些情况下将直接返回E_NOT_OK[SWS_CanTrcv_00197]、[SWS_CanTrcv_00198]。 - 运行时错误:如果与收发器的通信失败或出错,该函数向 Default Error Tracer 报告运行时错误
CANTRCV_E_NO_TRCV_CONTROL并返回E_NOT_OK[SWS_CanTrcv_00196]。
本使用说明基于 AUTOSAR 规范 R20-11 自动生成。
实现者指南即将推出(复杂度 I1)
函数 CanTrcv_ReadTrcvTimeoutFlag [SWS_CanTrcv_00215] 📄 PDF
Std_ReturnType CanTrcv_ReadTrcvTimeoutFlag (uint8 Transceiver, CanTrcv_TrcvFlagStateType* FlagState);
Reads the status of the tim eout flag from the transceiver hardware. This API shall exist only if Can Trcv Hw Pn Support = TRUE.
同步函数CanTrcv_ReadTrcvTimeoutFlag直接从 CAN 收发器的硬件中读取超时标志的状态[SWS_CanTrcv_00215]。输入参数Transceiver用于标识要访问的收发器,而通过类型为CanTrcv_TrcvFlagStateType*的输出参数FlagState返回该标志的状态[SWS_CanTrcv_00215]。返回值以E_OK指示读取成功,以E_NOT_OK指示无法确定超时标志的状态[SWS_CanTrcv_00215]。
对于在收发器驱动程序中的使用和集成,适用以下边界条件:
-
配置:仅当局部网络(Partial Networking)的硬件支持被激活(
CanTrcvHwPnSupport = TRUE)时,该 API 才可用[SWS_CanTrcv_00215]。关联的配置容器CanTrcvPartialNetwork也仅在此前提下存在[SWS_CanTrcv_00175]。 -
并发性:该函数被指定为不可重入(
Non Reentrant)[SWS_CanTrcv_00215]。
错误处理根据开发错误检测(Development Error Detection,DET)的状态进行区分:
-
如果传递了无效的收发器标识符,在 DET 处于活动状态时模块生成错误
CANTRCV_E_INVALID_TRANSCEIVER;在 DET 停用时,则返回E_NOT_OK[SWS_CanTrcv_00199]。 -
如果为
FlagState传递了空指针(FlagState = NULL),在 DET 处于活动状态时模块报告错误CANTRCV_E_PARAM_POINTER;如果 DET 已关闭,调用将返回E_NOT_OK[SWS_CanTrcv_00200]。
本使用说明基于 AUTOSAR CP R20-11 规范自动生成。
实现者指南即将推出(复杂度 I2)
函数 CanTrcv_ClearTrcvTimeoutFlag [SWS_CanTrcv_00216] 📄 PDF
Std_ReturnType CanTrcv_ClearTrcvTimeoutFlag (uint8 Transceiver);
Clears the status of the timeout flag in the transceiver hardware. This API shall exist only if Can Trcv Hw Pn Support = TRUE.
同步函数CanTrcv_ClearTrcvTimeoutFlag用于重置收发器硬件中的超时标志[SWS_CanTrcv_00216]。它仅在通过配置参数CanTrcvHwPnSupport = TRUE激活了 Partial Networking 的硬件支持时才可用[SWS_CanTrcv_00175],[SWS_CanTrcv_00216]。
使用与接口
调用通过CanTrcv.h中的接口同步进行,并指定目标收发器:
- 参数:
Transceiver作为输入值(uint8)确定要访问的收发器通道[SWS_CanTrcv_00216]。 - 返回值:
Std_ReturnType以E_OK表示硬件标志清除成功,或以E_NOT_OK表示操作失败[SWS_CanTrcv_00216]。
错误处理
如果向该函数传递了针对参数Transceiver的无效标识符,则会采用差异化的错误处理:
- 在开发错误检测(Development Error Detection)处于激活状态时,向 DET 报告错误
CANTRCV_E_INVALID_TRANSCEIVER[SWS_CanTrcv_00201]。 - 如果开发错误检测被停用,调用将中止并向调用者返回
E_NOT_OK[SWS_CanTrcv_00201]。
并发性与系统集成
该函数被归类为不可重入(Non Reentrant)[SWS_CanTrcv_00216]。因此,调用层必须避免或同步针对同一硬件单元的并行调用。此外,该函数是选择性唤醒功能(Partial Networking)功能范围的一部分;容器CanTrcvPartialNetwork中的关联配置结构同样仅在设置了CanTrcvHwPnSupport时才存在[SWS_CanTrcv_00175]。
本使用说明基于 AUTOSAR CP R20-11 规范。
实现者指南即将推出(复杂度 I1)
函数 CanTrcv_ReadTrcvSilenceFlag [SWS_CanTrcv_00217] 📄 PDF
Std_ReturnType CanTrcv_ReadTrcvSilenceFlag (uint8 Transceiver, CanTrcv_TrcvFlagStateType* FlagState);
Reads the status of the silence flag from the transceiver hardware. This API shall exi st only if Can Trcv Hw Pn Support = TRUE.
同步且不可重入的函数CanTrcv_ReadTrcvSilenceFlag(服务 ID 0x0d)用于直接从 CAN 收发器硬件中读取 Silence 标志状态[SWS_CanTrcv_00217]。它通过头文件CanTrcv.h提供,并且由于缺乏重入性,不得并发执行[SWS_CanTrcv_00217]。
参数与返回值
Transceiver:输入参数(uint8),用于通过其标识符寻址相应的收发器实例[SWS_CanTrcv_00217]。FlagState:输出参数,作为指向CanTrcv_TrcvFlagStateType的指针,通过该指针返回 Silence 标志的读取状态[SWS_CanTrcv_00217]。- 返回值(
Std_ReturnType):如果能够成功读取 Silence 标志的硬件状态,则返回E_OK,否则返回E_NOT_OK[SWS_CanTrcv_00217]。
错误处理
如果为该函数的输出参数传递了空指针(FlagState == NULL),则错误处理取决于开发控制:在启用 DET 时,CAN 收发器驱动程序报告开发错误CANTRCV_E_PARAM_POINTER;如果 DET 被停用,调用将立即以E_NOT_OK中止[SWS_CanTrcv_00203]。
配置与交互
该函数位于选择性唤醒(Selective Wakeup)的上下文中。仅当通过CanTrcvHwPnSupport = TRUE配置了 Partial Networking 的硬件支持时,驱动程序中才提供关联的配置容器CanTrcvPartialNetwork以及接口CanTrcv_ReadTrcvSilenceFlag[SWS_CanTrcv_00175],[SWS_CanTrcv_00217]。
本使用说明基于 AUTOSAR 规范 R20-11 自动生成。
实现者指南即将推出(复杂度 I1)
函数 CanTrcv_CheckWakeup [SWS_CanTrcv_00143] 📄 PDF
Std_ReturnType CanTrcv_CheckWakeup (uint8 Transceiver);
Service is called by underlying CANIF in case a wake up interrupt is detected.
一旦检测到唤醒中断,底层接口 CanIf 就会调用同步且可重入的函数 CanTrcv_CheckWakeup [SWS_CanTrcv_00143]。通过参数 Transceiver 寻址待检查的 CAN 收发器 [SWS_CanTrcv_00143]。返回值 E_OK 表示接受该调用,而 E_NOT_OK 则指示未接受 [SWS_CanTrcv_00143]。
如果硬件支持,该函数会检查是否确实由于收发器上的活动而存在唤醒事件 [SWS_CanTrcv_00146]。如果是这种情况,则通过带有在 CanTrcvWakeupSourceRef 中引用的唤醒源 [SWS_CanTrcv_00146] 的 API EcuM_SetWakeupEvent 向 EcuM 进行唤醒报告。
对于错误处理,在启用开发错误检测(DET)时适用以下规定:
- 如果在 CanTrcv 模块初始化之前调用该函数,则会报告开发错误
CANTRCV_E_UNINIT;若 DET 已禁用,则该调用改为返回E_NOT_OK[SWS_CanTrcv_00144]。 - 如果传入无效的收发器编号,该函数会报告
CANTRCV_E_INVALID_TRANSCEIVER;若 DET 已禁用,则返回E_NOT_OK[SWS_CanTrcv_00145]。
本使用说明完全基于 AUTOSAR Classic R20-11 的规范要求。
实现者指南即将推出(复杂度 I1)
函数 CanTrcv_SetPNActivationState [SWS_CanTrcv_00219] 📄 PDF
Std_ReturnType CanTrcv_SetPNActivationState (CanTrcv_PNActivationType ActivationState);
The API configures the wake - up of the transceiver for Standby and Sleep Mode: Either the CAN transceiver is woken up by a remote wake - up pattern (standard CAN wake - up) or by the configured remote wake - up frame.
同步函数 CanTrcv_SetPNActivationState 配置 CAN 收发器在待机模式和睡眠模式下的唤醒行为([SWS_CanTrcv_00219])。它确定收发器是通过标准唤醒图样唤醒,还是在局部网络(Partial Networking)框架下通过已配置的远程唤醒帧进行针对性唤醒([SWS_CanTrcv_00219])。
用法与参数
该函数通过 CanTrcv.h 提供,服务 ID 为 0x0f,并同步执行([SWS_CanTrcv_00219])。其类型为 CanTrcv_PNActivationType 的传入参数 ActivationState 用于控制工作模式:
PN_ENABLED:激活 CAN 收发器中的 PN 唤醒功能([SWS_CanTrcv_00219])。PN_DIABLED:停用 PN 唤醒功能([SWS_CanTrcv_00219])。
如果收发器已成功切换到所请求的 PN 配置,则该函数返回 E_OK 作为返回值。若切换失败,则返回 E_NOT_OK;在此情况下,先前的配置保持不变([SWS_CanTrcv_00219])。
限制与错误处理
该函数不可重入(Non Reentrant)([SWS_CanTrcv_00219])。作为强制前提条件,模块 CanTrcv 必须在调用前完成完全初始化:如果在初始化之前调用,当开发错误检测处于激活状态时,该函数会向 DET 报告错误 CANTRCV_E_UNINIT;如果 DET 已停用,该调用将直接被拒绝并返回返回值 E_NOT_OK([SWS_CanTrcv_00220])。
本使用说明基于规范自动生成。
实现者指南即将推出(复杂度 I1)
函数 CanTrcv_CheckWakeFlag [SWS_CanTrcv_00223] 📄 PDF
Std_ReturnType CanTrcv_CheckWakeFlag (uint8 Transceiver);
Requests to check the status of the wakeup flag from the transceiver hardware.
函数 CanTrcv_CheckWakeFlag 直接从收发器硬件请求检查唤醒标志状态([SWS_CanTrcv_00223])。该调用为异步进行,并通过输入参数 Transceiver 关联到待寻址 CAN 收发器的对应标识符([SWS_CanTrcv_00223])。
该函数返回状态 Std_ReturnType 作为返回值([SWS_CanTrcv_00223]):
E_OK:检查唤醒标志的请求已被成功接受([SWS_CanTrcv_00223])。E_NOT_OK:请求被拒绝([SWS_CanTrcv_00223])。
在并发性方面规定该函数不可重入(Non Reentrant)([SWS_CanTrcv_00223])。由于该服务被指定为异步,返回值仅反映检查任务的接受情况;实际读取硬件应在后续进行([SWS_CanTrcv_00223])。 问题 Q-f09b7ff49c24cea8 (未决)针对该服务未列出具体的错误码以及 DET 或 DEM 报告。
本使用说明由 AI 基于 AUTOSAR 规范生成。
实现者指南即将推出(复杂度 I1)
函数 CanTrcv_DeInit [SWS_CanTrcv_91001] 📄 PDF
void CanTrcv_DeInit (void);
De - initializes the Can Trcv module.
同步函数 CanTrcv_DeInit 用于 CAN 收发器驱动程序的去初始化 [SWS_CanTrcv_91001]。它不接收参数,不返回返回值,且被指定为不可重入(Non Reentrant)[SWS_CanTrcv_91001]。该接口通过带有服务 ID 0x10 的头文件 CanTrcv.h 提供 [SWS_CanTrcv_91001]。
执行时,该函数将 CAN 收发器硬件置于状态 NOT_ACTIVE [SWS_CanTrcv_91003]。由于 CanTrcv_DeInit 是不可重入的,因此调用之间不得发生中断或并发 [SWS_CanTrcv_91001]。
关于错误处理和时序条件适用:
- 如果针对该模块启用了开发错误检测(Development Error Detection),该函数会检查收发器的运行模式。若调用时收发器未处于模式
CANTRCV_TRCVMODE_NORMAL,CanTrcv_DeInit将报告开发错误CANTRCV_E_TRCV_NOT_NORMAL[SWS_CanTrcv_91005]。 - 由此对调用方产生的功能性前置条件是,在去初始化之前使收发器在状态
CANTRCV_TRCVMODE_NORMAL下运行,以防止在开发模式下生成错误报告 [SWS_CanTrcv_91005]。
此使用说明基于 AUTOSAR CP R20-11 规范自动生成。
函数 CanTrcv_MainFunction [SWS_CanTrcv_00013] 📄 PDF
void CanTrcv_MainFunction (void);
Service to scan all busses for wake up events and perform these event.
函数 CanTrcv_MainFunction 作为 CAN 收发器驱动程序的核心驱动服务,用于监控所有连接的总线通道上是否发生唤醒事件并执行这些事件 [SWS_CanTrcv_00013]。它具有 C 语言签名 void CanTrcv_MainFunction(void),定义在十六进制服务 ID 0x06 下,以同步方式工作,不带传入参数或返回值 [SWS_CanTrcv_00013]。
为了进行周期性监控,该函数专门扫描处于静止状态 STANDBY 或 SLEEP 的所有总线 [SWS_CanTrcv_00112]。如果驱动程序在受监控的总线之一上检测到唤醒事件,CanTrcv_MainFunction 会设置一个内部唤醒事件标志,以触发系统中这些事件的后续执行和处理 [SWS_CanTrcv_00112]。
关于调用上下文,该接口通过头文件 SchM_CanTrcv.h 提供 [SWS_CanTrcv_00013]。Interpretation:通过该 SchM 头文件提供表明,该函数可能由 BSW 调度程序在周期性任务的上下文中周期性调用,以定期采样处于非活动状态的总线通道。 问题 Q-588109b1111a0f43 (未决)在当前规范摘录中未提及具体错误代码、向 DET 或 DEM 发送的报告以及对可重入性的要求。
本段文本由人工智能基于 AUTOSAR 规范 R20-11 生成。
实现者指南即将推出(复杂度 I1)
函数 CanTrcv_MainFunctionDiagnostics [SWS_CanTrcv_00218] 📄 PDF
void CanTrcv_MainFunctionDiagnostics (void);
Reads the transceiver diagnostic status periodically and sets product/ development accordingly.
函数 CanTrcv_MainFunctionDiagnostics(服务 ID 0x08)周期性读取收发器的诊断状态,并设置相应的生产错误和开发错误 [SWS_CanTrcv_00218]。该函数无参数,没有返回值(void CanTrcv_MainFunctionDiagnostics(void)),并通过头文件 SchM_CanTrcv.h 提供 [SWS_CanTrcv_00218]。
调用上下文与并发性
由于通过 SchM_CanTrcv.h 提供,主函数可能由 BSW 调度程序(SchM)在任务上下文中周期性调用(Interpretation)。 问题 Q-ab1f6c55abcb8d4b (未决)由于规范未标明可重入性,应假定为不可重入执行。
错误处理以及与 DEM 的交互
诊断评估取决于配置和硬件支持:
- 如果由 BSW 报告的
BUSERR标志已置位,该函数将调用 APIDem_SetEventStatus,其中参数EventId作为CANTRCV_E_BUS_ERROR,EventStatus作为DEM_EVENT_STATUS_FAILED[SWS_CanTrcv_00206]。 - 如果
BUSERR标志已复位,CanTrcv_MainFunctionDiagnostics将调用 APIDem_SetEventStatus,其中使用相同的EventId(CANTRCV_E_BUS_ERROR)和状态DEM_EVENT_STATUS_PASSED[SWS_CanTrcv_00227]。
此文本由 AI 生成。它不能替代对相应 AUTOSAR 规范的研究。
实现者指南即将推出(复杂度 I1)
类型 CanTrcv_ConfigType [SWS_CanTrcv_00209] 📄 PDF
This is the type of the external data structure containing the overall initialization data for the CAN transceiver driver and settings affecting all transceivers. Furthermore it contains pointers to transceiver configuration structures. The con tents of the initialization data structure are CAN transceiver hardware specific.
类型 CanTrcv_PNActivationType [SWS_CanTrcv_00210] 📄 PDF
Datatype used for describing whether PN wakeup functionality in Can Trcv is enabled or disabled.
类型 CanTrcv_TrcvFlagStateType [SWS_CanTrcv_00211] 📄 PDF
Provides the state of a flag in the transceiver hardware.
枚举类型CanTrcv_TrcvFlagStateType表示收发器硬件中单个标志的状态[SWS_CanTrcv_00211]。该声明通过头文件CanTrcv.h提供给应用软件模块和驱动程序[SWS_CanTrcv_00211]。
取值范围采用二进制结构,根据[SWS_CanTrcv_00211]区分两种离散状态:
CANTRCV_FLAG_SET:指示收发器硬件中的相应标志已设置[SWS_CanTrcv_00211]。CANTRCV_FLAG_CLEARED:指示收发器硬件中的标志已清除或未设置[SWS_CanTrcv_00211]。
关于实际使用,可以确定的是,该类型主要用于硬件级寄存器状态的标准化映射[SWS_CanTrcv_00211]。Interpretation:调用层(例如 CAN 接口驱动程序或诊断模块)通常可能通过查询函数经由指针参数或返回值读取该类型,以评估潜在的错误标志或唤醒标志。 问题 Q-1b75b4baf2f4c6e3 (未决)由于该类型本身不包含任何函数逻辑、重入性限制或 DET 消息,因此有效取值范围的检查由处理它的接口负责。
此文本由 AI 生成,仅供参考。具有约束力的是 AUTOSAR 规范。
实现者指南即将推出(复杂度 I1)
类型 CanTrcv_TrcvModeType [SWS_CanTrcv_00163] 📄 PDF
Operating modes of the CAN Transceiver Driver.
枚举类型CanTrcv_TrcvModeType根据[SWS_CanTrcv_00163]定义了 CAN 收发器驱动程序(CanTrcv)的标准化操作模式。该声明通过头文件Can_GeneralTypes.h提供,用于 AUTOSAR 通信栈中的跨软件接口。
取值范围和含义
根据[SWS_CanTrcv_00163],有三个枚举值可用:
CANTRCV_TRCVMODE_NORMAL(值0x00):标识用于发送和接收 CAN 报文的常规收发器操作模式。CANTRCV_TRCVMODE_STANDBY:表示收发器的待机模式,在此模式下通信停止且功耗降低。CANTRCV_TRCVMODE_SLEEP:表示收发器的睡眠模式,以实现最大程度的节能。
使用与限制
该枚举用作 CAN 收发器硬件状态的通用数据类型表示[SWS_CanTrcv_00163]。Interpretation:该类型可能主要用于收发器驱动程序的控制和查询接口中的参数传递,上层(如 CAN 接口)通过这些接口触发模式切换或读取当前状态。 问题 Q-95fceb6988818621 (未决)由于本规范摘录不包含运行时错误(DET/DEM)、重入性说明或具体函数签名,因此调用上下文和并发规则应参见各自使用的驱动程序函数。
本使用说明仅基于 AUTOSAR R20-11 中关于[SWS_CanTrcv_00163]的规范数据。
实现者指南即将推出(复杂度 I1)
类型 CanTrcv_TrcvWakeupModeType [SWS_CanTrcv_00164] 📄 PDF
This type shall be used to control the CAN transceiver concerning wake up events and wake up notifications.
枚举类型CanTrcv_TrcvWakeupModeType用于针对唤醒事件和唤醒通知控制 CAN 收发器[SWS_CanTrcv_00164]。该类型定义通过头文件Can_GeneralTypes.h提供,从而在整个协议栈范围内可用[SWS_CanTrcv_00164]。
取值范围包括针对各自被寻址收发器的三种控制模式[SWS_CanTrcv_00164]:
CANTRCV_WUMODE_ENABLE(值0x00):激活所寻址收发器上唤醒事件的通知[SWS_CanTrcv_00164]。CANTRCV_WUMODE_DISABLE(值0x01):停用所寻址收发器上唤醒事件的通知[SWS_CanTrcv_00164]。CANTRCV_WUMODE_CLEAR(值0x02):清除所寻址收发器中存储的唤醒事件[SWS_CanTrcv_00164]。
Interpretation:在实践中,该类型可能主要用作收发器驱动程序控制函数中的传递参数,以动态开启或关闭唤醒通知,并重置已检测到的唤醒事件。 问题 Q-c53d60cdad0442ca (未决)由于作为纯枚举类型的规范未指定函数签名、执行语义、错误代码或并发规则,因此这些方面完全由调用和处理该类型的驱动程序接口决定[SWS_CanTrcv_00164]。
本文由 AI 创建;无法保证准确性。
实现者指南即将推出(复杂度 I1)
类型 CanTrcv_TrcvWakeupReasonType [SWS_CanTrcv_00165] 📄 PDF
This type denotes the wake up reason detected by the CAN transceiver in detail. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_CANTransceiverDriver
Request a governed re-review of this record. The record is not changed immediately.
- Record
AUTOSAR/AP/record/CP_MOD_CanTrcv- Status
- unspecified
- Version
AUTOSAR/AP/record/CP_MOD_CanTrcv@rel:R20-11#87475f1f- Content hash
87475f1f- Source
- https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_CANTransceiverDriver.pdf#nameddest=SWS_CanTrcv_00001
gemini-3.8-flash-low· 2026-10-13 · 德文原文