|
Ksz8041 не отправляет через Хаб, а напрямую работает |
|
|
|
Apr 12 2015, 14:58
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 14-06-14
Пользователь №: 81 950

|
Доброго времени суток. Собрал плату на Ksz8041, STM32F4 + LwIP. Подправил пример стека - "под себя". Столкнулся с тем, что через 100Мбитный хаб ничего не работает, а на прямую через сетевой switch все работает как должно. У PHY включен "Auto-Negotiation" внешней подтяжкой, пробовал так же программно, разницы нет. Link устанавливается, стек пакеты принимает (видно в буфере и по прерыванию Ethernet) и передает (заметна активность TXD0-1 CRS_DV), но wireshark ничего не видит.
Увы не до конца понятен алгоритм с Auto-Negotiation, так же не ясно какой из регистров должен давать информацию (1,4 или 5) и нужно ли вручную конфигурировать PHY ? Кто сталкивался ..., отзовитесь пожалуйста ...
пробовал вручную заполнять структуру ETH_InitStruct, ставил 10-100 Full-HalfDuplex, результата нет
Сообщение отредактировал khomin - Apr 12 2015, 14:34
|
|
|
|
|
 |
Ответов
|
Apr 17 2015, 08:29
|
Частый гость
 
Группа: Участник
Сообщений: 177
Регистрация: 25-08-05
Из: Ставрополь
Пользователь №: 7 964

|
Цитата(khomin @ Apr 12 2015, 17:58)  Доброго времени суток. Собрал плату на Ksz8041, STM32F4 + LwIP. Подправил пример стека - "под себя". Столкнулся с тем, что через 100Мбитный хаб ничего не работает, а на прямую через сетевой switch все работает как должно. У PHY включен "Auto-Negotiation" внешней подтяжкой, пробовал так же программно, разницы нет. Link устанавливается, стек пакеты принимает (видно в буфере и по прерыванию Ethernet) и передает (заметна активность TXD0-1 CRS_DV), но wireshark ничего не видит.
Увы не до конца понятен алгоритм с Auto-Negotiation, так же не ясно какой из регистров должен давать информацию (1,4 или 5) и нужно ли вручную конфигурировать PHY ? Кто сталкивался ..., отзовитесь пожалуйста ...
пробовал вручную заполнять структуру ETH_InitStruct, ставил 10-100 Full-HalfDuplex, результата нет KSZ8041 не использовал, а вот KSZ8031 и KSZ8863 да, были проблемы с "Auto-Negotiation". Поборол так: - в структуре инициализации поставил "ETH_InitStructure.ETH_AutoNegotiation = ETH_AutoNegotiation_Disable;"; - в файле "stm32f4x7_eth.с" , в блоке условия проверки "if(ETH_InitStruct->ETH_AutoNegotiation != ETH_AutoNegotiation_Disable) { ....} else{.." поставил явно инициализацию физикса ETH_WritePHYRegister(PHYAddress, PHY_BCR, 0x2100); //FullDuplex 100M ETH_InitStruct->ETH_Speed = ETH_Speed_100M; ETH_InitStruct->ETH_Mode = ETH_Mode_FullDuplex; Значение PHY_BCR привёл для KSZ8031, у Вас может быть другое.
|
|
|
|
|
Apr 21 2015, 06:15
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 14-06-14
Пользователь №: 81 950

|
Цитата(ksv198 @ Apr 17 2015, 08:29)  KSZ8041 не использовал, а вот KSZ8031 и KSZ8863 да, были проблемы с "Auto-Negotiation". Поборол так: - в структуре инициализации поставил "ETH_InitStructure.ETH_AutoNegotiation = ETH_AutoNegotiation_Disable;"; - в файле "stm32f4x7_eth.с" , в блоке условия проверки "if(ETH_InitStruct->ETH_AutoNegotiation != ETH_AutoNegotiation_Disable) { ....} else{.." поставил явно инициализацию физикса ETH_WritePHYRegister(PHYAddress, PHY_BCR, 0x2100); //FullDuplex 100M ETH_InitStruct->ETH_Speed = ETH_Speed_100M; ETH_InitStruct->ETH_Mode = ETH_Mode_FullDuplex;
Значение PHY_BCR привёл для KSZ8031, у Вас может быть другое. Оказалось у меня PHY работает не со всеми сетевыми картами. В локалке через switch работает нормально, а уже через switch другой марки - пакеты не пропускаются, так же и с компьютером - на ноутбуке пакеты принимаются, а на компьютере уже нет ( Подогнал токозадающее сопротивление до единиц ом, проверил всю схемотехнику, разницы пока не заметил. Самое интересно, что пакеты время от времени таки пролетают, но очень редко (~1 пакет в 3 минуты) Причем Autonegatioation определяет все как надо, биты "доступности" 100-F-H, 10-F-H выставлены
Сообщение отредактировал khomin - Apr 21 2015, 06:20
|
|
|
|
|
Apr 21 2015, 10:18
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Цитата(khomin @ Apr 21 2015, 09:15)  В локалке через switch работает нормально, а уже через switch другой марки - пакеты не пропускаются, ... "не пропускаются" - это откуда, куда, тип протокола в пакете??? согласитесь - если пакет один в один с "хорошим", то фокусов не должно быть. ищите отличия. проверьте MAC-и, IP-шники, прохождение ARP запрос-ответов... что стоит в "локалке" - это типа хаб или свитч другой марки? Настройки свитча существуют или нет? Если да - то разрешено ли там усё??? вопросов больше чем ответов. что видит анализатор? пытались ли сравнивать "хорошие" пакеты и "плохие"?
|
|
|
|
Сообщений в этой теме
khomin Ksz8041 не отправляет через Хаб Apr 12 2015, 14:58 Alex11 Скорее всего, PHY здесь ни при чем. Есть два вариа... Apr 12 2015, 18:11 prig Цитата(Alex11 @ Apr 12 2015, 21:11) Скоре... Apr 21 2015, 13:04 khomin Цитата(prig @ Apr 21 2015, 14:04) PHY мож... Apr 21 2015, 18:53  kolobok0 Цитата(khomin @ Apr 21 2015, 21:53) Спаси... Apr 22 2015, 15:09   khomin Цитата(kolobok0 @ Apr 22 2015, 16:09) Рек... Apr 24 2015, 09:00    prig Цитата(khomin @ Apr 24 2015, 12:00) ...
Н... Apr 24 2015, 12:05 Alex11 Ниже Wireshark'а из PC не посмотрите. Карточка... Apr 24 2015, 09:06 kolobok0 Цитата(Alex11 @ Apr 24 2015, 12:06) Ниже ... Apr 24 2015, 14:53  khomin Цитата(kolobok0 @ Apr 24 2015, 15:53) как... Apr 25 2015, 19:13 Alex11 ЦитатаЕсли ваеришак глючит - то это дерьмо а не сн... Apr 25 2015, 21:25 kolobok0 Цитата(Alex11 @ Apr 26 2015, 00:25) ....е... Apr 26 2015, 09:26 Alex11 Я же специально написал - Ethernet контрольная сум... Apr 26 2015, 11:49 prig Цитата(Alex11 @ Apr 26 2015, 14:49) Я же ... Apr 27 2015, 07:39 kolobok0 Цитата(Alex11 @ Apr 26 2015, 14:49) ...Et... Apr 27 2015, 09:52 Alex11 IEEE 802.3 MAC frame format - Frame check sequence... May 1 2015, 01:14
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|