目录
一、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.5MHzMDIO:双向的数据信号线Clause22 和 Clause45是两种不同格式是的 SMI数据协议,其中Clause22是在IEEE802.3里面定义的,随着以太网的发展,为了满足10G以太网的需求扩展,在802.3ae规范标准中提出了Clause45。
备注:TC3xx支持Clause22 和 Clause45两种格式,但是在MCAL接口中不支持Clause45,因为该部分没有在AUTOSAR标准中定义。
TC3xx的读写接口如下:
Eth_17_GEthMac_WriteMiiEth_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 PortETH_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();