提交 8710b1fd 编写于 作者: S SummerGift

【修复】PHY 状态查询过程中的 bug

上级 cf7052f6
......@@ -468,32 +468,40 @@ static void phy_monitor_thread_entry(void *parameter)
while (1)
{
HAL_ETH_ReadPHYRegister(&EthHandle, PHY_BASIC_STATUS_REG, (uint32_t *)&status);
LOG_D("PHY BASIC STATUS REG:0x%04X", status);
phy_speed_new = 0;
if (status & (PHY_AUTONEGO_COMPLETE_MASK | PHY_LINKED_STATUS_MASK))
if(HAL_ETH_ReadPHYRegister(&EthHandle, PHY_BASIC_STATUS_REG, (uint32_t *)&status) == HAL_OK)
{
rt_uint32_t SR;
phy_speed_new = PHY_LINK_MASK;
SR = HAL_ETH_ReadPHYRegister(&EthHandle, PHY_Status_REG, (uint32_t *)&SR);
LOG_D("PHY Control/Status REG:0x%04X ", SR);
if (SR & PHY_100M_MASK)
LOG_D("PHY BASIC STATUS REG:0x%04X", status);
if (status & (PHY_AUTONEGO_COMPLETE_MASK | PHY_LINKED_STATUS_MASK))
{
phy_speed_new |= PHY_100M_MASK;
}
else if (SR & PHY_10M_MASK)
{
phy_speed_new |= PHY_10M_MASK;
}
rt_uint32_t SR;
if (SR & PHY_FULL_DUPLEX_MASK)
{
phy_speed_new |= PHY_FULL_DUPLEX_MASK;
phy_speed_new = PHY_LINK_MASK;
if(HAL_ETH_ReadPHYRegister(&EthHandle, PHY_Status_REG, (uint32_t *)&SR) == HAL_OK)
{
LOG_D("PHY Control/Status REG:0x%04X ", SR);
if (SR & PHY_100M_MASK)
{
phy_speed_new |= PHY_100M_MASK;
}
else if (SR & PHY_10M_MASK)
{
phy_speed_new |= PHY_10M_MASK;
}
if (SR & PHY_FULL_DUPLEX_MASK)
{
phy_speed_new |= PHY_FULL_DUPLEX_MASK;
}
}
else
{
LOG_D("PHY Control/Status REG read error.");
}
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册