【TC3xx】GETH

目录

一、RGMII

二、SMI接口

三、TC3xx MCAL

3.1 MCU

3.2 Port

3.3 DMA

3.4 中断配置

3.5 ETH

3.6 集成


一、RGMII

        TC3xx支持MII/RMII/RGMII三种以太网数据通信接口。其中RGMII经常用于MAC和MAC之间,或MAC与PHY之间的通信,RGMII的带宽可以是10Mbps、100Mbps、1000Mbps。

    • 当RGMII设置为10Mbps带宽是,TXC和RXC的时钟为2.5MHz。
    • 当RGMII设置为100Mbps带宽是,TXC和RXC的时钟为25MHz。
    • 当RGMII设置为1000Mbps带宽是,TXC和RXC的时钟为125MHz。

        备注:TC3XX中使用模式RGMII的GREFCLK并不是标准RGMII的标准接口,但是在TC3XX中使用RGMII,就必须要用到GREFCLK这个引脚,并且需要外部输入125MHz时钟。外部时钟可以来源PHY或Switch的时钟输出,也可以是独立晶振的时钟。(GREFCLK的125MHz时钟输入异常,将导致DMA软件不能软件服务,GETH初始化失败)

二、SMI接口

        SMI接口由MDC/MDIO两线构成,主要用于对PHY的管理,通过该接口可以实现对PHY内部寄存器的读写和控制。

    • MDC:时钟信号线,最大可设置为2.5MHz
    • MDIO:双向的数据信号线

        Clause22 和 Clause45是两种不同格式是的 SMI数据协议,其中Clause22是在IEEE802.3里面定义的,随着以太网的发展,为了满足10G以太网的需求扩展,在802.3ae规范标准中提出了Clause45。

        备注:TC3xx支持Clause22 和 Clause45两种格式,但是在MCAL接口中不支持Clause45,因为该部分没有在AUTOSAR标准中定义。

TC3xx的读写接口如下:

  • Eth_17_GEthMac_WriteMii
  • Eth_17_GEthMac_ReadMii

三、TC3xx MCAL

3.1 MCU

        以太网驱动程序依赖于MCU驱动程序来生成时钟fSRI、fSPB和fGETH。fGETH为千兆以太网内核定义了应用程序时钟频率。fGETH独立于fSPB,并允许千兆以太网以恒定的波特率(频率)运行。要配置fSRI、fSPB和fGETH,请参考MCU驱动程序配置中的McuSRI频率、McuSPB频率和McuGEETH频率参数。在Tresos中配置MCU驱动程序时,必须考虑以下事项:

  • 在以太网控制器中,由于需要同时从FIFO存储器进行读写传输,应用时钟频率(fGETH)应使存储器的数据传输带宽(fSRI)的带宽必须至少是应用时钟频率(fGETH)的两倍。即,fSRI必须大于或等于2* fGETH。

3.2 Port

ETH_TXD[3:0]

8位并行的发送数据线,在ETH_TXEN为高电平,ETH_TXER为低电平时有效。(4位数据有效)

MAC --> PHY

ETH_TXC

发送参考时钟,ETH_TXC由PHY侧提供

MAC --> PHY

ETH_TXEN

发送数据有效信号,高电平有效

MAC --> PHY

ETH_GETH_CLK

RGMII125MHz参考时钟

外部时钟提供

ETH_RXD[3:0]

8位并行的接收数据线,在ETH_RXDV为高电平,ETH_RXER为低电平时有效。(4位数据有效)

PHY --> MAC

ETH_RXC

接收数据参考时钟,ETH_RXC由PHY侧提供。

PHY --> MAC

ETH_RXDV

接收数据有效信号,高电平有效

PHY --> MAC

ETH_RXER

接受数据错误信号,高电平有效

PHY --> MAC

MDIO

SMI数据线

双向

MDC

SMI时钟线

MAC --> PHY

        PORT驱动程序配置整个微控制器的端口引脚。用户必须通过port配置配置以太网驱动程序使用的端口引脚:

  • 配置在MII/RMII/ RGMII和MDIO接口的以太网驱动程序中使用的所有PORT引脚。也就是说,诸如端口方向(输入或输出)、端口初始模式(输入脚为GPIO或输出脚对应的ALT选项)等参数。
  • 以太网驱动器用于MII/RMII/RGMII接口的所有输出和输入引脚,参数PortPinOutputPadDriveStrength值配置为PORT_PIN_RGMII_DRIVER。
  • 对于以太网驱动程序使用的所有输出引脚,应选择端口控制选择为ENABLE.。

3.3 DMA

        以太网控制器在硬件上有它自己的DMA,并且以太网驱动程序实现了执行此DMA的必要代码。因此,以太网驱动程序不使用TC3xx设备中可用的任何MCAL DMA服务。

3.4 中断配置

        如使用中断模式,需要给ETH配置一个接收中断与发送中断,如下配置相应中断响应优先级。

3.5 ETH

(1)以太网速度模式设置

(2)管脚选择

(3)硬件和校验配置,保持默认即可

(4)MAC信息配置

3.6 集成

/* MCU Initialization */
Mcu_Init(&Mcu_Config);
Mcu_InitClock(0U);
while(Mcu_GetPllStatus() == MCU_PLL_LOCKED);
Mcu_DistributePllClock();
/* Port Initialization */
Port_Init(&Port_Config);
/* Ethernet controller Initialization */ 
Eth_17_GEthMac_Init(&Eth_Config);

/*中断初始化与使能*/
IrqEthernet_Init();
SRC_GETH_GETH0_SR2.B.SRE = 1;
SRC_GETH_GETH0_SR6.B.SRE = 1;

/*PHY初始化*/
Phy_Init();

/*控制器模式初始化*/
/*如果使用RGMII模式需要外部提供GETHCLK 125Mhz,在MAC模式设置前配置好时钟输入*/
RetValue_ETH = Eth_17_GEthMac_SetControllerMode(0u, ETH_MODE_ACTIVE);

/*数据发送*/
Eth_17_GEthMac_ProvideTxBuffer(0, BufIdxPtr, BufPtr, LenBytePtr);
Eth_17_GEthMac_Transmit(0, BufIdx,FrameType, TxConfirmation, LenByte, PhysAddrPtr);


/*如使用轮询模式需要调用一下函数*/
Eth_17_GEthMac_TxConfirmation(0);
Eth_17_GEthMac_Receive(0, RxStatusPtr);
/*根据MCAL配置调用主函数*/
Eth_17_GEthMac_MainFunction();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/244530.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue2-安装elementUI时警告

警告内容&#xff1a;npm WARN deprecated core-js2.6.12: core-js<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up …

【通俗易懂】基于fabric8io操作k8s集群实战(pod、deployment、service、volume)

目录 前言一、基于fabric8io操作pod1.1 yaml创建pod1.2 fabric8io创建pod案例 二、基于fabric8io创建Service&#xff08;含Deployment&#xff09;2.1 yaml创建Service和Deployment2.2 fabric8io创建service案例 三、基于fabric8io操作Volume3.1 yaml配置挂载存储卷3.2 基于fa…

JAVA:注册表窗口的实现

目录 题目要求&#xff1a; 思路大意&#xff1a; 窗体的实现&#xff1a; 窗口A&#xff1a; 窗口B&#xff1a; 窗体之间的构思&#xff1a; 关键代码的实现&#xff1a; 窗口A&#xff1a; 封装列表&#xff1a; 窗口B&#xff1a; 题目要求&#xff1a; 使用…

国产数据库适配-南大通用(Gbase)问题整理

Gbase 函数 [GBase 8s 教程]GBase 8s 常用函数、表达式_gbase函数-CSDN博客 Gbase 8s hibernate方言包下载&#xff1a; Index of /dl/hibernate select * from sysmaster:sysdbslocale 导出数据 su - gbasedbt export DB_LOCALEzh_CN.57372 export CLIENT_LOCALEzh_cn…

复制粘贴——QT实现原理

复制粘贴——QT实现原理 QT 剪贴板相关类 QClipboard 对外通用的剪贴板类&#xff0c;一般通过QGuiApplication::clipboard() 来获取对应的剪贴板实例。 // qtbase/src/gui/kernel/qclipboard.h class Q_GUI_EXPORT QClipboard : public QObject {Q_OBJECT private:explici…

如何制作一份吸引人的家具展示册

对于家具销售商来说&#xff0c;一份吸引人的家具展示册是至关重要的。它不仅可以帮助销售商展示产品&#xff0c;还可以吸引潜在客户的注意力&#xff0c;并激发他们的购买欲望。 那现在就有人问我&#xff0c;新手该怎么办&#xff1f;不会制作&#xff1f;其实这个问题早就…

玩转大数据17:数据采集与实时流处理的架构设计

引言 随着大数据技术的不断发展&#xff0c;数据采集与实时流处理成为了许多企业和组织的核心需求。本文将介绍一种数据采集与实时流处理的架构设计&#xff0c;包括数据采集、实时流处理、数据存储和数据分析等方面。 一、数据采集 数据采集是整个架构的基础&#xff0c;它…

用栈解决迷宫问题

思想 使用栈来解决迷宫问题的思想是通过深度优先搜索算法来探索迷宫中的路径。栈的特点是后进先出&#xff0c;这正好符合深度优先搜索的思想&#xff0c;即先探索一个方向直到无法继续为止&#xff0c;然后回溯到上一个节点&#xff0c;再探索其他方向。 具体来说&#xff0…

ubuntu20.04里面安装目标检测数据标注软件labelImg的详细过程

1.在github克隆仓库到本地 地址&#xff1a;https://github.com/Ruolingdeng/labelImg.git 或者百度网盘下载 链接&#xff1a;https://pan.baidu.com/s/1p-478j5WOTN0TKmv3qh-YQ?pwdl8bj 提取码&#xff1a;l8bj 2、进入到labelimg的文件夹&#xff0c;安装pyqt相关依赖包 …

C# 实现图片的压缩和改变大小png、jpg和gif

环境 .net6 Magick.NET-Q16-AnyCPU 13.5 Magick.NET源码 代码 using ImageMagick;namespace ImageCompress {internal class Program{static void Main(string[] args){string inputPath "imgloading.gif"; // 输入的GIF文件路径 string outputPath "im…

vue2+datav可视化数据大屏(3)

接上一节所说&#xff0c;当我们将接口封装完了后&#xff0c;我们需要给大屏进行内容填充啦 1,新建组件 &#x1f4d3; 我们在ser-views文件夹下新建9个vue组件&#xff0c;如下图所示&#xff0c;我给编号为1到9 &#x1f4d3;在组件里写入内容我是第一块...一次类推&#x…

小机器人,电子锁,牙刷,表类开关,磁阀开关等一些安防直流驱动的选型介绍分析 5V,大电流,小封装

安防监控是一门被人们日益重视的新兴行业&#xff0c;就目前发展来看&#xff0c;应用普及程度越来越广&#xff0c;科技含量也越来越高&#xff0c;几乎所有高新科技都可促进其发展&#xff0c;尤其是信息时代的来临&#xff0c;更为该行业的发展提供契机。其中安防领域最为典…

【RTOS学习】FreeRTOS中的链表 | 堆的管理

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《RTOS学习》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 目录 &#x1f969;FreeRTOS中的链表&#x1f95e;初始化&#x1f95e;尾部插入&#x1f95e;按顺…

JS对象笔记

对象声明 对象也只是一种数据类型/字面值。写对象这个字面值有两种写法&#xff0c;一种是普通的对象&#xff0c;这种对象用new 构造函数&#xff08;&#xff09;&#xff0c;另一种是JS内特有的json对象。这个对象是直接{}就代表对象。且也是在堆内。 对象的构成 无论是上…

Ransac 算法的探索和应用

Ransac 算法python 应用和实现 Ransac 算法是一种常用的图像匹配算法&#xff0c;在参数估计领域也经常被使用到。针对估计各种曲线的鲁棒模型参数&#xff0c;效果显著。这里对ransac算法进行某些探索。 python program: import numpy as np import matplotlib.pyplot as p…

Profibus、Profinet、Ethernet有什么区别?

PROFINET 是一种新的以太网通讯系统&#xff0c;是由西门子公司和 Profibus 用户协会开发。 PROFINET 具有多制造商产品之间的通讯能力&#xff0c;自动化和工程模式&#xff0c;并针对分布式智能自动化系统进行了优化。其应用结果能够大大节省配置和调试费用。 PROFINET 系统集…

_pickle.PicklingError: Can‘t pickle : import of module failed

有问题 没问题的 python - pickle cant import a module that exists? - Stack Overflow

华媒舍:怎样利用旅游业发展媒体套餐宣传推广分析7个经典案例

1.分析经典案例在旅游业发展中&#xff0c;依靠媒体套餐开展宣传推广成为了一种常见的方法。下面将详细介绍7个经典案例&#xff0c;从这当中我们可以得出一些宝贵经验。 案例一&#xff1a;目标市场定位成功宣传推广一定要明确市场定位&#xff0c;针对不同的受众群体制定合理…

【FPGA/verilog -入门学习12】Verilog可配置的PWM设计,参数传递的3种方式

需求&#xff1a; 基于任务&#xff08;task&#xff09;的PWM设计仿真验证 需求分析&#xff1a; 1,需求实现可配置PWM输出&#xff08;频率&#xff0c;占空比&#xff09; 2,输入&#xff0c;输出端口 input i_clk, //clk 50Mhz input i_rst_n, input i_en, output…

设计模式(三)-结构型模式(1)-适配器模式

一、为何需要适配器模式&#xff08;Adapter&#xff09;? 在软件设计中&#xff0c;某个模块里有很多公用的功能接口&#xff0c;其中有些公用接口需要用到不同的类当中时&#xff0c;会出现接口不兼容的问题。因为这些不同的类对这个相同任务的接口&#xff0c;都有各自代码…