读操作

MDIO管脚复用配置

MDIO管脚与GPIO管脚复用,使用MDIO管脚时,需要配置复用关系:配置寄存器IOMUX(基地址为0xA0140000,偏移地址为0x68/0x6C、0x70/0x74)为0,配置管脚功能为MDC0/MDIO0,MDC1/MDIO1。

Clause22 PHY寄存器读操作

通过配置相关寄存器可实现对PHY外部寄存器的读访问,具体配置说明如下。

  1. 配置寄存器MDIO_COMMAND_REG[Mdio_Prtad](偏移地址为0x0000,Bit[9:5]),配置相应的外部PHY地址。
  2. 配置寄存器MDIO_COMMAND_REG[Mdio_Devad](偏移地址为0x0000,Bit[4:0]),配置相应的寄存器地址。
  3. 配置寄存器MDIO_COMMAND_REG[Mdio_St](偏移地址为0x0000,Bit[13:12])为0x01,选择接口模式为GE模式。
  4. 配置寄存器MDIO_COMMAND_REG[Mdio_Op](偏移地址为0x0000,Bit[11:10])为0x10,表示读操作。
  5. 配置寄存器MDIO_COMMAND_REG[Mdio_Start](偏移地址为0x0000,Bit[14])为0x1,启动读操作。
  6. 查询寄存器MDIO_COMMAND_REG[Mdio_Start](偏移地址为0x0000,Bit[14])是否为0,如果为0表示读操作正常,读完成。
  7. 查询寄存器MDIO_RDATA_REG[Mdio_Rdata] (偏移地址为0x000C,Bit[15:0]),MDIO读访问的读数据。

上述步骤可以缩减为3个步骤,步骤1到步骤5都是对同一个寄存器进行配置的,可以一次配置完成。

Clause45 PHY寄存器读数据操作

Clause45的MDIO读数据操作分为两个MDIO接口操作,一个是写地址操作,一个是读数据操作。通过配置相关寄存器可实现对PHY内部寄存器的读数据操作,具体配置说明如下。

  1. 配置寄存器MDIO_ADDR_REG[Mdio_Address](偏移地址为0x0004,Bit[15:0]),配置需要读取的PHY中DEV中寄存器的地址。
  2. 配置寄存器MDIO_COMMAND_REG[Mdio_Prtad](偏移地址为0x0000,Bit[9:5]),配置相应的外部PHY地址。
  3. 配置寄存器MDIO_COMMAND_REG[Mdio_Devad](偏移地址为0x0000,Bit[4:0]),配置相应的设备地址。
  4. 配置寄存器MDIO_COMMAND_REG[Mdio_St](偏移地址为0x0000,Bit[13:12])为0x00,选择接口模式为XGE模式。
  5. 配置寄存器MDIO_COMMAND_REG[Mdio_Op](偏移地址为0x0000,Bit[11:10])为0x00,表示写地址操作。
  6. 配置寄存器MDIO_COMMAND_REG[Mdio_Start](偏移地址为0x0000,Bit[14])为0x1,启动写地址操作。
  7. 查询寄存器MDIO_COMMAND_REG[Mdio_Start] (偏移地址为0x0000,Bit[14])是否为0,如果为0表示写地址操作正常完成,进入下个步骤,不是0则在步骤7继续查询。
  8. 配置寄存器MDIO_COMMAND_REG[Mdio_Prtad](偏移地址为0x0000,Bit[9:5]),配置相应的外部PHY地址。
  9. 配置寄存器MDIO_COMMAND_REG[Mdio_Devad](偏移地址为0x0000,Bit[4:0]),配置相应的设备地址。
  10. 配置寄存器MDIO_COMMAND_REG[Mdio_St](偏移地址为0x0000,Bit[13:12])为0x00,选择接口模式为XGE模式。
  11. 配置寄存器MDIO_COMMAND_REG[Mdio_Op](偏移地址为0x0000,Bit[11:10])为0x11,表示读操作。
  12. 配置寄存器MDIO_COMMAND_REG[Mdio_Start](偏移地址为0x0000,Bit[14])为0x1,启动读操作。
  13. 查询寄存器MDIO_COMMAND_REG[Mdio_Start](偏移地址为0x0000,Bit[14])是否为0,如果为0表示读操作正常,读完成。
  14. 查询寄存器MDIO_RDATA_REG[Mdio_Rdata] (偏移地址为0x000C,Bit[15:0]),MDIO读访问的读数据。

上述步骤可以缩减为6个步骤,步骤2到步骤6都是对同一个寄存器进行配置的,可以一次配置完成。步骤8到步骤12都是对同一个寄存器进行配置的,可以一次配置完成。