Mikla (11.01.2013 11:10, просмотров: 171) ответил Юрий_СВ на У меня почему-то не получается определить длину кабеля по Cable Diagnostic Test (регистр 0x1d у KSZ8031).
алгоритм диагностики у меня выглядит как то так: //здесь диагностируем пару 12
1:
ETH_WritePHYRegister(DP83848_PHY_ADDRESS, PHYcONTROL2_REG, 0x2100);
if(0x0020 & ETH_ReadPHYRegister_start(DP83848_PHY_ADDRESS, PHYcONTROL1_REG))
{
goto 1;
}
2:
ETH_WritePHYRegister(DP83848_PHY_ADDRESS, LinkMD_REG, 0x8000);
reg_value = ETH_ReadPHYRegister(DP83848_PHY_ADDRESS, LinkMD_REG);
if(reg_value & 0x8000)
{
goto 2;
}
Eth_state_para12 = reg_value;
//здесь диагностируем пару 36
3:
ETH_WritePHYRegister_start(DP83848_PHY_ADDRESS, PHYcONTROL2_REG, 0x6100);
диагностика пары 36 по алгоритму пары 12
//заканчиваем диагностику
ETH_WritePHYRegister_start(DP83848_PHY_ADDRESS, PHYcONTROL2_REG, 0x8100);