请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:DP83867IR 主题中讨论的其他器件:K2GICE
工具/软件:Code Composer Studio
您好~
我将 k2gICE 板与 ccsv7搭配使用。
按下重置按钮时、RJ45端口上的 LED 不会闪烁。
我是否需要额外的处理来初始化 DP83867 Phy 芯片?
CCS 无法使用提供的 GEL 文件中的脚本读取寄存器值。
#define MDIO_CTL *(无符号整型*)(0x4200F00 + 0x04)
#define MDIO_PHY_REG *(无符号整型*)(0x4200F00 + 0x80) #define PADCONFIG98 *(无符号整型*)(CHIP_LEVEL_REG + 0x1188)
#define PADCONFIG99 *(unsigned int*)(chip_level_REG + 0x118C) MDIO_Init() { MDIO_CTL = 0x411400ff; GEL_TextOut ("MDIO 已启用\n"); ///MDIO_CLK_PADCONFIG= DEVICE_PIN_MUX_VALUE (DEVICE_PIN_MUX_STACK_CLASS_00、DEVICE_PIN_MUX_RX_DISABLED、DEVICE_PIN_MUX_PULL_UP、DEVICE_PIN_MUX_PULL_ENABLE、DEVICE_MUX_MODE_PRIMARY) PADCONFIG98 = 0x00060000; //MDIO_DATA_PADCONFIG= DEVICE_PIN_MUX_VALUE (DEVICE_PIN_MUX_STACK_CLASS_00、DEVICE_PIN_MUX_RX_ENABLED、DEVICE_PIN_MUX_PULL_UP、DEVICE_PIN_MUX_PULL_ENABLE、DEVICE_PIN_MUX_MODE_PRIMARY) PADCONFIG99 = 0x00020000; GEL_TextOut ("MDIO pinmux is enabled\n"); } /*读取千兆位以太网 PHY 寄存器以验证搭接配置*/ 热菜单 ReadEth0PHYRegs () { unsigned phy_addr = 0; unsigned reg_addr = 0; unsigned MDIO_useraccess = 0x04200F80; unsigned long temp; MDIO_Init(); GEL_TextOut ("Gig Eth MDIO PHY 设置如下所示\n"); for (reg_addr=0;reg_addr<16;reg_addr++) { WR_MEM_32 (MDIO_useraccess、(reg_addr << 21)|(phy_addr << 16)); //使用 GO 位写入相同的值 WR_MEM_32 (MDIO_useraccess、(0x8000000)|(reg_addr << 21)|(phy_addr << 16)); temp =(RD_MEM_32 (MDIO_useraccess)); if ((temp & 0x20000000)=0x20000000) GEL_TextOut ("PHY REG %x =%x\n"、、、、 REG_addr、(temp & 0xFFFF)); 其他 GEL_TextOut ("PHY REG %x 读取失败\n"、、、、 reg_addr); } //在 addr 0x6E 处额外读取寄存器以读取自举配置状态寄存器1 REG_addr = 0x6E; WR_MEM_32 (MDIO_useraccess、(reg_addr << 21)|(phy_addr << 16)); //使用 GO 位写入相同的值 WR_MEM_32 (MDIO_useraccess、(0x8000000)|(reg_addr << 21)|(phy_addr << 16)); temp =(RD_MEM_32 (MDIO_useraccess)); if ((temp & 0x20000000)=0x20000000) GEL_TextOut ("PHY REG %x =%x\n"、、、、 REG_addr、(temp & 0xFFFF)); 其他 GEL_TextOut ("PHY REG %x 读取失败\n"、、、、 reg_addr); GEL_TextOut ("千兆以太网 PHY0引导设置如下所示\n"); //在地址0x6E 处额外读取寄存器以读取自举锁存寄存器#1 REG_addr = 0xD; WR_MEM_32 (MDIO_useraccess、(reg_addr << 21)|(phy_addr << 16)| 0x001F); //使用 GO 位写入相同的值 WR_MEM_32 (MDIO_useraccess、(0xC0000000)|(reg_addr << 21)|(phy_addr << 16)| 0x001F); REG_addr = 0xE; WR_MEM_32 (MDIO_useraccess、(reg_addr << 21)|(phy_addr << 16)| 0x6E); //使用 GO 位写入相同的值 WR_MEM_32 (MDIO_useraccess、(0xC0000000)|(reg_addr << 21)|(phy_addr << 16)| 0x6E); REG_addr = 0xD; WR_MEM_32 (MDIO_useraccess、(reg_addr << 21)|(phy_addr << 16)| 0x401F); //使用 GO 位写入相同的值 WR_MEM_32 (MDIO_useraccess、(0xC0000000)|(reg_addr << 21)|(phy_addr << 16)| 0x401F); REG_addr = 0xE; WR_MEM_32 (MDIO_useraccess、(reg_addr << 21)|(phy_addr << 16)); //使用 GO 位写入相同的值 WR_MEM_32 (MDIO_useraccess、(0x8000000)|(reg_addr << 21)|(phy_addr << 16)); temp =(RD_MEM_32 (MDIO_useraccess)); if ((temp & 0x20000000)=0x20000000) GEL_TextOut ("PHY REG %x =%x\n"、、、、 0x6E、(temp & 0xFFFF)); 其他 GEL_TextOut ("PHY REG %x 读取失败\n"、、、、 0x6E); }