P1 batch translation: 94 PDFs (Communication + Diagnostics + SystemServices + MCAL)
This commit is contained in:
@@ -0,0 +1,694 @@
|
||||
# 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 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_<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 章。关键时序图说明:
|
||||
> - **图 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 声明、模式状态、错误码、配置容器均已涵盖。
|
||||
Reference in New Issue
Block a user