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

This commit is contained in:
SummerGift 2019-06-10 10:05:11 +08:00
parent cf7052f6b7
commit 8710b1fd06
1 changed files with 29 additions and 21 deletions

View File

@ -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.");
}
}
}