新手入门
- 积分
- 15
- 金钱
- 15
- 注册时间
- 2019-5-17
- 在线时间
- 6 小时
|
20金钱
用的lan8720a的PHY芯片。原理图如下:

能识别到网卡:

但是ping不通,lan8720a初始化正常:
HAL_StatusTypeDef LAN8720_Init(ETH_HandleTypeDef *heth)
{
uint32_t phyreg = 0;
uint32_t TIME_Out = 0;
HAL_GPIO_WritePin(ETH_RST_PORT, ETH_RST_PIN, GPIO_PIN_RESET);
delay_ms(100);
HAL_GPIO_WritePin(ETH_RST_PORT, ETH_RST_PIN, GPIO_PIN_SET);
delay_ms(100);
if(HAL_ETH_WritePHYRegister(heth, LAN8720A_PHY_ADDRESS, PHY_BCR, PHY_RESET) != HAL_OK)
{
return HAL_ERROR;
}
delay_ms(PHY_RESET_DELAY);
if((HAL_ETH_WritePHYRegister(heth, LAN8720A_PHY_ADDRESS, PHY_BCR, PHY_AUTONEGOTIATION)) != HAL_OK)
{
return HAL_ERROR;
}
delay_ms(0xF);
do
{
if(HAL_ETH_ReadPHYRegister(heth, LAN8720A_PHY_ADDRESS, PHY_BSR, &phyreg) != HAL_OK)
{
return HAL_ERROR;
}
TIME_Out++;
if(TIME_Out > LAN8720_TIMEOUT)
{
return HAL_TIMEOUT;
}
} while (((phyreg & PHY_AUTONEGO_COMPLETE) != PHY_AUTONEGO_COMPLETE));
mprintf(DBG_L, "LAN8720A timeout = %d / 131071\r\n", TIME_Out);
return HAL_OK;
}
代码其余部分已验证,无误。
晶振正常起振;
R98已经取掉;

搞了三天了,头大。
|
|