举报
针对无法ping通的问题,以下是需要逐步检查和排查的要点:
// 在stm32f7xx_hal_conf.h中确认ETH时钟源
#define ETH_TX_CLK_SOURCE ETH_TX_CLK_SEL_PLL// 示例中可能通过HAL_GPIO_WritePin控制复位
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET);// 在ethernetif.c中检查链路状态
if (HAL_ETH_ReadPHYRegister(&heth, PHY_BSR, ®value) != HAL_OK) { /* Error */ }
if (regvalue & PHY_LINKED_STATUS) { /* 链路已连接 */ }configTOTAL_HEAP_SIZE)。lwipopts.h中的内存池配置(如MEMP_NUM_PBUF, PBUF_POOL_SIZE)。0x30000000)。// 在ethernetif.c中,确认描述符地址对齐到32字节
__ALIGNED(32) ETH_DMADescTypeDef DMARxDscrTab[ETH_RX_DESC_CNT];
__ALIGNED(32) ETH_DMADescTypeDef DMATxDscrTab[ETH_TX_DESC_CNT];// 在lwipopts.h中启用调试
#define LWIP_DEBUG 1
#define ETHARP_DEBUG LWIP_DBG_ON
#define NETIF_DEBUG LWIP_DBG_ONif (netif_is_link_up(&gnetif)) {
// 链路已连接
}通过以上步骤,应能定位到导致无法ping通的根本原因。
举报
更多回帖