【TC3xx】GETH

2023-12-14 08:34:00

目录

一、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();

文章来源:https://blog.csdn.net/qq_42357877/article/details/134958373
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。