This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TM4C1292NCPDT使用RMII连接DP83822I问题

Other Parts Discussed in Thread: TM4C1292NCPDT, DP83822I, EK-TM4C1294XL, LMK00804B

小弟求助个问题,  TM4C1292NCPDT通过RMII连接DP83822I ,现在PHY 工作正常了 LINK UP了 自动协商100M 也没问题, MCU RMII初始化也正常了 可要管理PHY的寄存器,但是使用LWIP无法ping通

同样的程序 在EK-TM4C1294XL 把接口改为MII 可以正常运行 但是 换到TM4C1292NCPDT 只把接口改成RMII了 就不通了是在不知道什么问题

部分PHY和MAC的寄存器值

PHY_BMCR: 0x00003100
PHY_BMSR: 0x00007849
PHY_ID1: 0x00002000
PHY_ANA: 0x000001e1
PHY_ANLPA: 0x00000000
PHY_ANER: 0x00000004
PHY_CR1: 0x00000000
PHY_PHYCR: 0x00008021
PHY_CFG2: 0x00000100
PHY_FLDS: 0x00000000
PHY_PHYSTS: 0x00000002
PHY_RCSR: 0x000000e1
PHY_10BTSCR: 0x00000000
PHY_COMPT: 0x00002001
PHY_FLDS: 0x00000000
PHY_CR2: 0x00000100
PHY_LDCTRL: 0x00009fcf
PHY_RXFPMD1: 0x00000000
PHY_MLEDCR: 0x0000002b
PHY_IOCTRL1: 0x00000001
PHY_LEDCFG1: 0x00000851
IP: 0x0264a8c0
PHY_PHYSTS: 0x00004715
PHY_PHYSCR: 0x0000010b
MAC_EMACCC: 0x00010000
MAC_EMACPC: 0xc0000000
MAC_EMACPP: 0x00000100

RMII 接口配置

ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOJ);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOK);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOL);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOM);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPION);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOP);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOQ);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOR);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOS);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOT);

//-----Alternate GPIO pin Selection for RMII--------//
ROM_GPIOPinConfigure(GPIO_PG7_EN0RXDV);
ROM_GPIOPinConfigure(GPIO_PQ5_EN0RXD0);
ROM_GPIOPinConfigure(GPIO_PQ6_EN0RXD1);
ROM_GPIOPinConfigure(GPIO_PG3_EN0TXEN);
ROM_GPIOPinConfigure(GPIO_PG4_EN0TXD0);
ROM_GPIOPinConfigure(GPIO_PG5_EN0TXD1);
ROM_GPIOPinConfigure(GPIO_PF2_EN0MDC);
ROM_GPIOPinConfigure(GPIO_PF3_EN0MDIO);
ROM_GPIOPinConfigure(GPIO_PK4_EN0INTRN);
ROM_GPIOPinConfigure(GPIO_PM4_EN0RREF_CLK);

GPIOPinTypeEthernetMII(GPIO_PORTG_BASE, GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7);
GPIOPinTypeEthernetMII(GPIO_PORTQ_BASE, GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_3);
GPIOPinTypeEthernetMII(GPIO_PORTF_BASE, GPIO_PIN_2 | GPIO_PIN_3 );
GPIOPinTypeEthernetMII(GPIO_PORTK_BASE, GPIO_PIN_4);
GPIOPinTypeEthernetMII(GPIO_PORTM_BASE, GPIO_PIN_4);

uint8_t pui8MACArray[8] = {0xAC, 0xDE, 0x48, 0x00, 0x80, 0x00};

lwIPInit(g_ui32SysClock, pui8MACArray,  0xC0A86402, 0xffffff00, 0xC0A864FE, IPADDR_USE_STATIC);

硬件部分  

时钟使用CDCE913PWR 输出50Mhz时钟 通过 LMK00804B分别给 MCU 和PHY 

PHY 跟 MCU 引脚

MDIO

MDC

TX_EN

TX_D0

TX_D1

RX_DV

RX_D0

RX_D1

INT/PWDN

mcu 50MHZ时钟引脚PM4 EN0RREF_CLK

PHY 50MHZ时钟引脚 XI