ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
2 июля
379785 Топик полностью
Юрий_СВ (12.01.2013 02:21, просмотров: 109) ответил Mikla на алгоритм диагностики у меня выглядит как то так:
Заработало :) Не додумался вытащить кабель ! (через него отлаживаюсь) Откуда же там взяться отражениям :) И не отключал автоназначение пар. этот кусок лишний : ----- if(0x0020 & ETH_ReadPHYRegister_start(DP83848_PHY_ADDRESS, PHYcONTROL1_REG)) { goto 1; } ---- я сделал так: //----------------------------------------------------------------------- u16_t Cable_Pair_Diagnostic(u8_t PHY_ADDRESS) { u16_t result; ETH_WritePHYRegister(PHY_ADDRESS, 0x1d, 0x8000); // запуск диагностики пары do result=ETH_ReadPHYRegister(PHY_ADDRESS, 0x1d); while(result & 0x8000); // ждём окончания return result; } //----------------------------------------------------------------------- void Cable_Diagnostic(u8_t PHY_ADDRESS, u16_t * result_1, u16_t * result_2) { ETH_WritePHYRegister(PHY_ADDRESS, 0x1f, 0x2100); // авто назначение пар выключено, выбрана пара 1-2 *result_1=Cable_Pair_Diagnostic(PHY_ADDRESS); // диагностика пары ETH_WritePHYRegister(PHY_ADDRESS, 0x1f, 0x6100); // авто назначение пар выключено, выбрана пара 3-6 *result_2=Cable_Pair_Diagnostic(PHY_ADDRESS); // диагностика пары ETH_WritePHYRegister(PHY_ADDRESS, 0x1f, 0x8100); // авто назначение пар включено }