Files
autosar_standard_spec_v4.4/Communication/AUTOSAR_SWS_FlexRayTransceiverDriver.md
T

695 lines
26 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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_<ModuleId>.h``SchM_<ModuleId>.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_ │
│ <V_A>_API │ │ <V_B>_API │ │ <V_C>_API │ │ <V_D>_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 ManagerECU 状态管理器) |
| Fr | FlexRay DriverFlexRay 驱动) |
| FrIf | FlexRay InterfaceFlexRay 接口) |
| FrTrcv | FlexRay Transceiver DriverFlexRay 收发器驱动) |
| 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_<Vendor>.h`(厂商特定实现)
- 源文件:`FrTrcv_<Vendor>.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_<Area>` | `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 章。关键时序图说明:
> - **图 1SPI 同步传输**`FrTrcv_MainFunction` → `Spi_SyncTransmit` → `Spi_GetJobResult` 循环查询。
> - **图 2:收发器模式切换**`FrIf_SetTransceiverMode` → `FrTrcv_SetTransceiverMode` → 写 SPI/DIO 寄存器。
> - **图 3:总线唤醒**ICU ISR → `FrTrcv_CheckWakeupByTransceiver` → `FrIf_Cbk_TransceiverWakeup`。
> - **图 4Active 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 | 通道 IDA=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 声明、模式状态、错误码、配置容器均已涵盖。