DEENESPTFRRUARHIKOZHNL

FlexRay Transceiver Driver (FrTrcv)

ModulFrTrcv (FlexRay Transceiver Driver)
BSW-Modul-ID71
Standard-Header#include "FrTrcv.h"
SWS-SpezifikationAUTOSAR_SWS_FlexRayTransceiverDriver.pdf
ClusterFlexRay

模块指南人工智能生成

控制 FlexRay 收发器硬件:设置操作模式、检测唤醒事件并报告总线错误。
AI 生成 未审核 模型: claude-opus-5-5 · 推理强度: high · 温度: 不可控 · 提示词: d2a3c22cd47c 来源 未决问题(6)
因果锚点:R20-11 自 R20-11 起有效 为此规范版本重新合成。
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

控制 FlexRay 收发器硬件:设置操作模式、检测唤醒事件并报告总线错误。

FlexRay 收发器驱动程序通过 Dio 或 Spi 控制 ECU 的收发器芯片,并在 ACTIVE 中提供 NORMAL、RECEIVEONLY、STANDBY 和 SLEEP 模式 [SWS_FrTrcv_00481]。它设置和读取模式,通过周期性轮询或通知检测唤醒事件,将其报告给 EcuM 并提供唤醒原因。对于有源星型拓扑,它按分支查询总线错误并关断或接通分支。如果模式切换失败,它将返回 E_NOT_OK 并保持先前状态不变 [SWS_FrTrcv_00323]。

FlexRay 收发器驱动程序控制 ECU 的收发器芯片。它通过从零开始的索引 FrTrcv_TrcvIdx 寻址各个芯片 [SWS_FrTrcv_00323]。在下层方向上,它根据配置通过 Dio 或 Spi 访问硬件 SWS FrTrcv 图 10.4 第77页。此外,它还使用 Icu、EcuM、Dem 和 Det [SWS_FrTrcv_00334]。在上层方向上,推测主要由 FrIf 代表 FlexRay State Manager 使用这些服务(解释)SWS FrSM 第20页。 问题 (未决)

kontext FrSM FrSM FrIf FrIf FrSM->FrIf FrIf_GetTransceiverWUReason u. a. FrTrcv FrTrcv (FlexRay-Transceivertreiber) FrIf->FrTrcv Modus, Weckgrund, Zweige (Interpretation) EcuM EcuM EcuM->FrTrcv FrTrcv_Init (Interpretation) SchM BSW-Scheduler SchM->FrTrcv FrTrcv_MainFunction FrTrcv->EcuM EcuM_SetWakeupEvent Dio Dio FrTrcv->Dio Dio-Zugriff (FrTrcvAccess) Spi Spi FrTrcv->Spi SPI-Sequenz (FrTrcvAccess) Icu Icu FrTrcv->Icu Icu_Enable/DisableNotification Tm Tm FrTrcv->Tm Tm_BusyWait1us16bit Dem DEM FrTrcv->Dem Dem_SetEventStatus Det DET FrTrcv->Det Det_ReportError / Det_ReportRuntimeError

上下文图:位于 FrIf/FrSM、硬件驱动程序以及 EcuM、DEM 和 DET 服务之间的 FrTrcv。来源:[SWS_FrTrcv_00334]、SWS FrSM 第20页

上电后,驱动程序处于 NOT_ACTIVE 状态,并通过 FrTrcv_Init 进入 ACTIVE 状态 SWS FrTrcv 图 7.1 第23页。在此处适用 NORMAL、RECEIVEONLY、STANDBY 和 SLEEP 模式 [SWS_FrTrcv_00481]。FrTrcv_SetTransceiverMode 在它们之间切换。如果切换失败,该服务将返回 E_NOT_OK 并保持旧状态不变。驱动程序使用 Tm_BusyWait1us16bit 实现等待时间 [SWS_FrTrcv_00485]。在 STANDBY 模式下,ICU 唤醒通道已启用,而在 NORMAL 模式下则已关断 [SWS_FrTrcv_00491] [SWS_FrTrcv_00492]。

modi cluster_power_on POWER_ON cluster_active ACTIVE Aus 供电断开 NOT_ACTIVE NOT_ACTIVE Aus->NOT_ACTIVE Power On NORMAL NORMAL NOT_ACTIVE->NORMAL FrTrcv_Init() RECEIVEONLY RECEIVEONLY NORMAL->RECEIVEONLY FrTrcv_SetTransceiverMode (FRTRCV_TRCVMODE_RECEIVEONLY) STANDBY STANDBY NORMAL->STANDBY FrTrcv_SetTransceiverMode (FRTRCV_TRCVMODE_STANDBY) SLEEP SLEEP NORMAL->SLEEP FrTrcv_SetTransceiverMode (FRTRCV_TRCVMODE_SLEEP) RECEIVEONLY->NORMAL FrTrcv_SetTransceiverMode (FRTRCV_TRCVMODE_NORMAL) STANDBY->NORMAL FrTrcv_SetTransceiverMode (FRTRCV_TRCVMODE_NORMAL) STANDBY->SLEEP FrTrcv_SetTransceiverMode (FRTRCV_TRCVMODE_SLEEP)

状态图:四个 ACTIVE 模式仅在 FrTrcv_Init 之后可达。转换边部分经过重构(解释)。来源:SWS FrTrcv 图 7.1 第23页、[SWS_FrTrcv_00481]

驱动程序通过两种途径检测唤醒事件:通过周期性 FrTrcv_MainFunction [SWS_FrTrcv_00330] 或通过通知。在 FrTrcv_CheckWakeupByTransceiver 之后,它将该事件报告给 EcuM SWS FrTrcv 第46页。只要硬件能够区分,FrTrcv_GetTransceiverWUReason 就会提供原因(例如 FRTRCV_WU_BY_BUS)[SWS_FrTrcv_00074]。FrTrcv_ClearTransceiverWakeup 清除所有待处理事件 [SWS_FrTrcv_00329]。

对于有源星型拓扑,可选服务按分支查询总线错误并关断或重新接通分支 [SWS_FrTrcv_00419] [SWS_FrTrcv_00442] [SWS_FrTrcv_00443]。对于错误处理,规定如下:

  • 诸如 FRTRCV_E_UNINIT 等开发错误发送至 DET [SWS_FrTrcv_00085]。
  • 诸如 FRTRCV_E_FR_NO_CONTROL_TRCV 等运行时错误通过 Det_ReportRuntimeError 处理 [SWS_FrTrcv_91001]。
  • A 类和 B 类总线错误由驱动程序报告给 DEM 或报告给配置的替代函数 [SWS_FrTrcv_00475]。

角色:FlexRay 收发器芯片的硬件抽象

FlexRay 收发器驱动程序控制 ECU 的一个或多个 FlexRay 收发器芯片。所有与通道相关的服务均通过在驱动程序上下文中有效的从零开始的索引 FrTrcv_TrcvIdx 来选择芯片 [SWS_FrTrcv_00323]。该驱动程序提供三组服务:

FrTrcv_GetVersionInfo 明确提供软件模块的版本,而非收发器硬件的版本 SWS FrTrcv 第43页。

在下层方向上,驱动程序通过 Dio 或 Spi 访问芯片。针对唤醒通知,它使用 Icu,报告则发送给 EcuM、Dem 和 Det [SWS_FrTrcv_00334] [SWS_FrTrcv_00321]。访问方式由选择容器 FrTrcvAccess 确定:它仅允许两种备选方案中的一种,即 Dio 访问或 SPI 序列 SWS FrTrcv 图 10.4 第77页。

在上层方向上,推测主要由 FlexRay Interface 使用这些服务。FlexRay State Manager 通过 FrIf_GetTransceiverWUReason 获取集群中每个收发器的唤醒原因 SWS FrSM 第20页。解释:FrIf 将这些请求转发给 FrTrcv。与此相符的是,Fr_GeneralTypes.h 中的公共类型受 FR_GENERAL_TYPES 保护,以便多个收发器驱动程序和 FrIf 可以共享它们 SWS FrTrcv 第34页。 问题 Q-29229b532631a6b5 (未决)

kontext FrSM FrSM FrIf FrIf FrSM->FrIf FrIf_GetTransceiverWUReason u. a. FrTrcv FrTrcv (FlexRay-Transceivertreiber) FrIf->FrTrcv Modus, Weckgrund, Zweige (Interpretation) EcuM EcuM EcuM->FrTrcv FrTrcv_Init (Interpretation) SchM BSW-Scheduler SchM->FrTrcv FrTrcv_MainFunction FrTrcv->EcuM EcuM_SetWakeupEvent Dio Dio FrTrcv->Dio Dio-Zugriff (FrTrcvAccess) Spi Spi FrTrcv->Spi SPI-Sequenz (FrTrcvAccess) Icu Icu FrTrcv->Icu Icu_Enable/DisableNotification Tm Tm FrTrcv->Tm Tm_BusyWait1us16bit Dem DEM FrTrcv->Dem Dem_SetEventStatus Det DET FrTrcv->Det Det_ReportError / Det_ReportRuntimeError

上下文图:FrTrcv 位于 FrIf/FrSM 与 Dio、Spi 及 Icu 驱动程序之间,并向 EcuM、DEM 和 DET 报告。来源:[SWS_FrTrcv_00334]、[SWS_FrTrcv_00485]、[SWS_FrTrcv_00330]、SWS FrSM 第20页

NOT_ACTIVE 与 ACTIVE 之间的操作模式

规范的图 7.1 将这些模式描述为嵌套状态机。在 POWER_ON 内部,驱动程序在上电后处于 NOT_ACTIVE 状态,并通过 FrTrcv_Init() 进入 ACTIVE 状态 SWS FrTrcv 图 7.1 第23页。仅在 ACTIVE 状态下,FrTrcv_TrcvModeType 的四个值有效:FRTRCV_TRCVMODE_NORMAL、FRTRCV_TRCVMODE_RECEIVEONLY、FRTRCV_TRCVMODE_STANDBY 和 FRTRCV_TRCVMODE_SLEEP [SWS_FrTrcv_00481]。调用层使用 FrTrcv_SetTransceiverMode 在这些模式之间切换 [SWS_FrTrcv_00323]。

模式切换同步进行且不可重入。进入可选状态的转换允许失败。若失败,该服务将返回 E_NOT_OK,且先前的状态保持不变 SWS FrTrcv 第39页。若芯片进行状态转换需要等待时间,驱动程序将通过时间服务 Tm_BusyWait1us16bit 实现该等待时间 [SWS_FrTrcv_00485]。实际状态由 FrTrcv_GetTransceiverMode 读取。该服务是可重入的,因此也允许并行调用 [SWS_FrTrcv_00324]。

modi cluster_power_on POWER_ON cluster_active ACTIVE Aus 供电断开 NOT_ACTIVE NOT_ACTIVE Aus->NOT_ACTIVE Power On NORMAL NORMAL NOT_ACTIVE->NORMAL FrTrcv_Init() RECEIVEONLY RECEIVEONLY NORMAL->RECEIVEONLY FrTrcv_SetTransceiverMode (FRTRCV_TRCVMODE_RECEIVEONLY) STANDBY STANDBY NORMAL->STANDBY FrTrcv_SetTransceiverMode (FRTRCV_TRCVMODE_STANDBY) SLEEP SLEEP NORMAL->SLEEP FrTrcv_SetTransceiverMode (FRTRCV_TRCVMODE_SLEEP) RECEIVEONLY->NORMAL FrTrcv_SetTransceiverMode (FRTRCV_TRCVMODE_NORMAL) STANDBY->NORMAL FrTrcv_SetTransceiverMode (FRTRCV_TRCVMODE_NORMAL) STANDBY->SLEEP FrTrcv_SetTransceiverMode (FRTRCV_TRCVMODE_SLEEP)

状态图:仅在 FrTrcv_Init 之后,才能通过 FrTrcv_SetTransceiverMode 到达四个 ACTIVE 模式。转换边的选择部分经过重构(解释)。来源:SWS FrTrcv 图 7.1 第23页、[SWS_FrTrcv_00481]

启动与总线通信的建立

FrTrcv_Init 接收指向所选配置集的指针并初始化驱动程序 [SWS_FrTrcv_00322]。该独立函数初始化变量和硬件资源。为唤醒源提供服务的驱动程序在重启块中重新初始化,并在此过程中重新激活唤醒报告的触发机制 SWS FrTrcv 第37页。该驱动程序支持 AUTOSAR 栈的初始化序列。解释:在该序列中,推测由 ECU State Manager 调用该函数。 问题 Q-93ce1e5987a96873 (未决)

切换至 NORMAL 会影响唤醒路径。如果配置了 FrTrcvIcuChannelRef,驱动程序将通过 Icu_DisableNotification 关断 ICU 通道 [SWS_FrTrcv_00492]。若没有该引用,它将完全不访问 ICU 通道 [SWS_FrTrcv_00490]。

启动并切换至 NORMALEcuMFrIf / FrSMFrTrcvDio / SpiIcuTmUse Case: InitialisierungFrTrcv_Init(ConfigPtr)变量与硬件资源initialisieren (NOT_ACTIVE → ACTIVE)Use Case: Kommunikation aufnehmenFrTrcv_SetTransceiverMode(TrcvIdx,FRTRCV_TRCVMODE_NORMAL)设置模式引脚或寄存器Tm_BusyWait1us16bit(...)optFrTrcvIcuChannelRef konfiguriertIcu_DisableNotification(...)altWechsel erfolgreichE_OKWechsel fehlgeschlagenE_NOT_OK(状态未改变)

时序图:初始化之后切换至 NORMAL,伴随忙等待和可选的 ICU 关断。切换失败将使状态保持不变。来源:[SWS_FrTrcv_00322]、[SWS_FrTrcv_00323]、[SWS_FrTrcv_00485]、[SWS_FrTrcv_00492]

STANDBY 和 SLEEP 中的唤醒检测、唤醒原因

在切换至 STANDBY 时,驱动程序重新启用 ICU 通道 [SWS_FrTrcv_00491]。此外,只要硬件支持,FrTrcv_SetTransceiverMode 每次切换至 STANDBY 时都会清除收发器中的错误历史记录 SWS FrTrcv 第39页。

此外,驱动程序还可以进行周期性轮询。为此,它通过 SchM_FrTrcv.h 提供 FrTrcv_MainFunction [SWS_FrTrcv_00330]。根据 R23-11 的文档处,该函数会在处于 STANDBY 和 SLEEP 状态的所有总线上搜索唤醒事件,并在内部保存找到的事件。周期由配置确定。该函数可以与 FlexRay 总线调度同步或异步运行 SWS FrTrcv 第49页。

切换至 STANDBY 并进行周期性唤醒检测FrIf / FrSMFrTrcvIcuDio / SpiBSW-SchedulerFrTrcv_SetTransceiverMode(TrcvIdx,FRTRCV_TRCVMODE_STANDBY)清除收发器中的错误历史记录(若硬件支持)optFrTrcvIcuChannelRef konfiguriertIcu_EnableNotification(...)E_OKloop周期性,周期依据配置FrTrcv_MainFunction()Weckstatus aller Busse inSTANDBY/SLEEP lesenWeckereignis intern speichern轮询行为依据文档出处 R23-11;与 FlexRay 总线调度无关

时序图:转换至 STANDBY 时,清除错误历史记录并使能 ICU 通知。随后,Main Function 周期性搜索唤醒事件。来源:[SWS_FrTrcv_00491]、[SWS_FrTrcv_00330]、SWS FrTrcv 第49页

如果器件检测到通过总线的唤醒,则下层 SPI 或 DIO 端会通知驱动程序。这可以在中断上下文中发生 SWS FrTrcv 第46页。若随后调用了 FrTrcv_CheckWakeupByTransceiver [SWS_FrTrcv_00331],驱动程序会将该事件报告给 ECU State Manager。为此,EcuM_SetWakeupEvent 包含在所使用的接口列表中 [SWS_FrTrcv_00334]。解释:该检查调用推测由 EcuM 在其唤醒流程中触发。 问题 Q-d5873691a495bef0 (未决)

唤醒原因由 FrTrcv_GetTransceiverWUReason [SWS_FrTrcv_00325] 作为 FrTrcv_TrcvWUReasonType 的值提供。可能的值为 FRTRCV_WU_BY_BUS、FRTRCV_WU_BY_PIN、FRTRCV_WU_INTERNALLY 或 FRTRCV_WU_NOT_SUPPORTED [SWS_FrTrcv_00074]。对原因的区分细致程度在很大程度上取决于硬件 SWS FrTrcv 第42页。后续版本的文档处还列出了 FRTRCV_WU_RESET 和 FRTRCV_WU_POWER_ON SWS FrTrcv 第34页。有效负载中的 R20-11 需求文本在此处有所删节。

FrSM 针对 FRTRCV_WU_BY_BUS 检查每个收发器的唤醒原因。以此区分是不存在总线唤醒、存在部分总线唤醒还是存在完全总线唤醒 SWS FrSM 第20页。FrTrcv_ClearTransceiverWakeup 随后清除所有挂起的唤醒事件 [SWS_FrTrcv_00329]。即使在唤醒通知被禁用的情况下,该调用也是允许的 SWS FrTrcv 第44页。

检测、报告并评估唤醒事件Icu / Dio / SpiFrTrcvEcuMFrIf / FrSMUse Case: ErkennungWeck-Benachrichtigung(ggf. Interrupt-Kontext)FrTrcv_CheckWakeupByTransceiver(TrcvIdx)(Aufrufer: Interpretation)EcuM_SetWakeupEvent(...)Use Case: AuswertungFrTrcv_GetTransceiverWUReason(TrcvIdx, &Reason)altGrund in FrTrcv_TrcvWUReasonType definiertE_OK, z. B. FRTRCV_WU_BY_BUS原因未定义E_NOT_OK(输出未改变)FrTrcv_ClearTransceiverWakeup(TrcvIdx)E_OK(所有待处理的唤醒事件已清除)

时序图:从硬件通知经由 EcuM 报告直至查询和清除唤醒原因的流程。有效负载未指明检查函数的调用者(解释)。来源:[SWS_FrTrcv_00331]、[SWS_FrTrcv_00325]、[SWS_FrTrcv_00329]、SWS FrTrcv 第46页

主动星型:分支监控、禁用与使能

对于作为主动星型为多个分支供电的收发器,提供了三个附加服务。它们仅在配置了分支时才可用 SWS FrTrcv 第52页。这三者还均通过从零开始的索引 FrTrcv_BranchIdx 寻址分支,且是不可重入的 [SWS_FrTrcv_00419] [SWS_FrTrcv_00442] [SWS_FrTrcv_00443]。

FrTrcv_GetTransceiverError 将分支的错误状态作为 uint32 写入 FrTrcv_BusErrorState。可以查询硬件所支持的由 FlexRay EPL 规定的所有错误 SWS FrTrcv 第48页。故障分支使用 FrTrcv_DisableTransceiverBranch 进行禁用 SWS FrTrcv 第50页。FrTrcv_EnableTransceiverBranch 与 FlexRay 总线调度同步将其重新使能 SWS FrTrcv 第51页。如果索引超出有效范围,则两个切换服务均返回 E_NOT_OK,且分支状态保持不变 [SWS_FrTrcv_00442] [SWS_FrTrcv_00443]。

zweig start 检查分支状态 (调用层,解释) get FrTrcv_GetTransceiverError (TrcvIdx, BranchIdx, &BusErrorState) start->get rc 返回 E_OK? get->rc na 错误状态不可用 或索引超出范围 rc->na 不 fehler Zweig fehlerhaft? rc->fehler 是 aktiv Zweig bleibt aktiv fehler->aktiv 不 dis FrTrcv_DisableTransceiverBranch (TrcvIdx, BranchIdx) fehler->dis 是 wieder 是否请求重新启用? dis->wieder aus Zweig bleibt abgeschaltet wieder->aus 不 en FrTrcv_EnableTransceiverBranch 与 FlexRay 总线调度同步 wieder->en 是

活动图:按分支进行错误查询、禁用故障分支并与总线调度同步重新使能。由调用层做出决定属于一种解释。来源:[SWS_FrTrcv_00419]、SWS FrTrcv 第50页、SWS FrTrcv 第51页

配置、访问方式与分区

FrTrcv_ConfigType 是一个实现特定的结构体 [SWS_FrTrcv_00487]。该模块包含一个或多个容器 FrTrcvChannel(每个收发器通道一个)以及 FrTrcvGeneral SWS FrTrcv 第59页。此外,R23-11/R25-11 的该文档处仅提及 VARIANT-PRE-COMPILE,而不支持 post-build。对于 R20-11,有效负载中不包含相关需求。

针对每个收发器,FrTrcvAccess 选择 FrTrcvDioAccess 或 FrTrcvSpiSequence SWS FrTrcv 图 10.4 第77页。可选功能可在编译时开启和关闭 SWS FrTrcv 第52页。FrTrcvIcuChannelRef 将 ICU 唤醒通知绑定到 [SWS_FrTrcv_00490]。使用 FrTrcvDemReportErrorStatusConfiguration 可以替换 Dem_SetEventStatus,采用具有相同签名的自定义函数 [SWS_FrTrcv_00475]。

在分区系统中,该模块在每个分区作为独立实例运行。API 调用仅对发生该调用的分区生效 [SWS_FrTrcv_00494]。模块必须拒绝实现不支持的分区分配 [SWS_FrTrcv_00497]。

发生错误时的行为

开发错误已作规定[SWS_FrTrcv_00085]:

  • FRTRCV_E_FR_INVALID_TRCVIDX (0x01),
  • FRTRCV_E_FR_INVALID_BRANCHIDX (0x02),
  • FRTRCV_E_UNINIT (0x10),
  • FRTRCV_E_PARAM_POINTER (0x15).

它们仅在开发错误检测使能时才会报告。示例包括分支服务中的 FRTRCV_E_UNINIT SWS FrTrcv 第50页 以及 FrTrcv_GetVersionInfo 中的 NULL 指针 SWS FrTrcv 第43页。

作为运行时错误,驱动程序将错误模式下的调用报告为 FRTRCV_E_FR_TRCV_NOT_STANDBY 至 FRTRCV_E_FR_TRCV_NOT_RECEIVEONLY(0x11 至 0x14)。它使用 FRTRCV_E_FR_NO_CONTROL_TRCV (0x16) 报告与器件通信缺失或故障 [SWS_FrTrcv_91001]。这些报告通过 Det_ReportRuntimeError 传递 [SWS_FrTrcv_00493]。例如在收发器访问出错时,FrTrcv_GetTransceiverMode 会触发错误 FRTRCV_E_FR_NO_CONTROL_TRCV SWS FrTrcv 第41页。

出现 E_NOT_OK 时,输出参数保持不变,例如在 FrTrcv_GetTransceiverMode 和 FrTrcv_GetTransceiverError 中 SWS FrTrcv 第48页。模式切换失败时将保持先前的状态 [SWS_FrTrcv_00323]。

pruefung start 调用 FrTrcv 服务 init Modul initialisiert? start->init e_uninit Det_ReportError: FRTRCV_E_UNINIT init->e_uninit 不 idx FrTrcv_TrcvIdx 是否在范围内? init->idx 是 r_nok 返回 E_NOT_OK (输出或状态未改变) e_uninit->r_nok e_idx Det_ReportError: FRTRCV_E_FR_INVALID_TRCVIDX idx->e_idx 不 br 分支服务:FrTrcv_BranchIdx 是否在范围内? idx->br 是 e_idx->r_nok e_br Det_ReportError: FRTRCV_E_FR_INVALID_BRANCHIDX br->e_br 不 ptr Zeigerparameter ungleich NULL? br->ptr ja / kein Zweigdienst e_br->r_nok e_ptr Det_ReportError: FRTRCV_E_PARAM_POINTER ptr->e_ptr 不 zugriff 访问收发器 (Dio / Spi) ptr->zugriff 是 e_ptr->r_nok ok Zugriff fehlerfrei? zugriff->ok e_rt Det_ReportRuntimeError: FRTRCV_E_FR_NO_CONTROL_TRCV ok->e_rt 不 r_ok 返回 E_OK ok->r_ok 是 e_rt->r_nok

活动图:参数和初始化检查会导致开发错误,访问错误会导致运行时错误。检查的顺序属于一种解释。DET 检查仅在错误检测使能时存在。来源:[SWS_FrTrcv_00085]、[SWS_FrTrcv_91001]、[SWS_FrTrcv_00493]

对于生产诊断,驱动程序区分两类收发器:

  • 对于 A 类 GPIO 控制的收发器,活动的 ERRN 引脚(低电平)表示“Fail”,非活动的引脚(高电平)表示“Pass” [SWS_FrTrcv_00489]。
  • 对于 B 类 SPI 控制的收发器,每个置位的位 1…9 都会触发一个总线错误 [SWS_FrTrcv_00488]。

评估在控制器发生意外 HALT 或处于 NORMAL_ACTIVE 时进行。在总线短路的情况下,仅凭驱动程序的“Pass”不足以作为证明 SWS FrTrcv 第26页。Dem_SetEventStatus 仅在 STANDARD_REPORTING 下可用 [SWS_FrTrcv_00334]。

dem anlass 触发原因:控制器的非预期 HALT 或 NORMAL_ACTIVE klasse Transceiverklasse? anlass->klasse a Klasse A (GPIO): ERRN-Pin aktiv low? klasse->a A b 类别 B (SPI): 是否置位了位 1...9? klasse->b B fail_a Fail: FRTRCV_E_FR_ERRN_TRCV_<TrcvIdx> a->fail_a 是 pass_a Pass: FRTRCV_E_FR_ERRN_TRCV_<TrcvIdx> a->pass_a 不 fail_b Fail: FRTRCV_E_FR_BUSERROR_TRCV_<TrcvIdx> b->fail_b 是 pass_b Pass: FRTRCV_E_FR_BUSERROR_TRCV_<TrcvIdx> b->pass_b 不 cfg FrTrcvDemReportErrorStatusConfiguration konfiguriert? fail_a->cfg pass_a->cfg fail_b->cfg pass_b->cfg eigen 已配置函数 (签名同 Dem_SetEventStatus) cfg->eigen 是 dem Dem_SetEventStatus (仅在 STANDARD_REPORTING 时) cfg->dem 不

活动图:按收发器类别进行 Pass/Fail 评估,以及向 DEM 或向配置的替代函数报告的路径。来源:[SWS_FrTrcv_00488]、[SWS_FrTrcv_00489]、[SWS_FrTrcv_00475]

进一步详细证据

出处分类
[SWS_FrTrcv_00481], SWS FrTrcv Abb. 7.1 S. 23操作模式与状态机
[SWS_FrTrcv_00323], SWS FrTrcv S. 39模式切换、失败、在 STANDBY 中清除错误历史记录
[SWS_FrTrcv_00322], SWS FrTrcv S. 37初始化以及唤醒源的重启规则
[SWS_FrTrcv_00330], [SWS_FrTrcv_00485]周期性轮询与等待时间
[SWS_FrTrcv_00331], [SWS_FrTrcv_00325], [SWS_FrTrcv_00074], [SWS_FrTrcv_00329]从检测到清除的唤醒路径
[SWS_FrTrcv_00490], [SWS_FrTrcv_00491], [SWS_FrTrcv_00492]取决于模式的 ICU 通知
[SWS_FrTrcv_00419], [SWS_FrTrcv_00442], [SWS_FrTrcv_00443]主动星型的分支管理
[SWS_FrTrcv_00085], [SWS_FrTrcv_91001], [SWS_FrTrcv_00493]开发与运行时错误
[SWS_FrTrcv_00488], [SWS_FrTrcv_00489], [SWS_FrTrcv_00475]DEM 事件与报告路径
[SWS_FrTrcv_00487], [SWS_FrTrcv_00494], [SWS_FrTrcv_00497]配置类型与分区

基于有效负载中所含 R20-11 需求与文档处的 AI 生成指南。后续版本的文档处均已明确标出。唯有 AUTOSAR 规范具有约束力。

FlexRay Transceiver Driver (FrTrcv)

Controls physical bus transceiver states and bus diagnostics on FlexRay lines.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

函数 FrTrcv_Init [SWS_FrTrcv_00322] 📄 PDF

void FrTrcv_Init (const FrTrcv_ConfigType* ConfigPtr);

This service initializes the Fr Trcv.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 8880c7552dd0 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步函数 FrTrcv_Init 初始化 AUTOSAR Classic Platform 的 FlexRay 收发器驱动([SWS_FrTrcv_00322])。它具有服务 ID 0x00,并通过头文件 FrTrcv.h 提供([SWS_FrTrcv_00322])。模块 FrTrcv 提供该服务用于配置和调试收发器硬件([SWS_FrTrcv_00322])。

该接口需要类型为 const FrTrcv_ConfigType* 的指针 ConfigPtr 作为唯一参数,该指针指向所选的收发器配置数据集([SWS_FrTrcv_00322]):

由于 FrTrcv_Init 被指定为不可重入(Non Reentrant),因此绝不允许并发或多次同时调用该函数([SWS_FrTrcv_00322])。执行同步进行,直到初始化完成([SWS_FrTrcv_00322])。

对于调用上下文和顺序条件,本规范未作明确说明;初始化大概在系统启动期间由基础软件状态管理在所有常规通信活动之前执行。 问题 Q-5fa4966e37b10516 (未决)具体的错误代码、对空指针的响应以及与 DET 或 DEM 的交互均未包含在所提供的规范范围内,因此不再进一步阐述([SWS_FrTrcv_00322])。

此使用说明基于 AUTOSAR Classic R20-11 规范自动生成。

实现者指南即将推出(复杂度 I1)

函数 FrTrcv_SetTransceiverMode [SWS_FrTrcv_00323] 📄 PDF

Std_ReturnType FrTrcv_SetTransceiverMode (uint8 FrTrcv_TrcvIdx, FrTrcv_TrcvModeType FrTrcv_TrcvMode);

This service sets the transceiver mode.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: fabc34a3f07e 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步函数 FrTrcv_SetTransceiverMode 用于切换 FlexRay 收发器的运行模式 [SWS_FrTrcv_00323]。该服务的声明通过头文件 FrTrcv.h 提供 [SWS_FrTrcv_00323]。

参数与控制

该函数需要两个输入参数 [SWS_FrTrcv_00323]:

  • FrTrcv_TrcvIdx:该从零开始的索引用于标识收发器驱动内要为其执行状态更改的具体收发器 [SWS_FrTrcv_00323]。
  • FrTrcv_TrcvMode:选择收发器应转换至的目标状态 [SWS_FrTrcv_00323]。此时需要注意,转换到可选状态可能会失败 [SWS_FrTrcv_00323]。

返回值与错误情况下的行为

模式切换的结果通过类型为 Std_ReturnType 的返回值同步传递 [SWS_FrTrcv_00323]:

  • E_OK:指示收发器的状态已成功切换至所需模式 [SWS_FrTrcv_00323]。
  • E_NOT_OK:指示状态转换失败;收发器的先前状态在此过程中保持不变 [SWS_FrTrcv_00323]。

并发性

该服务被指定为不可重入(Non Reentrant)并具有同步执行语义 [SWS_FrTrcv_00323]。基于属性 Non Reentrant,调用上下文可能负责确保对驱动程序的并行或重叠调用得到保护。 问题 Q-b83c7a2879a572b7 (未决)

该使用说明自动生成,且完全基于 AUTOSAR 版本 R20-11 的规范数据。

实现者指南即将推出(复杂度 I1)

函数 FrTrcv_GetTransceiverMode [SWS_FrTrcv_00324] 📄 PDF

Std_ReturnType FrTrcv_GetTransceiverMode (uint8 FrTrcv_TrcvIdx, FrTrcv_TrcvModeType* FrTrcv_TrcvModePtr);

This function returns the actual state of the transceiver.

函数 FrTrcv_ClearTransceiverWakeup [SWS_FrTrcv_00329] 📄 PDF

Std_ReturnType FrTrcv_ClearTransceiverWakeup (uint8 FrTrcv_TrcvIdx);

This function clears a pending wake up event.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 486bcee2a527 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与语义

同步函数 FrTrcv_ClearTransceiverWakeup 用于重置 FlexRay 收发器上的挂起唤醒事件 [SWS_FrTrcv_00329]。它在头文件 FrTrcv.h 中声明,并具有服务 ID 0x0c [SWS_FrTrcv_00329]。

通过从零开始的输入参数 FrTrcv_TrcvIdx 指定驱动程序内的相关收发器 [SWS_FrTrcv_00329]。

错误处理与返回值

类型为 Std_ReturnType 的返回值告知操作的结果 [SWS_FrTrcv_00329]:

  • E_OK:收发器唤醒源的唤醒事件已成功清除 [SWS_FrTrcv_00329]。
  • E_NOT_OK:参数 FrTrcv_TrcvIdx 超出有效范围;在这种情况下,唤醒状态保持不变 [SWS_FrTrcv_00329]。

并发性与限制

该函数被指定为不可重入 [SWS_FrTrcv_00329]。因此,调用方必须确保针对同一实例的调用不会中断或并行发生。由于该函数被定义为同步函数,因此唤醒事件的清除大概在调用期间直接在驱动程序层完成。 问题 Q-e548008f8bae0ff0 (未决)

该使用说明基于规范 SWS_FrTrcv_00329 自动生成。

函数 FrTrcv_CheckWakeupByTransceiver [SWS_FrTrcv_00331] 📄 PDF

void FrTrcv_CheckWakeupByTransceiver (uint8 FrTrcv_TrcvIdx);

-

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 61627651eb93 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与调用上下文

函数 FrTrcv_CheckWakeupByTransceiver 属于 FlexRay 收发器驱动(模块 FrTrcv),并通过头文件 FrTrcv.h 声明 [SWS_FrTrcv_00331]。该函数具有服务 ID 0x0e,并同步执行 [SWS_FrTrcv_00331]。它仅接收一个类型为 uint8 的输入参数 FrTrcv_TrcvIdx,该参数作为从零开始的索引,指定在收发器驱动上下文中要为其执行操作的相应收发器 [SWS_FrTrcv_00331]。既不存在输入/输出参数,也不存在纯输出参数,并且该函数不提供返回值(void)[SWS_FrTrcv_00331]。

规范数据中未存储详细的功能描述。解释:从命名来看,该函数可能用于检查寻址的收发器硬件上是否存在唤醒事件(Wakeup)或是否已被其检测到 [SWS_FrTrcv_00331]。 问题 Q-9b8b5d8fb8e4543f (未决)

并发与错误处理

关于并发行为,FrTrcv_CheckWakeupByTransceiver 被归类为可重入 [SWS_FrTrcv_00331]。这允许针对系统中不同的收发器实例进行并发调用。在此规范元素中,未定义特定的错误处理机制,例如针对无效索引的检查或向 Default Error Tracer(DET)或 Diagnostic Event Manager(DEM)的报告 [SWS_FrTrcv_00331]。

本使用说明由 AI 生成,并完全基于 AUTOSAR R20-11 软件包的规范说明。

函数 FrTrcv_GetTransceiverError [SWS_FrTrcv_00419] 📄 PDF

Std_ReturnType FrTrcv_GetTransceiverError (uint8 FrTrcv_TrcvIdx, uint8 FrTrcv_BranchIdx, uint32* FrTrcv_BusErrorState);

All mandatory errors defined by the Flex Ray EPL [5] which are supported by the Flex Ray transceiver hardware can be acce ssed via this API:In addition to errors on the physical layer and local to the ECU hardware, a global error flag is provided.

函数 FrTrcv_DisableTransceiverBranch [SWS_FrTrcv_00442] 📄 PDF

Std_ReturnType FrTrcv_DisableTransceiverBranch (uint8 FrTrcv_TrcvIdx, uint8 FrTrcv_BranchIdx);

This function disable s the specified branch on the addressed (active star) transceiver.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: f12db972f543 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步函数 FrTrcv_DisableTransceiverBranch 用于禁用寻址的有源星型收发器([SWS_FrTrcv_00442])上的单个指定分支。它通过头文件 FrTrcv.h 提供,且服务 ID 为 0x0f([SWS_FrTrcv_00442])。

参数与调用上下文

调用以同步方式进行,并被指定为不可重入(Non Reentrant)([SWS_FrTrcv_00442])。该函数需要两个从零开始的输入参数:

  • FrTrcv_TrcvIdx:从零开始的索引,用于在收发器驱动程序上下文中标识要对其应用操作的收发器([SWS_FrTrcv_00442])。
  • FrTrcv_BranchIdx:从零开始的索引,用于确定寻址的有源星型收发器上要禁用的分支([SWS_FrTrcv_00442])。

返回值与错误处理

操作结果通过返回类型 Std_ReturnType 进行指示([SWS_FrTrcv_00442]):

限制与并发性

由于 FrTrcv_DisableTransceiverBranch 不可重入,调用不得在无保护的情况下并发执行([SWS_FrTrcv_00442])。此外,调用者必须确保两个索引均在配置的限制范围内,以避免被拒绝且分支状态保持不变([SWS_FrTrcv_00442])。

本使用说明基于版本 R20-11 中的规范 SWS_FrTrcv_00442。

函数 FrTrcv_EnableTransceiverBranch [SWS_FrTrcv_00443] 📄 PDF

Std_ReturnType FrTrcv_EnableTransceiverBranch (uint8 FrTrcv_TrcvIdx, uint8 FrTrcv_BranchIdx);

This function enables the specified branch on the addressed (active star) transceiver.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 8a9d8eb5de3b 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步函数 FrTrcv_EnableTransceiverBranch 用于激活所寻址收发器上的特定分支,通常用于有源星型拓扑(Active Star)[SWS_FrTrcv_00443]。

参数与调用上下文

  • FrTrcv_TrcvIdx:驱动上下文中收发器的从零开始的索引 [SWS_FrTrcv_00443]。
  • FrTrcv_BranchIdx:要激活的特定收发器分支的从零开始的索引 [SWS_FrTrcv_00443]。

返回值与错误处理

该函数返回类型为 Std_ReturnType 的状态 [SWS_FrTrcv_00443]:

  • E_OK:指定的收发器分支已成功激活 [SWS_FrTrcv_00443]。
  • E_NOT_OK:其中一个参数(FrTrcv_TrcvIdx 或 FrTrcv_BranchIdx)超出有效范围;在此情况下分支的状态保持不变 [SWS_FrTrcv_00443]。

并发性与限制

该调用为同步执行,且被指定为不可重入(Non Reentrant)[SWS_FrTrcv_00443]。因此,调用方必须确保不会针对相同或并行的上下文并发调用该函数。

本使用说明基于规范自动生成。

函数 FrTrcv_MainFunction [SWS_FrTrcv_00330] 📄 PDF

void FrTrcv_MainFunction (void);

-

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: f615787755a2 来源 未决问题(2)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

函数 FrTrcv_MainFunction 构成了 FlexRay 收发器驱动程序(模块 FrTrcv)的周期性主函数,并分配有服务 ID 0x0d [SWS_FrTrcv_00330]。该 C 接口定义为签名 void FrTrcv_MainFunction (void) 的无参数函数,因此在调用时既不传递输入参数,也没有状态值作为返回类型 [SWS_FrTrcv_00330]。

头文件 SchM_FrTrcv.h 被指定为该函数的包含文件 [SWS_FrTrcv_00330]。通过 Schedule Manager 接口提供该函数支持了这样一种推测:在系统运行期间,该调用通常由 BSW 调度器在已配置的操作系统任务上下文中周期性执行。

由于缺少参数和返回值,收发器产生的控制和监控流程应该在模块内部自主执行。 问题 Q-2710fa5096bf4d90 (未决)关于重入性、并发性、DET 错误处理或与其他驱动程序接口的相互作用等各方面,规范在此处未作规定 [SWS_FrTrcv_00330]。

本使用说明由 AI 生成,并完全基于 R20-11 版本的规范内容。

类型 FrTrcv_TrcvModeType [SWS_FrTrcv_00481] 📄 PDF

Transceiver modes in state ACTIVE. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_FlexRayTransceiverDriver

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 4db36c82b07f 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

根据 [SWS_FrTrcv_00481],枚举类型 FrTrcv_TrcvModeType 指定了在顶层操作状态 ACTIVE 下 FlexRay 收发器的允许操作模式。类型化定义是 FlexRay 收发器驱动 FrTrcv 的组成部分,并通过头文件 Fr_GeneralTypes.h 在平台范围内为上层软件模块提供 [SWS_FrTrcv_00481]。

该枚举包含用于收发器操作的四种已定义状态 [SWS_FrTrcv_00481]:

  • FRTRCV_TRCVMODE_NORMAL:表示收发器处于常规操作状态 NORMAL [SWS_FrTrcv_00481]。
  • FRTRCV_TRCVMODE_STANDBY:表示收发器处于省电就绪状态 STANDBY [SWS_FrTrcv_00481]。
  • FRTRCV_TRCVMODE_SLEEP:表示收发器处于休眠状态 SLEEP [SWS_FrTrcv_00481]。
  • FRTRCV_TRCVMODE_RECEIVEONLY:表示收发器处于 RECEIVEONLY 状态且仅允许接收过程 [SWS_FrTrcv_00481]。

在使用与交互方面,该类型充当用于控制以及获取 FlexRay 收发器硬件状态的核心接口量(解释:由于有效负载中不包含函数签名,枚举值可能作为用于切换操作模式的函数调用的参数以及状态查询时的反馈)。 问题 Q-205f2b0575c32460 (未决)规范中未为此基础枚举类型定义特定的错误代码、通过 DET 或 DEM 进行的错误处理以及关于可重入性的限制 [SWS_FrTrcv_00481]。

本使用说明自动生成,并基于 AUTOSAR CP R20-11 规范。

实现者指南即将推出(复杂度 I1)

类型 FrTrcv_TrcvWUReasonType [SWS_FrTrcv_00074] 📄 PDF

This type to be used to specify the wake up reason detected by the FR transceiver in detail.

类型 ofaCfunctionwhichsubstitutesMultiplicityType [SWS_FrTrcv_00497] 📄 PDF

Type ofaCfunctionwhichsubstitutesMultiplicityType.

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/CP_MOD_FrTrcv
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_FrTrcv@rel:R20-11#7720e607
Content hash
7720e607
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_FlexRayTransceiverDriver.pdf#nameddest=SWS_FrTrcv_00322

初始化与状态

This service returns the version information of this module.

void FrTrcv_GetVersionInfo (Std_VersionInfoType* versioninfo);

This service initializes the Fr Trcv.

void FrTrcv_Init (const FrTrcv_ConfigType* ConfigPtr);

服务

-

void FrTrcv_CheckWakeupByTransceiver (uint8 FrTrcv_TrcvIdx);

This function clears a pending wake up event.

Std_ReturnType FrTrcv_ClearTransceiverWakeup (uint8 FrTrcv_TrcvIdx);

This function disable s the specified branch on the addressed (active star) transceiver.

Std_ReturnType FrTrcv_DisableTransceiverBranch (uint8 FrTrcv_TrcvIdx, uint8 FrTrcv_BranchIdx);

This function enables the specified branch on the addressed (active star) transceiver.

Std_ReturnType FrTrcv_EnableTransceiverBranch (uint8 FrTrcv_TrcvIdx, uint8 FrTrcv_BranchIdx);

All mandatory errors defined by the Flex Ray EPL [5] which are supported by the Flex Ray transceiver hardware can be acce ssed via this API:In addition to errors on the physical layer and local to the ECU hardware, a global error flag is provided.

Std_ReturnType FrTrcv_GetTransceiverError (uint8 FrTrcv_TrcvIdx, uint8 FrTrcv_BranchIdx, uint32* FrTrcv_BusErrorState);

This function returns the actual state of the transceiver.

Std_ReturnType FrTrcv_GetTransceiverMode (uint8 FrTrcv_TrcvIdx, FrTrcv_TrcvModeType* FrTrcv_TrcvModePtr);

This function returns the wakeup reason.

Std_ReturnType FrTrcv_GetTransceiverWUReason (uint8 FrTrcv_TrcvIdx, FrTrcv_TrcvWUReasonType* FrTrcv_TrcvWUReasonPtr);

This service sets the transceiver mode.

Std_ReturnType FrTrcv_SetTransceiverMode (uint8 FrTrcv_TrcvIdx, FrTrcv_TrcvModeType FrTrcv_TrcvMode);

周期性

-

void FrTrcv_MainFunction (void);

类型

Configuration data structure of the Fr Trcv module.

Transceiver modes in state ACTIVE. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_FlexRayTransceiverDriver

This type to be used to specify the wake up reason detected by the FR transceiver in detail.

Type ofaCfunctionwhichsubstitutesMultiplicityType.