小弟求助个问题, 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