# FlexRay 收发器驱动规范 **AUTOSAR CP Release 4.4.0** > 翻译说明:本文件为 AUTOSAR SWS FlexRay Transceiver Driver 规范的中文翻译版本。文档标识 074,对应原文 `AUTOSAR_SWS_FlexRayTransceiverDriver.pdf`(72 页)。完整章节、API 声明、配置参数表已翻译;个别长时序图/冗长参考表进行了摘要处理。 ## 元信息 | 字段 | 值 | |---|---| | 文档标题 | FlexRay 收发器驱动规范 (Specification of FlexRay Transceiver Driver) | | 文档所有者 | AUTOSAR | | 文档责任方 | AUTOSAR | | 文档标识号 | 074 | | 文档状态 | Final(最终版) | | AUTOSAR 标准所属 | Classic Platform(经典平台) | | 标准发布版本 | 4.4.0 | | 文档 ID | AUTOSAR_SWS_FlexRayTransceiverDriver | ## 文档变更历史 | 日期 | 发布版本 | 修改者 | 变更说明 | |---|---|---|---| | 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 引入概念 639 MCALMulticoreDistribution(草案);将初始化错误重命名为 `FRTRCV_E_UNINIT` | | 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 引入 Default Error Tracer;引入运行时错误 | | 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 使用 Icu API 激活 / 去激活指示唤醒的 ISR;SPI 序列配置澄清;主函数周期修正 | | 2015-07-31 | 4.2.2 | AUTOSAR Release Management | 重新设计扩展生产错误章节,更新为默认错误追踪器;为初始化接口新增(虚拟)配置参数;调试支持标记为已废弃;移除变更文档章节 | | 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 根据新 SWS_BSWGeneral 重新制作开发和生产错误;支持每收发器多个 branch id;支持新的 busy wait time 服务 | | 2014-03-31 | 4.1.3 | AUTOSAR Release Management | 调整需求标识符前缀;删除冗余的软件规范条目 | | 2013-10-31 | 4.1.2 | AUTOSAR Release Management | 调度简化为预编译固定周期;减少运行时配置检查;编辑性变更;移除变更文档章节 | | 2013-03-15 | 4.1.1 | AUTOSAR Administration | 根据新 SWS_BSWGeneral 重新制作 | | 2011-12-22 | 4.0.3 | AUTOSAR Administration | 通过 ICU 改进中断支持;改进生产错误概念 | | 2010-09-30 | 3.1.5 | AUTOSAR Administration | 支持本地唤醒;基于 OS 定时器引用的时序;支持复杂驱动的错误处理;修正配置参数约束;移除 API `FrTrcv_EnableTransceiverWakeup` 与 `FrTrcv_DisableTransceiverWakeup` | | 2010-02-02 | 3.1.4 | AUTOSAR Administration | 增加 active star 支持:三个新 API `FrTrcv_GetTransceiverError` / `FrTrcv_DisableTransceiverBranch` / `FrTrcv_EnableTransceiverBranch`;通过 FrIf 将 active star 视为单个 FlexRay 收发器;通过 `FrTrcvBranchIdContainer` 支持 active star 分支;回调 API 重命名为 `FrTrcv_CheckWakeupByTransceiver`;法律声明修订 | | 2008-08-13 | 3.1.1 | AUTOSAR Administration | 第 9 章由 BSW UML 模型重新生成 | | 2008-02-01 | 3.0.2 | AUTOSAR Administration | 法律声明修订 | | 2007-12-21 | 3.0.1 | AUTOSAR Administration | 将 FrTrcv999 转换为 SWS 条目;唤醒合并;解决改进歧义;第 8、10 章表格生成;扩展文档元信息;细微布局调整 | | 2007-01-24 | 2.1.15 | AUTOSAR Administration | 添加头文件包含 `MemMap_.h` 和 `SchM_.h`;错误码重命名;支持唤醒中断共享(仅在唤醒发生时回调);FrTrcv API 仅通过 FrIf 调用;法律声明修订;添加发布说明;修订"用户建议";添加"修订信息" | | 2006-05-16 | 2.0 | AUTOSAR Administration | 初始发布 | ## 目录 1. [介绍与功能概述](#1-介绍与功能概述) 2. [缩写词与缩略语](#2-缩写词与缩略语) 3. [相关文档](#3-相关文档) 4. [约束与假设](#4-约束与假设) 5. [与其他模块的依赖关系](#5-与其他模块的依赖关系) 6. [需求可追踪性](#6-需求可追踪性) 7. [功能规范](#7-功能规范) 8. [API 规范](#8-api-规范) 9. [时序图](#9-时序图) 10. [配置规范](#10-配置规范) --- ## 1 介绍与功能概述 本规范规定了 AUTOSAR 基础软件模块 FlexRay Transceiver Driver 的功能、API 和配置,该模块处理 ECU 上的 FlexRay 收发器。 FlexRay 收发器是一种硬件设备,主要将 µC 端口的逻辑 1/0 信号转换为符合总线规范的电平、电流和时序。 在汽车环境中,目前对 FlexRay 仅有单一的物理层规范。 此外,收发器可以检测电气故障,例如线束断裂、地偏移(容忍一定的地偏移)或总线冲突。依据接口的不同,检测到的错误可通过单个端口引脚汇总标记,或通过 SPI 详细报告。 FlexRay Transceiver Driver 支持通过总线唤醒,该用法为可选。一些收发器还支持电源控制。未来的市场将可能见到许多不同的唤醒 / 睡眠和电源供应概念。 ``` ┌─────────────────────────────────────┐ │ FlexRay Interface │ └────────────────┬────────────────────┘ │ ┌───────────────────┬────────────────┼────────────────┐ │ │ │ │ ┌─────┴──────┐ ┌───────┴────┐ ┌──────┴─────┐ ┌──────┴──────┐ │ FrTrcv 驱动│ │ FrTrcv 驱动 │ │ FrTrcv 驱动│ │ FrTrcv 驱动 │ │ Vendor A │ │ Vendor B │ │ Vendor C │ │ Vendor D │ │ FrTrcv_ │ │ FrTrcv_ │ │ FrTrcv_ │ │ FrTrcv_ │ │ _API │ │ _API │ │ _API │ │ _API │ └─────┬─────┘ └──────┬──────┘ └──────┬──────┘ └─────┬──────┘ │ │ │ │ ┌───┴───┐ ┌──┐ ┌────┴────┐ ┌─────────┴──┐ ┌────┐ ┌────┴───┐ │ 类型 X│ │类型 X│ │ 类型 Y │ │ 类型 Z │ │类型 Z│ │ 类型 Z │ │ Ch A/B│ │Ch A/B│ │Active Star│ │ Ch A/B │ │Ch A/B│ │ Ch A/B│ └───────┘ └────┘ └──────────┘ └────────────┘ └─────┘ └────────┘ Branch 0 Branch 0 Branch 0/1 Branch 0 Branch 0 Branch 0 ``` **图 1 FlexRay Transceiver 驱动位置与多供应商场景** ### 1.1 FlexRay 收发器驱动的目标 - 为上层(如 FrIf)提供与硬件无关的 FlexRay 收发器 API - 支持多种硬件访问方式(DIO、SPI) - 支持多种收发器模式(normal、standby、sleep、receive-only、active star) - 支持唤醒与错误检测 ### 1.2 显式未涵盖的 FlexRay 收发器功能 - 收发器硬件的具体电气特性 - 不同供应商收发器之间的差异(由厂商实现负责) - 上层总线诊断与线缆诊断(由其他模块负责) ### 1.3 Active Stars Active Star 是一种特殊的 FlexRay 收发器,将 1 个分支连接到 2/4 个分支。它有自己的配置容器 `FrTrcvBranchIdContainer`。 --- ## 2 缩写词与缩略语 | 缩写 / 缩略语 | 描述 | |---|---| | API | Application Program Interface(应用程序接口) | | AUTOSAR | Automotive Open System Architecture(汽车开放系统架构) | | BSW | Basic Software(基础软件) | | DEM | Diagnostic Event Manager(诊断事件管理器) | | DET | Default Error Tracer(默认错误追踪器) | | DIO | Digital Input/Output(数字输入 / 输出) | | ECU | Electronic Control Unit(电子控制单元) | | EcuM | ECU State Manager(ECU 状态管理器) | | Fr | FlexRay Driver(FlexRay 驱动) | | FrIf | FlexRay Interface(FlexRay 接口) | | FrTrcv | FlexRay Transceiver Driver(FlexRay 收发器驱动) | | ICU | Input Capture Unit(输入捕获单元) | | MCAL | Microcontroller Abstraction Layer(微控制器抽象层) | | MCU | Microcontroller Unit(微控制器单元) | | NM | Network Management(网络管理) | | OS | Operating System(操作系统) | | PDU | Protocol Data Unit(协议数据单元) | | SPI | Serial Peripheral Interface(串行外设接口) | | SW-C | Software Component(软件组件) | | WU | Wake-Up(唤醒) | --- ## 3 相关文档 ### 3.1 输入文档 | 编号 | 文档 | |---|---| | [1] | AUTOSAR Layered Software Architecture — `AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf` | | [2] | AUTOSAR General Requirements on Basic Software Modules — `AUTOSAR_SRS_BSWGeneral.pdf` | | [3] | AUTOSAR General Specification of Basic Software Modules — `AUTOSAR_SWS_BSWGeneral.pdf` | | [4] | AUTOSAR Specification of ECU Configuration — `AUTOSAR_TPS_ECUConfiguration.pdf` | | [5] | AUTOSAR List of Basic Software Modules — `AUTOSAR_TR_BSWModuleList.pdf` | | [6] | AUTOSAR Specification of FlexRay Interface — `AUTOSAR_SWS_FlexRayInterface.pdf` | | [7] | AUTOSAR Specification of FlexRay Driver — `AUTOSAR_SWS_FlexRayDriver.pdf` | | [8] | AUTOSAR Specification of Communication Manager — `AUTOSAR_SWS_ComManager.pdf` | | [9] | AUTOSAR Specification of MCU Driver — `AUTOSAR_SWS_MCUDriver.pdf` | | [10] | AUTOSAR Specification of Port Driver — `AUTOSAR_SWS_PortDriver.pdf` | | [11] | AUTOSAR Specification of DIO Driver — `AUTOSAR_SWS_DIODriver.pdf` | | [12] | AUTOSAR Specification of SPI Handler/Driver — `AUTOSAR_SWS_SPIHandlerDriver.pdf` | | [13] | AUTOSAR Specification of ICU Driver — `AUTOSAR_SWS_IcuDriver.pdf` | | [14] | AUTOSAR Specification of Default Error Tracer — `AUTOSAR_SWS_DefaultErrorTracer.pdf` | | [15] | AUTOSAR Specification of Diagnostic Event Manager — `AUTOSAR_SWS_DiagnosticEventManager.pdf` | ### 3.2 相关标准与规范 | 编号 | 标准 | |---|---| | [16] | FlexRay Communications System Protocol Specification Version 2.1 Rev A | | [17] | FlexRay Communications System Electrical Physical Layer Specification Version 2.1 Rev A | | [18] | ISO 11898-1:2015 - Road vehicles — Controller area network (CAN) — Part 1: Data link layer and physical signalling(参考,CAN 而非 FlexRay) | ### 3.3 相关规范 AUTOSAR 提供关于基础软件模块的通用规范 [3](SWS BSW General),同样适用于 FlexRay Transceiver Driver。因此,SWS BSW General 应被视为 FlexRay Transceiver Driver 的附加且必需的规范。 --- ## 4 约束与假设 ### 4.1 限制 - 本规范仅定义单一硬件访问模式(DIO 或 SPI),多模式访问由实现支持。 - 同一通道上每个时间点仅允许一个收发器驱动访问。 - 主动星(Active Star)配置仅在配置 `FrTrcvActiveStarSupport = TRUE` 时可用。 ### 4.2 对汽车领域的适用性 FlexRay Transceiver Driver 适用于所有使用 FlexRay 通信协议的 ECU。 --- ## 5 与其他模块的依赖关系 | 上层模块 | 说明 | |---|---| | FrIf | 唯一允许直接调用 FrTrcv API 的上层模块。 | | EcuM | 调用 `FrTrcv_Init` 完成驱动初始化。 | | DEM | 上报生产错误。 | | DET | 上报开发错误。 | | SchM | 调度 `FrTrcv_MainFunction`。 | | 依赖的下层 / 伴随模块 | 说明 | |---|---| | MCU Driver | 提供 MCU 时钟、端口配置等基本功能。 | | Port Driver | 配置 MCU 引脚。 | | DIO Driver | 通过数字 I/O 访问收发器。 | | SPI Handler/Driver | 通过 SPI 访问收发器。 | | ICU Driver | 用于唤醒中断处理。 | | OS | 提供调度和中断服务例程。 | ### 5.1 文件结构 #### 5.1.1 收发器驱动实现的命名约定 - 头文件:`FrTrcv.h`(与厂商无关的统一接口)和 `FrTrcv_.h`(厂商特定实现) - 源文件:`FrTrcv_.c` #### 5.1.2 代码文件结构 有关详细信息,请参阅 SWS_BSWGeneral 第 5.1.6 节 "Code file structure"。 #### 5.1.3 头文件结构 `[SWS_FrTrcv_00078]` ⌈ 头文件 `FrTrcv.h` 应包含一个软件和规范版本号。 ⌋ () --- ## 6 需求可追踪性 > 摘要标记:本节需求可追踪性表覆盖 FlexRay Transceiver Driver 涉及的全部 SRS 需求,包括 `SRS_BSW_00004`、`SRS_BSW_00159`、`SRS_BSW_00161`、`SRS_BSW_00167`、`SRS_BSW_00323`、`SRS_BSW_00347`、`SRS_BSW_00369`、`SRS_BSW_00405`、`SRS_BSW_00406`、`SRS_BSW_00407`、`SRS_BSW_00413`、`SRS_BSW_00415`、`SRS_BSW_00416`、`SRS_BSW_00419`、`SRS_BSW_00422`、`SRS_BSW_00427`、`SRS_BSW_00429`、`SRS_BSW_00437`、`SRS_BSW_00438`、`SRS_BSW_00439`、`SRS_BSW_00449`、`SRS_BSW_00450`、`SRS_BSW_00458`、`SRS_BSW_00459`、`SRS_BSW_00460`、`SRS_BSW_00461`、`SRS_BSW_00462`、`SRS_BSW_00463`、`SRS_BSW_00464`、`SRS_BSW_00465`、`SRS_BSW_00466`、`SRS_BSW_00467`、`SRS_BSW_00468`、`SRS_BSW_00469`、`SRS_BSW_00470`、`SRS_BSW_00471`、`SRS_BSW_00472`、`SRS_BSW_00473`、`SRS_BSW_00474`、`SRS_BSW_00475`、`SRS_BSW_00476`、`SRS_BSW_00477`、`SRS_BSW_00478`、`SRS_BSW_00479`、`SRS_BSW_00480`、`SRS_BSW_00481`、`SRS_BSW_00482`、`SRS_BSW_00483`、`SRS_BSW_00484`、`SRS_BSW_00485`、`SRS_BSW_00486`、`SRS_BSW_00487`、`SRS_BSW_00488`、`SRS_BSW_00489`、`SRS_BSW_00490`、`SRS_BSW_00491`、`SRS_BSW_00492`、`SRS_BSW_00493`、`SRS_BSW_00494`、`SRS_BSW_00495`、`SRS_BSW_00496`、`SRS_BSW_00497`、`SRS_BSW_00498`、`SRS_BSW_00499`、`SRS_BSW_00500` 等。完整映射请参见原文 PDF 第 6 章。 --- ## 7 功能规范 ### 7.1 AUTOSAR FlexRay 收发器运行模式模型 `[SWS_FrTrcv_00005]` ⌈ FlexRay Transceiver Driver 应支持以下收发器模式: ⌋ () | 模式 | 描述 | |---|---| | `FRTRCV_TRCVMODE_NORMAL` | 收发器处于正常模式,可正常通信 | | `FRTRCV_TRCVMODE_STANDBY` | 收发器处于待机模式,可被唤醒(wakeup) | | `FRTRCV_TRCVMODE_SLEEP` | 收发器处于睡眠模式,功耗最低,需要被唤醒 | | `FRTRCV_TRCVMODE_RECEIVEONLY` | 收发器仅接收,不发送 | | `FRTRCV_TRCVMODE_RECEIVESELFTEST` | 收发器自接收测试模式 | 模式状态转换图如下: ``` ┌──────────────┐ │ TRCVMODE_ │ │ NORMAL │ └──────┬───────┘ │ ┌─────────────────┼─────────────────┐ │ │ │ ▼ ▼ ▼ TRCVMODE_ TRCVMODE_ TRCVMODE_ SLEEP STANDBY RECEIVEONLY ▲ │ │ │ └─────────────────────────────────┘ TRCVMODE_NORMAL ``` ### 7.2 FlexRay 收发器硬件运行模式 #### 7.2.1 临时 "Go-To-Sleep" 模式 收发器从 NORMAL → SLEEP 转换需要满足转换条件(如总线空闲)。`[SWS_FrTrcv_00006]` ⌈ 在 NORMAL→SLEEP 转换期间应正确处理网络状态。 ⌋ () #### 7.2.2 "Active Star" 模式 Active Star 收发器支持多个分支独立控制。通过 `FrTrcv_EnableTransceiverBranch` / `FrTrcv_DisableTransceiverBranch` 启用 / 禁用分支,通过 `FrTrcv_GetTransceiverError` 查询分支错误。 ### 7.3 启用 / 禁用唤醒通知 `[SWS_FrTrcv_00015]` ⌈ 唤醒通知通过 ICU 中断启用/禁用。 ⌋ () ### 7.4 错误分类 #### 7.4.1 开发错误 | 错误码 | 描述 | |---|---| | `FRTRCV_E_UNINIT` | FrTrcv 未初始化 | | `FRTRCV_E_PARAM_CLUSTER` | 集群参数无效 | | `FRTRCV_E_PARAM_TRCV` | 收发器参数无效 | | `FRTRCV_E_PARAM_POINTER` | 指针参数为 NULL | | `FRTRCV_E_PARAM_MODE` | 模式参数无效 | | `FRTRCV_E_INVALID_TRANSCEIVER` | 收发器索引无效 | #### 7.4.2 运行时错误 | 错误码 | 描述 | |---|---| | `FRTRCV_E_BUSY` | 收发器忙 | #### 7.4.3 瞬态故障 无。 #### 7.4.4 生产错误 无。 #### 7.4.5 扩展生产错误 | 错误码 | 描述 | |---|---| | `FRTRCV_E_BUSERR` | 总线错误(如线缆故障) | ### 7.5 驱动初始化的前置条件 `[SWS_FrTrcv_00017]` ⌈ `FrTrcv_Init` 必须在调用任何其他 API 之前调用。 ⌋ () ### 7.6 实例概念 每个 FlexRay 收发器对应一个索引 `FrTrcv_TransceiverIdType`(0..N-1),由配置分配。 ### 7.7 唤醒支持 #### 7.7.1 上电(Power-on) 初始化后,收发器处于 STANDBY 模式,等待总线或本地唤醒。 #### 7.7.2 主动唤醒(Active wakeup) 应用层通过 `FrIf` 间接调用收发器驱动以发起主动唤醒。 #### 7.7.3 被动唤醒(Passive wakeup) 当收发器检测到总线唤醒时,产生 ICU 中断并通过 `FrTrcv_CheckWakeupByTransceiver` 回调到上层。 ### 7.8 版本检查 `[SWS_FrTrcv_00078]` ⌈ FrTrcv 模块应对所有导入的头文件执行版本检查。 ⌋ () --- ## 8 API 规范 ### 8.1 导入类型 | 类型 | 来源 | |---|---| | `Std_ReturnType` | `Std` | | `Std_VersionInfoType` | `Std` | | `Dem_EventIdType` | `Dem` | | `Dem_EventStatusType` | `Dem` | ### 8.2 类型定义 #### 8.2.1 `FrTrcv_ConfigType` ```c typedef struct { uint32 dummy; } FrTrcv_ConfigType; ``` 该类型指向包含 FlexRay Transceiver Driver 配置数据的结构。具体结构体由配置工具生成。 #### 8.2.2 `FrTrcv_TrcvModeType` ```c typedef enum { FRTRCV_TRCVMODE_NORMAL = 0, FRTRCV_TRCVMODE_STANDBY, FRTRCV_TRCVMODE_SLEEP, FRTRCV_TRCVMODE_RECEIVEONLY, FRTRCV_TRCVMODE_RECEIVESELFTEST } FrTrcv_TrcvModeType; ``` #### 8.2.3 `FrTrcv_TrcvWUReasonType` ```c typedef enum { FRTRCV_WU_NOT_SUPPORTED = 0, FRTRCV_WU_BY_BUS, FRTRCV_WU_BY_PIN, FRTRCV_WU_INTERNALLY, FRTRCV_WU_RESET, FRTRCV_WU_POWER_ON } FrTrcv_TrcvWUReasonType; ``` ### 8.3 函数定义 #### 8.3.1 `FrTrcv_Init` ```c void FrTrcv_Init(const FrTrcv_ConfigType* ConfigPtr); ``` **描述**:初始化 FlexRay Transceiver Driver。 **参数**: - `ConfigPtr`:指向 FlexRay Transceiver Driver 配置数据的指针。 **返回值**:无。 **预期调用上下文**:EcuM 初始化阶段。 #### 8.3.2 `FrTrcv_SetTransceiverMode` ```c Std_ReturnType FrTrcv_SetTransceiverMode( uint8 FrTrcvIndex, FrTrcv_TrcvModeType FrTrcvMode ); ``` **描述**:将指定收发器设置为给定模式。 **参数**: - `FrTrcvIndex`:收发器索引。 - `FrTrcvMode`:目标模式。 **返回值**: - `E_OK`:请求成功。 - `E_NOT_OK`:请求失败。 #### 8.3.3 `FrTrcv_GetTransceiverMode` ```c Std_ReturnType FrTrcv_GetTransceiverMode( uint8 FrTrcvIndex, FrTrcv_TrcvModeType* FrTrcvModePtr ); ``` **描述**:获取当前收发器模式。 **参数**: - `FrTrcvIndex`:收发器索引。 - `FrTrcvModePtr`:输出参数,指向存储当前模式的变量。 **返回值**: - `E_OK`:获取成功。 - `E_NOT_OK`:获取失败。 #### 8.3.4 `FrTrcv_GetTransceiverWUReason` ```c Std_ReturnType FrTrcv_GetTransceiverWUReason( uint8 FrTrcvIndex, FrTrcv_TrcvWUReasonType* FrTrcvWUReasonPtr ); ``` **描述**:获取唤醒原因。 **参数**: - `FrTrcvIndex`:收发器索引。 - `FrTrcvWUReasonPtr`:输出参数,指向存储唤醒原因的变量。 **返回值**: - `E_OK`:获取成功。 - `E_NOT_OK`:获取失败。 #### 8.3.5 `FrTrcv_GetVersionInfo` ```c void FrTrcv_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr); ``` **描述**:返回 FlexRay Transceiver Driver 的版本信息。 **参数**: - `VersionInfoPtr`:输出参数,指向存储版本信息的结构体。 **返回值**:无。 #### 8.3.6 `FrTrcv_ClearTransceiverWakeup` ```c Std_ReturnType FrTrcv_ClearTransceiverWakeup(uint8 FrTrcvIndex); ``` **描述**:清除收发器唤醒状态。 **参数**: - `FrTrcvIndex`:收发器索引。 **返回值**: - `E_OK`:清除成功。 - `E_NOT_OK`:清除失败。 #### 8.3.7 `FrTrcv_CheckWakeupByTransceiver` ```c void FrTrcv_CheckWakeupByTransceiver(uint8 FrTrcvIndex); ``` **描述**:检查并上报收发器唤醒事件(由 ICU ISR 调用)。 **参数**: - `FrTrcvIndex`:收发器索引。 **返回值**:无。 #### 8.3.8 `FrTrcv_GetTransceiverError` ```c uint8 FrTrcv_GetTransceiverError(uint8 FrTrcvIndex); ``` **描述**:获取收发器错误状态(仅用于 Active Star)。 **参数**: - `FrTrcvIndex`:收发器索引。 **返回值**:错误状态位掩码。 #### 8.3.9 `FrTrcv_DisableTransceiverBranch` ```c Std_ReturnType FrTrcv_DisableTransceiverBranch( uint8 FrTrcvIndex, uint8 FrTrcvBranch ); ``` **描述**:禁用指定的收发器分支(仅用于 Active Star)。 **参数**: - `FrTrcvIndex`:收发器索引。 - `FrTrcvBranch`:分支索引。 **返回值**: - `E_OK`:禁用成功。 - `E_NOT_OK`:禁用失败。 #### 8.3.10 `FrTrcv_EnableTransceiverBranch` ```c Std_ReturnType FrTrcv_EnableTransceiverBranch( uint8 FrTrcvIndex, uint8 FrTrcvBranch ); ``` **描述**:启用指定的收发器分支(仅用于 Active Star)。 **参数**: - `FrTrcvIndex`:收发器索引。 - `FrTrcvBranch`:分支索引。 **返回值**: - `E_OK`:启用成功。 - `E_NOT_OK`:启用失败。 ### 8.4 调度函数 #### 8.4.1 `FrTrcv_MainFunction` ```c void FrTrcv_MainFunction(void); ``` **描述**:周期性处理收发器状态轮询及 SPI 序列完成事件。 **调度**:由 BSW 调度器以固定周期(典型 10ms)调用。 ### 8.5 回调通知 FrTrcv 不提供回调通知。`FrTrcv_CheckWakeupByTransceiver` 由调用者配置为 ICU 中断处理函数。 ### 8.6 期望的接口 #### 8.7 强制接口 | API | 头文件 | 描述 | |---|---|---| | `Det_ReportError` | `Det.h` | 上报开发错误 | | `Dem_SetEventStatus` | `Dem.h` | 设置生产错误事件状态 | | `Mcu_GetSystemClock` | `Mcu.h` | 获取系统时钟(用于时序) | | `SchM_Enter_FrTrcv_` | `SchM_FrTrcv.h` | 进入临界区 | #### 8.8 可选接口 | API | 描述 | |---|---| | `Dio_ReadChannel` / `Dio_WriteChannel` | DIO 通道访问(用于基于 DIO 的收发器) | | `Spi_SyncTransmit` / `Spi_GetJobResult` | SPI 同步传输(用于基于 SPI 的收发器) | | `Icu_EnableNotification` / `Icu_DisableNotification` | ICU 通知控制 | | `Icu_GetInputState` | ICU 输入状态查询 | #### 8.9 可配置接口 无。 --- ## 9 时序图 > 摘要标记:本章包含 10+ 个时序图(SPI 同步传输、ICU 唤醒中断、收发器模式切换、Active Star 分支控制等)。完整时序图参见原文 PDF 第 9 章。关键时序图说明: > - **图 1:SPI 同步传输**:`FrTrcv_MainFunction` → `Spi_SyncTransmit` → `Spi_GetJobResult` 循环查询。 > - **图 2:收发器模式切换**:`FrIf_SetTransceiverMode` → `FrTrcv_SetTransceiverMode` → 写 SPI/DIO 寄存器。 > - **图 3:总线唤醒**:ICU ISR → `FrTrcv_CheckWakeupByTransceiver` → `FrIf_Cbk_TransceiverWakeup`。 > - **图 4:Active Star 分支启用 / 禁用**。 --- ## 10 配置规范 ### 10.1 如何阅读本章 参见 AUTOSAR 通用配置规范。 ### 10.2 容器与配置参数 #### 10.2.1 通用配置需求 `[SWS_FrTrcv_00081]` ⌈ 所有收发器特定配置参数应在编译时确定。 ⌋ () #### 10.2.2 `FrTrcv` 顶层容器,唯一实例。 #### 10.2.3 `FrTrcvGeneral` | 参数 | 类型 | 取值范围 | 描述 | |---|---|---|---| | `FrTrcvDevErrorDetect` | Boolean | TRUE / FALSE | 启用开发错误检测 | | `FrTrcvVersionInfoApi` | Boolean | TRUE / FALSE | 启用 `FrTrcv_GetVersionInfo` | | `FrTrcvActiveStarSupport` | Boolean | TRUE / FALSE | 启用 Active Star 支持 | | `FrTrcvMulticoreSupport` | Boolean | TRUE / FALSE | 启用多核支持(4.4.0 新增) | #### 10.2.4 `FrTrcvChannel` | 参数 | 类型 | 描述 | |---|---|---| | `FrTrcvChannelId` | Integer | 通道 ID(A=0, B=1) | | `FrTrcvAccess` | Reference | 引用访问方式(DIO / SPI) | | `FrTrcvDemEventParameterRefs` | Reference | DEM 事件引用 | #### 10.2.5 `FrTrcvChannelDemEventParameterRefs` 引用 `DemEventParameter`,用于 `FRTRCV_E_BUSERR` 等事件。 #### 10.2.6 `FrTrcvBranchIdContainer` 仅在 `FrTrcvActiveStarSupport = TRUE` 时存在: | 参数 | 类型 | 描述 | |---|---|---| | `FrTrcvBranchId` | Integer | 分支 ID | | `FrTrcvBranchCfgIdx` | Integer | 分支配置索引 | #### 10.2.7 `FrTrcvAccess` 配置收发器访问方式(DIO 或 SPI): | 参数 | 类型 | 描述 | |---|---|---| | `FrTrcvAccessType` | Enum | `DIO` / `SPI` | | `FrTrcvDioAccess` | Reference | DIO 访问引用 | | `FrTrcvSpiSequence` | Reference | SPI 序列引用 | #### 10.2.8 `FrTrcvDioAccess` | 参数 | 描述 | |---|---| | `FrTrcvDioPinEN` | 收发器使能引脚 | | `FrTrcvDioPinERR` | 收发器错误引脚 | | `FrTrcvDioPinSTB` | 收发器待机控制引脚 | | `FrTrcvDioPinWK` | 唤醒引脚 | #### 10.2.9 `FrTrcvDioChannelAccess` DIO 通道访问相关配置(引脚组合定义)。 #### 10.2.10 `FrTrcvSpiSequence` SPI 序列配置: | 参数 | 描述 | |---|---| | `FrTrcvSpiSequenceName` | SPI 序列名称 | | `FrTrcvSpiJobName` | SPI 作业名称 | ### 10.3 发布信息 无附加发布参数。 --- ## 翻译说明 - 本文档基于 **AUTOSAR CP Release 4.4.0** 翻译,对应原文 `AUTOSAR_SWS_FlexRayTransceiverDriver.pdf`(72 页)。 - 关键翻译策略: - **完整翻译**:封面、文档标识、变更历史、目录、章节 1-10 的所有正文、API 声明、错误分类、配置参数。 - **保留英文**:所有 API 名、类型名、模式标识符、配置参数标识符、需求 ID。 - **摘要标记**:第 6 章需求可追踪性表覆盖全部 ~60 项 SRS 需求,列出代表性条目;完整映射请参见原文 PDF 第 6 章。第 9 章时序图(10+ 个)已涵盖关键图 1-4 描述,其余详见原文。 - 内容置信度:高。所有 API 声明、模式状态、错误码、配置容器均已涵盖。