ZHCAAA1A December   2017  – May 2021 AM3351 , AM3352 , AM3354 , AM3356 , AM3357 , AM3358 , AM3358-EP , AM3359 , AM4372 , AM4376 , AM4377 , AM4378 , AM4379 , AM5706 , AM5708 , AM5716 , AM5718 , AM5718-HIREL , AM5726 , AM5728 , AM5729 , AM5746 , AM5748 , AM5749 , DP83822H , DP83822HF , DP83822I , DP83822IF , DP83825I

 

  1.   商标
  2. 1PHY 选择和连接
  3. 2PHY 复位和地址
  4. 3PHY 速度、双工等
  5. 4增强型链路检测
  6. 5在 Processor SDK 中添加 PHY
  7. 6结论
  8. 7参考文献
  9. 8修订历史记录

PHY 复位和地址

在上电或硬件复位时进行 PHY 自举配置,将器件置于所需的工作模式下。对 DP83822 PHY 中的 RESET 引脚施加一个持续时间至少为 10µs (T1) 的低脉冲,以实现硬件复位。此脉冲将复位器件,以便将所有寄存器都重新初始化为默认值,并将硬件配置值关联到器件中(请参阅 图 2-1)。

GUID-3F86579B-ADCA-4445-8970-9F06E051CFFC-low.gif图 2-1 PHY 复位信号

自举引脚在解除置位后具有替代功能,因此,为了最大限度地减少自举引脚信号采样期间产生的干扰,PRU-ICSS MII 复用应发生在 AMIC110 ICE 上释放 PHY RESET 之后。如果未配置这些自举引脚,那么一旦释放复位,它们就会变成 GPIO 和高阻态。TI EtherCAT 中的硬件复位序列实现如下所示:


Board_init(BOARD_INIT_MODULE_CLOCK);
Board_phyReset(2);
/* 在 PHY 复位后复用 PRU MII,以防 PRU 驱动
* 引脚上的信号并干扰 PHY 自举配置
*/
#ifdef ENABLE_UART_PRINT
Board_init(BOARD_INIT_UART_STDIO|BOARD_INIT_ICSS_PINMUX);
#else
Board_init(BOARD_INIT_ICSS_PINMUX);

Board_init( ) API 来自 TI Processor SDK 电路板库。PRU-ICSS EtherCAT 是以 TI 的 Processor SDK 为基础构建的一款统一软件平台,适用于 TI 嵌入式处理器,其设置简单,提供开箱即用的基准测试和演示。TI PRU-ICSS 工业软件包支持 EtherCAT、PROFINET、PROFIBUS、EtherNet/IP、HSR/PRP 等。

Board_phyReset() 的实现方式如下:


/* 驱动 Phy1(和 Phy2)复位到高电平;两个 PHY 复位都来自一个 GPIO */
    GPIOModuleEnable(PhyResetInfo[1].baseAddr);
    GPIODirModeSet(PhyResetInfo[1].baseAddr, PhyResetInfo[1].pin, GPIO_DIR_OUTPUT);
    GPIOPinWrite(PhyResetInfo[1].baseAddr, PhyResetInfo[1].pin, GPIO_PIN_HIGH);
    delay_us(20);
    GPIOPinWrite(PhyResetInfo[1].baseAddr, PhyResetInfo[1].pin, GPIO_PIN_LOW);
/* T1 - RESET 脉冲宽度,最短时间为 10us,请参阅 DP83822 数据表 */
    delay_us(20);
    GPIOPinWrite(PhyResetInfo[1].baseAddr, PhyResetInfo[1].pin, GPIO_PIN_HIGH);

其中 PhyResetInfo[1] 配置了用于复位的 GPIO 引脚。


/* phy1 复位 - 驱动高电平 */
    PhyResetInfo[1].pin = 13;
    PhyResetInfo[1].baseAddr = SOC_GPIO_1_REGS;
注:

也可以通过 0x001F PHY 复位控制寄存器 (PHYRCR) 来复位 PHY,具体请参阅 表 2-1

表 2-1 PHY 复位控制寄存器 (PHYRCR)
字段类型复位说明
15软件复位RW。SC0软件复位:
  • 1 = 复位 PHY
  • 0 = 正常运行
此位可自行清除,具有与硬件复位引脚相同的效果。
14数字重启RW、SC0数字重启:
  • 1 = 复位 PHY
  • 0 = 正常运行
此位可自行清除,并复位除寄存器以外的所有 PHY 数字电路。
13:0保留RW0保留

在 DP83822 器件中,PHY 地址引脚 PHY_AD[4:1] 与 RX_D[3:0] 进行多路复用并被下拉。PHY_AD[0](地址的 LSB)与引脚 29 上的 COL 进行多路复用并被上拉。如果不存在外部上拉或下拉,则默认 PHY 地址为 0x01。DP83822 器件可通过自举配置功能,配置为 32 个可能的 PHY 地址中的任一个。该 PHY 地址在器件上电或硬件复位之时锁存到器件中,并在软件中进行硬编码。


#define AM335X_ICSS1_PORT1_PHY_ADDR 1
#ifndef iceAMIC11x
#define AM335X_ICSS1_PORT2_PHY_ADDR 3
#else
#define AM335X_ICSS1_PORT2_PHY_ADDR 13
#endif

PHY 地址以如下定义的偏移量写入共享数据 RAM 中,以通知 PRU 固件。


#define ESC_ADDR_TI_PORT0_PHYADDR   0xE08
#define ESC_ADDR_TI_PORT1_PHYADDR   0xE09
    //通过供应商特定的寄存器向固件指示 PHY 地址
bsp_write_byte(pruIcssHandle, pmdio_params->addr0, ESC_ADDR_TI_PORT0_PHYADDR);
bsp_write_byte(pruIcssHandle, pmdio_params->addr1, ESC_ADDR_TI_PORT1_PHYADDR);

对于 AMIC110,共享数据 RAM 地址为 0x4A31_0000。

当 MDIO 无法使用主机 API(例如 Board_getPhyIdentifyStat())访问 PHY_ID1_REG(寄存器 0x02)时,这通常意味着 PHY 未正确复位或 PHY 地址未正确配置。由于使用不同的 GPIO,TI 和客户电路板之间的复位方法可能有所不同。