AUTOSAR ETH模块(3)——接口功能分析

目录

前言

数据发送流程

接口分析

Eth_Init

函数原型

规范说明

Eth_SetControllerMode

函数原型

规范说明

Eth_GetControllerMode

函数原型

规范说明

Eth_GetPhysAddr

函数原型

规范说明

Eth_SetPhysAddr

函数原型

规范说明

Eth_UpdatePhysAddrFilter

函数原型

规范说明

Eth_WriteMii

函数原型

规范说明

Eth_ReadMii

函数原型

规范说明

Eth_ProvideTxBuffer

函数原型

规范说明

Eth_Transmit

函数原型

规范说明

Eth_Receive

函数原型

规范说明

Eth_TxConfirmation

函数原型

规范说明


前言

        本文将按照我的理解,对以太网的数据发送流程进梳理,以求更容易理解整个模块、

        先附上规范链接,建议组合学习:

https://www.autosar.org/fileadmin/standards/R18-10_R4.4.0_R1.5.0/CP/AUTOSAR_SWS_EthernetDriver.pdf

        在研究接口的作用和类型之前,了解 ETH 的通信流程可以帮助我们理解接口的功能及其实现的操作。本章着重介绍与数据发送功能息息相关的接口。

数据发送流程

      简单来讲,首先在完成 ETH 模块初始化完成之后,将 以太网控制器 和 PHY芯片 的模式设置为发送状态,然后将要发送的数据填入缓冲区,然后发送出去,最后调用回调函数来通知数据是否发送成功。 

接口分析

Eth_Init

函数原型

void Eth_Init( 
    const Eth_ConfigType* CfgPtr 
) 
参数类型 参数名称 方向 说明
const Eth_ConfigType* CfgPtr 输入 指向包含所有初始化内容的结构体指针

返回值:无

        顾名思义,该接口函数实现的功能就是以太网的初始化。

        Eth_ConfigType是一个结构体,存储着需要初始化的内容。由于包含指向例如 控制器索引、PHY相关配置 等的指针,因此后续所有函数只有再调用该接口函数之后才能正常使用。所以该接口的入参为一个不可修改的结构体指针,并通过指针所指向的数据来实现以太网的初始化。

规范说明

        上图为该接口的相关规范,以及对应翻译。大概主要意思是 介绍该接口对以太网控制器的操作、程序运行出现问题时产生的错误类型 和 该接口必须在初始化时执行 三点。

        先说对控制器的操作,翻译过来的内容如下几点:

        1. 禁用所有控制器

        2. 清除等待的以太网中断

        3. 配置所有控制器参数(如中断、帧长、过滤器等)

        4. 配置所有发送/接收资源(例如缓冲区初始化)

        5. 删除所有待处理的发送和接收请求

        总结来说,就是清除所有待执行的任务和缓冲区,然后配置参数并关闭控制器。

        下表是常见的开发错误,当我们开启 开发错误检测(Det)功能后,如果程序执行出现问题,一般会抛出以下几种错误,出现这些错误的原因也就这几种,后面再出现类似内容的话就不多赘述了。

错误类型

错误码

Value

Invalid controller index

(无效的控制器索引)

ETH_E_INV_CTRL_IDX

0x01

Eth module or controller was not initialized

(模块或控制器未初始化)

ETH_E_UNINIT

0x02

Invalid pointer in

parameter list

(参数列表中的指针无效)

ETH_E_PARAM_POINTER

0x03

Invalid parameter

(无效的参数)

ETH_E_INV_PARAM

0x04

Invalid mode

(无效的模式)

ETH_E_INV_MODE

0x05

Eth_SetControllerMode

函数原型

Std_ReturnType Eth_SetControllerMode( 
    uint8 CtrlIdx, 
    Eth_ModeType CtrlMode 
)
参数类型 参数名称 方向 说明
uint8 CtrlIdx 输入 控制器索引
Eth_ModeType CtrlMode 输入

枚举类型,代表控制器的模式:ETH_MODE_DOWN        0x00        禁用控制器

ETH_MODE_ACTIVE       0x01        启用控制器

返回值:Std_ReturnType(enum)

E_OK:                  模式设置成功

E_NOT_OK:        控制器模式修改失败

        该接口实现对控制器模式的切换。根据 CtrlIdx 确定要操作的控制器,CtrlMode 为要设置的模式,根据这些参数来对控制器进行操作。返回值为枚举类型,当模式设

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pQAQqa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值