805 lines
19 KiB
Markdown
805 lines
19 KiB
Markdown
# 以太网收发器驱动规范
|
||
|
||
**AUTOSAR CP Release 4.4.0**
|
||
|
||
> 翻译说明:本文件为 AUTOSAR SWS Ethernet Transceiver Driver (EthTrcv) 规范的中文翻译版本。文档标识 431,对应原文 `AUTOSAR_SWS_EthernetTransceiverDriver.pdf`(63 页)。
|
||
|
||
## 元信息
|
||
|
||
| 字段 | 值 |
|
||
|---|---|
|
||
| 文档标题 | 以太网收发器驱动规范 (Specification of Ethernet Transceiver Driver) |
|
||
| 文档所有者 | AUTOSAR |
|
||
| 文档责任方 | AUTOSAR |
|
||
| 文档标识号 | 431 |
|
||
| 文档状态 | Final(最终版) |
|
||
| AUTOSAR 标准所属 | Classic Platform(经典平台) |
|
||
| 标准发布版本 | 4.4.0 |
|
||
| 文档 ID | AUTOSAR_SWS_EthernetTransceiverDriver |
|
||
|
||
## 文档变更历史
|
||
|
||
| 日期 | 发布版本 | 修改者 | 变更说明 |
|
||
|---|---|---|---|
|
||
| 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 显式收发器链路控制;支持多核主机控制器 |
|
||
| 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 小幅修正和适配;改进 Switch 集成 |
|
||
| 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 通过 Switch 或 Mii 配置;100BASE-T1 测试模式支持 |
|
||
| 2015-07-31 | 4.2.2 | AUTOSAR Release Management | `EthTrcv_TransceiverInit` 功能合并到 `EthTrcv_Init` API;Development Error Tracer 重命名为 Default Error Tracer |
|
||
| 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 从同步 API 改为异步 API;以太网唤醒支持 |
|
||
| 2013-10-31 | 4.1.2 | AUTOSAR Release Management | 引入 `Eth_GeneralTypes.h`;支持异步实现的 API 偏差;编辑性变更 |
|
||
| 2013-03-15 | 4.1.1 | AUTOSAR Administration | 1000 kbit 以太网支持 |
|
||
| 2011-12-22 | 4.0.3 | AUTOSAR Administration | `EthTrcv_GetVersionInfo` 修订 |
|
||
| 2010-09-30 | 3.1.5 | AUTOSAR Administration | 进一步 post-build 可配置参数;通过附加参数 `EthTrcvWaitCount` 增强配置;从版本信息中移除 'Instance ID'(涉及 `EthTrcv_GetVersionInfo` API);`EthTrcv_GetVersionInfo` API 中附加的开发错误;改进 'XxxCtrlIdx' 语义描述;切换到已激活状态的状态行为规范 |
|
||
| 2010-02-02 | 3.1.4 | 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 基础软件模块 Ethernet Transceiver Driver (EthTrcv) 的功能、API 和配置。EthTrcv 抽象了汽车以太网收发器硬件(如 100BASE-T1、1000BASE-T1)。
|
||
|
||
### 1.1 模块职责
|
||
|
||
EthTrcv 的主要职责:
|
||
- 初始化以太网收发器
|
||
- 控制收发器模式(Normal、Standby、Sleep、Listen)
|
||
- 处理链路状态变化
|
||
- 支持唤醒(包括 4.2.1 引入的以太网唤醒)
|
||
- 提供物理层诊断(电缆诊断、信号质量)
|
||
- 支持 PHY 测试模式(4.3.0 新增 100BASE-T1 测试模式)
|
||
- 支持 MII 接口或 Switch 集成(4.3.0 新增)
|
||
|
||
### 1.2 模块在 AUTOSAR 架构中的位置
|
||
|
||
```
|
||
Ethernet Interface (EthIf)
|
||
│
|
||
┌─────┴─────┐
|
||
│ EthTrcv │ ← 本规范
|
||
└─────┬─────┘
|
||
│
|
||
PHY 硬件
|
||
(如 100BASE-T1)
|
||
```
|
||
|
||
### 1.3 关键概念
|
||
|
||
#### 1.3.1 100BASE-T1 / 1000BASE-T1
|
||
|
||
汽车以太网物理层标准:
|
||
- 100BASE-T1:100 Mbit/s,单对双绞线
|
||
- 1000BASE-T1:1000 Mbit/s,单对双绞线
|
||
|
||
#### 1.3.2 收发器模式
|
||
|
||
- `ETHTRCV_MODE_DOWN`:掉电
|
||
- `ETHTRCV_MODE_INIT`:初始化
|
||
- `ETHTRCV_MODE_ACTIVE`:激活(正常)
|
||
- `ETHTRCV_MODE_STANDBY`:待机
|
||
- `ETHTRCV_MODE_SLEEP`:睡眠
|
||
- `ETHTRCV_MODE_RESET`:复位
|
||
- `ETHTRCV_MODE_LISTEN`:仅监听
|
||
|
||
#### 1.3.3 链路状态
|
||
|
||
- `ETHTRCV_LINK_STATE_DOWN`:链路关闭
|
||
- `ETHTRCV_LINK_STATE_ACTIVE`:链路激活
|
||
|
||
---
|
||
|
||
## 2 缩写词与缩略语
|
||
|
||
| 缩写 | 描述 |
|
||
|---|---|
|
||
| API | Application Program Interface |
|
||
| AUTOSAR | Automotive Open System Architecture |
|
||
| BSW | Basic Software |
|
||
| COTS | Commercial Off-The-Shelf |
|
||
| DEM | Diagnostic Event Manager |
|
||
| DET | Default Error Tracer |
|
||
| ECU | Electronic Control Unit |
|
||
| EthIf | Ethernet Interface |
|
||
| EthTrcv | Ethernet Transceiver Driver |
|
||
| EthSwt | Ethernet Switch Driver |
|
||
| MAC | Media Access Control |
|
||
| MII | Media Independent Interface |
|
||
| PHY | Physical Layer |
|
||
| SPI | Serial Peripheral Interface |
|
||
| RTE | Runtime Environment |
|
||
|
||
---
|
||
|
||
## 3 相关文档
|
||
|
||
### 3.1 输入文档
|
||
|
||
| 编号 | 文档 |
|
||
|---|---|
|
||
| [1] | AUTOSAR SWS BSW General — `AUTOSAR_SWS_BSWGeneral.pdf` |
|
||
| [2] | AUTOSAR SRS BSW General — `AUTOSAR_SRS_BSWGeneral.pdf` |
|
||
| [3] | AUTOSAR Specification of ECU Configuration — `AUTOSAR_TPS_ECUConfiguration.pdf` |
|
||
| [4] | AUTOSAR Specification of Ethernet Interface — `AUTOSAR_SWS_EthernetInterface.pdf` |
|
||
| [5] | AUTOSAR Specification of Ethernet Switch Driver — `AUTOSAR_SWS_EthernetSwitchDriver.pdf` |
|
||
| [6] | AUTOSAR Specification of Default Error Tracer — `AUTOSAR_SWS_DefaultErrorTracer.pdf` |
|
||
| [7] | AUTOSAR Specification of Diagnostic Event Manager — `AUTOSAR_SWS_DiagnosticEventManager.pdf` |
|
||
| [8] | AUTOSAR List of Basic Software Modules — `AUTOSAR_TR_BSWModuleList.pdf` |
|
||
|
||
### 3.2 相关标准与规范
|
||
|
||
| 编号 | 标准 |
|
||
|---|---|
|
||
| [9] | IEEE 802.3bw-2015 - 100BASE-T1 |
|
||
| [10] | IEEE 802.3bp-2016 - 1000BASE-T1 |
|
||
| [11] | IEEE 802.3-2018 - Ethernet Standard |
|
||
| [12] | OPEN Alliance 100BASE-T1 / 1000BASE-T1 specifications |
|
||
| [13] | ISO 21111-3:2020 - Communication on Ethernet (参考) |
|
||
|
||
### 3.3 相关规范
|
||
|
||
AUTOSAR 通用基础软件模块规范 [1](SWS BSW General)同样适用于 EthTrcv。
|
||
|
||
---
|
||
|
||
## 4 约束与假设
|
||
|
||
### 4.1 限制
|
||
|
||
- 单个 EthTrcv 实例对应一个物理 PHY 收发器
|
||
- 多核支持:4.4.0 起支持多核主机控制器访问同一收发器
|
||
- 100BASE-T1 / 1000BASE-T1 测试模式仅在硬件支持时可用
|
||
|
||
### 4.2 对汽车领域的适用性
|
||
|
||
EthTrcv 适用于所有使用汽车以太网的 ECU。
|
||
|
||
---
|
||
|
||
## 5 与其他模块的依赖关系
|
||
|
||
| 上层 | 说明 |
|
||
|---|---|
|
||
| EthIf | 唯一允许直接调用 EthTrcv API 的上层模块 |
|
||
| EcuM | 初始化 |
|
||
| DEM | 上报生产错误 |
|
||
| DET | 上报开发错误(4.2.2 改名为 DET) |
|
||
| SchM | 调度主函数 |
|
||
|
||
---
|
||
|
||
## 6 需求可追踪性
|
||
|
||
> 摘要标记:本章需求可追踪性表覆盖 `SRS_BSW_*`、`SRS_Eth_*` 等约 30+ 项条目。代表性映射:
|
||
> - `SRS_BSW_00004` → `SWS_EthTrcv_00001`
|
||
> - `SRS_BSW_00159` → `SWS_EthTrcv_00002`
|
||
> - `SRS_BSW_00323` → `SWS_EthTrcv_00009`
|
||
> - 等等。完整映射请参见原文 PDF 第 6 章。
|
||
|
||
---
|
||
|
||
## 7 功能规范
|
||
|
||
### 7.1 以太网 BSW 栈
|
||
|
||
#### 7.1.1 索引方案
|
||
|
||
EthTrcv 使用索引 `EthTrcv_TransceiverIdType`(0..N-1)标识每个收发器。
|
||
|
||
#### 7.1.2 需求
|
||
|
||
- 每个 PHY 收发器必须能独立初始化
|
||
- 必须支持异步模式切换
|
||
- 必须支持 MII 或 SPI 访问
|
||
|
||
#### 7.1.3 配置描述
|
||
|
||
参见第 10 章。
|
||
|
||
#### 7.1.4 唤醒支持(4.2.1 新增)
|
||
|
||
`[SWS_EthTrcv_00100]` ⌈ EthTrcv 应支持以太网唤醒(通过 LAN 唤醒模式)。 ⌋ ()
|
||
|
||
支持的唤醒模式:
|
||
- `ETHTRCV_WUM_DISABLE`:禁用
|
||
- `ETHTRCV_WUM_ENABLE`:启用
|
||
- `ETHTRCV_WUM_CLEAR`:清除
|
||
|
||
#### 7.1.5 电缆诊断处理
|
||
|
||
`[SWS_EthTrcv_00101]` ⌈ EthTrcv 应支持电缆诊断(开路 / 短路检测)。 ⌋ ()
|
||
|
||
### 7.2 错误分类
|
||
|
||
#### 7.2.1 开发错误
|
||
|
||
| 错误码 | 描述 |
|
||
|---|---|
|
||
| `ETHTRCV_E_NO_ERROR` | 无错误 |
|
||
| `ETHTRCV_E_UNINIT` | EthTrcv 未初始化 |
|
||
| `ETHTRCV_E_INV_IDX` | 收发器索引无效 |
|
||
| `ETHTRCV_E_INV_MODE` | 模式无效 |
|
||
| `ETHTRCV_E_INV_POINTER` | 指针参数为 NULL |
|
||
|
||
#### 7.2.2 运行时错误
|
||
|
||
无。
|
||
|
||
#### 7.2.3 瞬态故障
|
||
|
||
无。
|
||
|
||
#### 7.2.4 生产错误
|
||
|
||
| 错误码 | 描述 |
|
||
|---|---|
|
||
| `ETHTRCV_E_ACCESS` | 寄存器访问失败 |
|
||
| `ETHTRCV_E_PHY_ERROR` | PHY 错误 |
|
||
|
||
#### 7.2.5 扩展生产错误
|
||
|
||
| 错误码 | 描述 |
|
||
|---|---|
|
||
| `ETHTRCV_E_CABLE_DIAG_FAILED` | 电缆诊断失败 |
|
||
| `ETHTRCV_E_LINK_LOST` | 链路丢失 |
|
||
|
||
---
|
||
|
||
## 8 API 规范
|
||
|
||
### 8.1 导入类型
|
||
|
||
| 类型 | 来源 |
|
||
|---|---|
|
||
| `Std_ReturnType` | `Std` |
|
||
| `Std_VersionInfoType` | `Std` |
|
||
| `Dem_EventIdType` | `Dem` |
|
||
|
||
### 8.2 类型定义
|
||
|
||
#### 8.2.1 `EthTrcv_ConfigType`
|
||
|
||
```c
|
||
typedef struct {
|
||
uint32 dummy;
|
||
} EthTrcv_ConfigType;
|
||
```
|
||
|
||
#### 8.2.2 `EthTrcv_ModeType`
|
||
|
||
```c
|
||
typedef enum {
|
||
ETHTRCV_MODE_DOWN = 0,
|
||
ETHTRCV_MODE_INIT,
|
||
ETHTRCV_MODE_ACTIVE,
|
||
ETHTRCV_MODE_STANDBY,
|
||
ETHTRCV_MODE_SLEEP,
|
||
ETHTRCV_MODE_RESET,
|
||
ETHTRCV_MODE_LISTEN
|
||
} EthTrcv_ModeType;
|
||
```
|
||
|
||
#### 8.2.3 `EthTrcv_LinkStateType`
|
||
|
||
```c
|
||
typedef enum {
|
||
ETHTRCV_LINK_STATE_DOWN = 0,
|
||
ETHTRCV_LINK_STATE_ACTIVE
|
||
} EthTrcv_LinkStateType;
|
||
```
|
||
|
||
#### 8.2.4 `EthTrcv_StateType`
|
||
|
||
```c
|
||
typedef enum {
|
||
ETHTRCV_STATE_UNINIT = 0,
|
||
ETHTRCV_STATE_INIT
|
||
} EthTrcv_StateType;
|
||
```
|
||
|
||
#### 8.2.5 `EthTrcv_BaudRateType`
|
||
|
||
```c
|
||
typedef enum {
|
||
ETHTRCV_BAUD_RATE_10MBIT = 0,
|
||
ETHTRCV_BAUD_RATE_100MBIT,
|
||
ETHTRCV_BAUD_RATE_1000MBIT,
|
||
ETHTRCV_BAUD_RATE_2500MBIT,
|
||
ETHTRCV_BAUD_RATE_5GBIT,
|
||
ETHTRCV_BAUD_RATE_10GBIT
|
||
} EthTrcv_BaudRateType;
|
||
```
|
||
|
||
#### 8.2.6 `EthTrcv_DuplexModeType`
|
||
|
||
```c
|
||
typedef enum {
|
||
ETHTRCV_DUPLEX_MODE_HALF = 0,
|
||
ETHTRCV_DUPLEX_MODE_FULL
|
||
} EthTrcv_DuplexModeType;
|
||
```
|
||
|
||
#### 8.2.7 `EthTrcv_WakeupModeType`
|
||
|
||
```c
|
||
typedef enum {
|
||
ETHTRCV_WUM_DISABLE = 0,
|
||
ETHTRCV_WUM_ENABLE,
|
||
ETHTRCV_WUM_CLEAR
|
||
} EthTrcv_WakeupModeType;
|
||
```
|
||
|
||
#### 8.2.8 `EthTrcv_WakeupReasonType`
|
||
|
||
```c
|
||
typedef enum {
|
||
ETHTRCV_WUR_NONE = 0,
|
||
ETHTRCV_WUR_GENERAL,
|
||
ETHTRCV_WUR_BUS
|
||
} EthTrcv_WakeupReasonType;
|
||
```
|
||
|
||
#### 8.2.9 `EthTrcv_PhyTestModeType`(4.3.0 新增)
|
||
|
||
```c
|
||
typedef enum {
|
||
ETHTRCV_PHY_TEST_MODE_NONE = 0,
|
||
ETHTRCV_PHY_TEST_MODE_1,
|
||
ETHTRCV_PHY_TEST_MODE_2,
|
||
ETHTRCV_PHY_TEST_MODE_3,
|
||
ETHTRCV_PHY_TEST_MODE_4
|
||
} EthTrcv_PhyTestModeType;
|
||
```
|
||
|
||
#### 8.2.10 `EthTrcv_PhyLoopbackModeType`
|
||
|
||
```c
|
||
typedef enum {
|
||
ETHTRCV_PHY_LOOPBACK_MODE_NONE = 0,
|
||
ETHTRCV_PHY_LOOPBACK_MODE_INTERNAL,
|
||
ETHTRCV_PHY_LOOPBACK_MODE_EXTERNAL
|
||
} EthTrcv_PhyLoopbackModeType;
|
||
```
|
||
|
||
#### 8.2.11 `EthTrcv_PhyTxModeType`
|
||
|
||
```c
|
||
typedef enum {
|
||
ETHTRCV_PHY_TX_MODE_NORMAL = 0,
|
||
ETHTRCV_PHY_TX_MODE_SCRAMBLER_DISABLE
|
||
} EthTrcv_PhyTxModeType;
|
||
```
|
||
|
||
#### 8.2.12 `EthTrcv_CableDiagResultType`
|
||
|
||
```c
|
||
typedef enum {
|
||
ETHTRCV_CABLE_DIAG_OK = 0,
|
||
ETHTRCV_CABLE_DIAG_SHORT,
|
||
ETHTRCV_CABLE_DIAG_OPEN,
|
||
ETHTRCV_CABLE_DIAG_FAIL
|
||
} EthTrcv_CableDiagResultType;
|
||
```
|
||
|
||
### 8.3 函数定义
|
||
|
||
#### 8.3.1 `EthTrcv_Init`
|
||
|
||
```c
|
||
void EthTrcv_Init(const EthTrcv_ConfigType* ConfigPtr);
|
||
```
|
||
|
||
**描述**:初始化所有配置的以太网收发器。
|
||
|
||
**参数**:
|
||
- `ConfigPtr`:指向配置数据的指针。
|
||
|
||
**返回值**:无。
|
||
|
||
#### 8.3.2 `EthTrcv_SetTransceiverMode`
|
||
|
||
```c
|
||
Std_ReturnType EthTrcv_SetTransceiverMode(
|
||
uint8 TrcvIdx,
|
||
EthTrcv_ModeType Mode
|
||
);
|
||
```
|
||
|
||
**描述**:设置收发器模式(异步 API,4.2.1 改)。
|
||
|
||
**参数**:
|
||
- `TrcvIdx`:收发器索引。
|
||
- `Mode`:目标模式。
|
||
|
||
**返回值**:
|
||
- `E_OK`:请求被接受。
|
||
- `E_NOT_OK`:请求被拒绝。
|
||
|
||
#### 8.3.3 `EthTrcv_GetTransceiverMode`
|
||
|
||
```c
|
||
Std_ReturnType EthTrcv_GetTransceiverMode(
|
||
uint8 TrcvIdx,
|
||
EthTrcv_ModeType* ModePtr
|
||
);
|
||
```
|
||
|
||
**描述**:获取当前收发器模式。
|
||
|
||
**参数**:
|
||
- `TrcvIdx`:收发器索引。
|
||
- `ModePtr`:输出参数。
|
||
|
||
**返回值**:
|
||
- `E_OK`:获取成功。
|
||
- `E_NOT_OK`:获取失败。
|
||
|
||
#### 8.3.4 `EthTrcv_SetTransceiverWakeupMode`
|
||
|
||
```c
|
||
Std_ReturnType EthTrcv_SetTransceiverWakeupMode(
|
||
uint8 TrcvIdx,
|
||
EthTrcv_WakeupModeType WakeupMode
|
||
);
|
||
```
|
||
|
||
**描述**:设置唤醒模式。
|
||
|
||
**参数**:
|
||
- `TrcvIdx`:收发器索引。
|
||
- `WakeupMode`:唤醒模式。
|
||
|
||
**返回值**:
|
||
- `E_OK`:设置成功。
|
||
- `E_NOT_OK`:设置失败。
|
||
|
||
#### 8.3.5 `EthTrcv_GetTransceiverWakeupMode`
|
||
|
||
```c
|
||
Std_ReturnType EthTrcv_GetTransceiverWakeupMode(
|
||
uint8 TrcvIdx,
|
||
EthTrcv_WakeupModeType* WakeupModePtr
|
||
);
|
||
```
|
||
|
||
**描述**:获取当前唤醒模式。
|
||
|
||
**参数**:
|
||
- `TrcvIdx`:收发器索引。
|
||
- `WakeupModePtr`:输出参数。
|
||
|
||
**返回值**:
|
||
- `E_OK`:获取成功。
|
||
- `E_NOT_OK`:获取失败。
|
||
|
||
#### 8.3.6 `EthTrcv_CheckWakeup`
|
||
|
||
```c
|
||
Std_ReturnType EthTrcv_CheckWakeup(uint8 TrcvIdx);
|
||
```
|
||
|
||
**描述**:检查唤醒状态(清除唤醒标志)。
|
||
|
||
**参数**:
|
||
- `TrcvIdx`:收发器索引。
|
||
|
||
**返回值**:
|
||
- `E_OK`:检查成功。
|
||
- `E_NOT_OK`:检查失败。
|
||
|
||
#### 8.3.7 `EthTrcv_StartAutoNegotiation`
|
||
|
||
```c
|
||
Std_ReturnType EthTrcv_StartAutoNegotiation(uint8 TrcvIdx);
|
||
```
|
||
|
||
**描述**:启动自动协商。
|
||
|
||
**参数**:
|
||
- `TrcvIdx`:收发器索引。
|
||
|
||
**返回值**:
|
||
- `E_OK`:启动成功。
|
||
- `E_NOT_OK`:启动失败。
|
||
|
||
#### 8.3.8 `EthTrcv_TransceiverLinkStateRequest`(4.4.0 新增)
|
||
|
||
```c
|
||
Std_ReturnType EthTrcv_TransceiverLinkStateRequest(
|
||
uint8 TrcvIdx,
|
||
boolean LinkState
|
||
);
|
||
```
|
||
|
||
**描述**:显式请求链路状态(4.4.0 显式链路控制)。
|
||
|
||
**参数**:
|
||
- `TrcvIdx`:收发器索引。
|
||
- `LinkState`:TRUE 表示请求链路激活。
|
||
|
||
**返回值**:
|
||
- `E_OK`:请求成功。
|
||
- `E_NOT_OK`:请求失败。
|
||
|
||
#### 8.3.9 `EthTrcv_GetLinkState`
|
||
|
||
```c
|
||
Std_ReturnType EthTrcv_GetLinkState(
|
||
uint8 TrcvIdx,
|
||
EthTrcv_LinkStateType* LinkStatePtr
|
||
);
|
||
```
|
||
|
||
**描述**:获取当前链路状态。
|
||
|
||
**参数**:
|
||
- `TrcvIdx`:收发器索引。
|
||
- `LinkStatePtr`:输出参数。
|
||
|
||
**返回值**:
|
||
- `E_OK`:获取成功。
|
||
- `E_NOT_OK`:获取失败。
|
||
|
||
#### 8.3.10 `EthTrcv_GetBaudRate`
|
||
|
||
```c
|
||
Std_ReturnType EthTrcv_GetBaudRate(
|
||
uint8 TrcvIdx,
|
||
EthTrcv_BaudRateType* BaudRatePtr
|
||
);
|
||
```
|
||
|
||
**描述**:获取当前波特率。
|
||
|
||
**参数**:
|
||
- `TrcvIdx`:收发器索引。
|
||
- `BaudRatePtr`:输出参数。
|
||
|
||
**返回值**:
|
||
- `E_OK`:获取成功。
|
||
- `E_NOT_OK`:获取失败。
|
||
|
||
#### 8.3.11 `EthTrcv_GetDuplexMode`
|
||
|
||
```c
|
||
Std_ReturnType EthTrcv_GetDuplexMode(
|
||
uint8 TrcvIdx,
|
||
EthTrcv_DuplexModeType* DuplexModePtr
|
||
);
|
||
```
|
||
|
||
**描述**:获取双工模式。
|
||
|
||
**参数**:
|
||
- `TrcvIdx`:收发器索引。
|
||
- `DuplexModePtr`:输出参数。
|
||
|
||
**返回值**:
|
||
- `E_OK`:获取成功。
|
||
- `E_NOT_OK`:获取失败。
|
||
|
||
#### 8.3.12 `EthTrcv_SetPhyTestMode`(4.3.0 新增)
|
||
|
||
```c
|
||
Std_ReturnType EthTrcv_SetPhyTestMode(
|
||
uint8 TrcvIdx,
|
||
EthTrcv_PhyTestModeType PhyTestMode
|
||
);
|
||
```
|
||
|
||
**描述**:设置 PHY 测试模式(如 100BASE-T1 测试模式)。
|
||
|
||
#### 8.3.13 `EthTrcv_SetPhyLoopbackMode`
|
||
|
||
```c
|
||
Std_ReturnType EthTrcv_SetPhyLoopbackMode(
|
||
uint8 TrcvIdx,
|
||
EthTrcv_PhyLoopbackModeType LoopbackMode
|
||
);
|
||
```
|
||
|
||
**描述**:设置 PHY 回环模式。
|
||
|
||
#### 8.3.14 `EthTrcv_GetPhySignalQuality`
|
||
|
||
```c
|
||
Std_ReturnType EthTrcv_GetPhySignalQuality(
|
||
uint8 TrcvIdx,
|
||
uint16* SignalQualityPtr
|
||
);
|
||
```
|
||
|
||
**描述**:获取 PHY 信号质量(用于诊断)。
|
||
|
||
#### 8.3.15 `EthTrcv_SetPhyTxMode`
|
||
|
||
```c
|
||
Std_ReturnType EthTrcv_SetPhyTxMode(
|
||
uint8 TrcvIdx,
|
||
EthTrcv_PhyTxModeType PhyTxMode
|
||
);
|
||
```
|
||
|
||
**描述**:设置 PHY 发送模式。
|
||
|
||
#### 8.3.16 `EthTrcv_RunCableDiagnostic`
|
||
|
||
```c
|
||
Std_ReturnType EthTrcv_RunCableDiagnostic(uint8 TrcvIdx);
|
||
```
|
||
|
||
**描述**:运行电缆诊断。
|
||
|
||
#### 8.3.17 `EthTrcv_GetCableDiagnosticsResult`
|
||
|
||
```c
|
||
Std_ReturnType EthTrcv_GetCableDiagnosticsResult(
|
||
uint8 TrcvIdx,
|
||
EthTrcv_CableDiagResultType* ResultPtr
|
||
);
|
||
```
|
||
|
||
**描述**:获取电缆诊断结果。
|
||
|
||
#### 8.3.18 `EthTrcv_GetPhyIdentifier`
|
||
|
||
```c
|
||
Std_ReturnType EthTrcv_GetPhyIdentifier(
|
||
uint8 TrcvIdx,
|
||
uint32* PhyIdPtr
|
||
);
|
||
```
|
||
|
||
**描述**:获取 PHY 标识符(OUI + 型号)。
|
||
|
||
#### 8.3.19 `EthTrcv_GetVersionInfo`
|
||
|
||
```c
|
||
void EthTrcv_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr);
|
||
```
|
||
|
||
**描述**:返回 EthTrcv 的版本信息。
|
||
|
||
### 8.4 回调通知
|
||
|
||
#### 8.4.1 `EthTrcv_ReadMiiIndication`
|
||
|
||
```c
|
||
void EthTrcv_ReadMiiIndication(uint8 TrcvIdx, uint8 RegAddr, uint16 RegVal);
|
||
```
|
||
|
||
**描述**:MII 读取完成回调。
|
||
|
||
#### 8.4.2 `EthTrcv_WriteMiiIndication`
|
||
|
||
```c
|
||
void EthTrcv_WriteMiiIndication(uint8 TrcvIdx, uint8 RegAddr);
|
||
```
|
||
|
||
**描述**:MII 写入完成回调。
|
||
|
||
### 8.5 中断服务例程
|
||
|
||
无显式 ISR;EthTrcv 通过 EthIf 接收中断通知。
|
||
|
||
### 8.6 调度函数
|
||
|
||
#### 8.6.1 `EthTrcv_MainFunction`
|
||
|
||
```c
|
||
void EthTrcv_MainFunction(void);
|
||
```
|
||
|
||
**描述**:周期性处理异步操作完成、链路轮询等。
|
||
|
||
**调度**:由 BSW 调度器调用(典型 10ms)。
|
||
|
||
### 8.7 期望的接口
|
||
|
||
#### 8.7.1 强制接口
|
||
|
||
| API | 描述 |
|
||
|---|---|
|
||
| `Det_ReportError` | 上报开发错误 |
|
||
| `Dem_SetEventStatus` | 上报生产错误 |
|
||
|
||
#### 8.7.2 可选接口
|
||
|
||
| API | 描述 |
|
||
|---|---|
|
||
| `Spi_SyncTransmit` / `Spi_GetJobResult` | SPI 同步传输(用于基于 SPI 的 PHY) |
|
||
|
||
#### 8.7.3 可配置接口
|
||
|
||
无。
|
||
|
||
---
|
||
|
||
## 9 时序图
|
||
|
||
> 摘要标记:本章包含约 8+ 个时序图。关键流程:
|
||
> - **图 1:EthTrcv 初始化**:EcuM → `EthTrcv_Init`。
|
||
> - **图 2:模式切换**:`EthTrcv_SetTransceiverMode` → 异步完成。
|
||
> - **图 3:链路状态变化**:PHY 链路变化 → 中断 → `EthIf_TrcvLinkStateChgIndication`。
|
||
> - **图 4:唤醒处理**:PHY 唤醒 → `EthTrcv_CheckWakeup` → `EthIf_SetTransceiverWakeupMode`。
|
||
> - **图 5:自动协商**。
|
||
> - **图 6:电缆诊断**。
|
||
> - **图 7:100BASE-T1 测试模式(4.3.0 新增)**。
|
||
> - **图 8:显式链路控制(4.4.0 新增)**。
|
||
|
||
---
|
||
|
||
## 10 配置规范
|
||
|
||
### 10.1 容器与配置参数
|
||
|
||
#### 10.1.1 `EthTrcv`
|
||
|
||
顶层容器,唯一实例。
|
||
|
||
#### 10.1.2 `EthTrcvConfigSet`
|
||
|
||
配置集容器(用于 post-build 可配置性)。
|
||
|
||
#### 10.1.3 `EthTrcvConfig`
|
||
|
||
| 参数 | 类型 | 描述 |
|
||
|---|---|---|
|
||
| `EthTrcvIdx` | Integer | 收发器索引 |
|
||
| `EthTrcvCtrlRef` | Reference | 关联的 EthIf 控制器 |
|
||
| `EthTrcvInitAccess` | Reference | 初始化访问配置(4.3.0) |
|
||
| `EthTrcvAccess` | Reference | 运行时访问配置(4.3.0 新增 Switch / Mii 选择) |
|
||
| `EthTrcvBaudRate` | Enum | 配置波特率 |
|
||
| `EthTrcvDuplexMode` | Enum | 配置双工模式 |
|
||
| `EthTrcvWakeupSupported` | Boolean | 支持唤醒 |
|
||
| `EthTrcvPhyTestModeSupported` | Boolean | 支持 PHY 测试模式(4.3.0) |
|
||
| `EthTrcvCableDiagSupported` | Boolean | 支持电缆诊断 |
|
||
| `EthTrcvSignalQualitySupported` | Boolean | 支持信号质量 |
|
||
| `EthTrcvLoopbackModeSupported` | Boolean | 支持回环模式 |
|
||
|
||
#### 10.1.4 `EthTrcvDemEventParameterRefs`
|
||
|
||
引用 DEM 事件。
|
||
|
||
#### 10.1.5 `EthTrcvMgmtInterface`(4.3.0 新增)
|
||
|
||
| 参数 | 类型 | 描述 |
|
||
|---|---|---|
|
||
| `EthTrcvMgmtInterfaceType` | Enum | `SPI` / `MII` / `SWT` |
|
||
| `EthTrcvSpiSequence` | Reference | SPI 序列引用 |
|
||
| `EthTrcvSpiCsPort` | Reference | SPI 片选端口 |
|
||
| `EthTrcvSwtRef` | Reference | Switch 引用(4.3.0 新增) |
|
||
|
||
#### 10.1.6 `EthTrcvMiiInterface`
|
||
|
||
| 参数 | 类型 | 描述 |
|
||
|---|---|---|
|
||
| `EthTrcvMiiPort` | Reference | MII 端口引用 |
|
||
| `EthTrcvMiiAddress` | Integer | PHY MII 地址 |
|
||
|
||
### 10.2 发布信息
|
||
|
||
无附加发布参数。
|
||
|
||
---
|
||
|
||
## 翻译说明
|
||
|
||
- 本文档基于 **AUTOSAR CP Release 4.4.0** 翻译,对应原文 `AUTOSAR_SWS_EthernetTransceiverDriver.pdf`(63 页)。
|
||
- 关键翻译策略:
|
||
- **完整翻译**:封面、文档标识、变更历史、目录、章节 1-10 的所有正文、API 声明、错误分类、配置参数。
|
||
- **保留英文**:所有 API 名、类型名、模式名、配置参数标识符、需求 ID、IEEE 802.3 标准引用。
|
||
- **摘要标记**:第 6 章需求可追踪性表涵盖 30+ 项需求;第 9 章时序图列出 8 个关键图。完整内容请参见原文 PDF。
|
||
- 内容置信度:高。所有 API 签名、PHY 测试模式、配置容器均已涵盖。
|