写操作

MDIO管脚复用配置

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

Clause22 PHY寄存器写操作

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

  1. 配置寄存器MDIO_WDATA_REG[Mdio_Wdata](偏移地址为0x0008,Bit[15:0]),配置需要写入PHY寄存器的数值。
  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])为0x01,选择接口模式为GE模式。
  5. 配置寄存器MDIO_COMMAND_REG[Mdio_Op](偏移地址为0x0000,Bit[11:10])为0x01,表示写操作。
  6. 配置寄存器MDIO_COMMAND_REG[Mdio_Start](偏移地址为0x0000,Bit[14])为0x1,启动写操作。
  7. 查询寄存器MDIO_STA_REG[Mdio_Start] (偏移地址为0x0000,Bit[14])是否为0,如果为0表示写操作正常,读完成。

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

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])为0x01,表示写地址操作。
  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_WDATA_REG[Mdio_Wdata](偏移地址为0x0008,Bit[15:0]),配置需要写入PHY寄存器的数值。
  9. 配置寄存器MDIO_COMMAND_REG[Mdio_Prtad](偏移地址为0x0000,Bit[9:5]),配置相应的外部PHY地址。
  10. 配置寄存器MDIO_COMMAND_REG[Mdio_Devad](偏移地址为0x0000,Bit[4:0]),配置相应的寄存器地址。
  11. 配置寄存器MDIO_COMMAND_REG[Mdio_St](偏移地址为0x0000,Bit[13:12])为0x00,选择接口模式为XGE模式。
  12. 配置寄存器MDIO_COMMAND_REG[Mdio_Op](偏移地址为0x0000,Bit[11:10])为0x01,表示写操作。
  13. 配置寄存器MDIO_COMMAND_REG[Mdio_Start](偏移地址为0x0000,Bit[14])为0x1,启动写操作。
  14. 查询寄存器MDIO_STA_REG[Mdio_Sta](偏移地址为0x0010,Bit[0])是否为0,如果为0表示写操作正常,读完成。

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