Перейти к содержанию
    

Уже ничего не соображаю :cranky:

Собственно ситуация выглядит следующим образом:

Разработку кода начал для платы от Олимекса. Там стоит микросхема от Микрела ksz8721bl (кажется не ошибся). Свой код разрабатывал на базе примеров от FreeRTOS которые написаны под плату разработчика от Атмела там тоже другая микросхема физического уровня. Пошагово проанализировал код, прочитал документацию, разобрался что к чему, подправил код - запустил работу с сетью на плате Олимекса. Но програма разрабатывается для устройства где в качестве чипа физуровня будет использоваться Риалтековская rtl8201bl. Но когда попробовал запустить код на пробной новой плате устройства возникла проблема - никак не могу заставить заработать чип сети. В качестве управляющего процесора используется ATSAM7X256. Разница между Олимексовской платой разработчика и спроектированным устройством в том, что на плате разработчика все управляющие ножки (включая конфигурационные) чипа физуровня подключены на ножки процесора, то-есть ими можна управлять, а на разработаном устройстве конфигурационные ножки посаженны резисторами на ноль или питание. А именно:

44 (MII), 41 (LDPS), 39 (SPEED), 38 (DUPLEX), 37 (ANE), 9 (PHYAD0) подтянуты к питанию;

43 (ISOLATE), 40 (RPTR) и остальные ножки установки адреса чипа посаженны на ноль.

То-есть чип должен бы быть сконфигурированным на адрес 1, автосогласование скорости, интерфейс MII.

Кроме того 24 ножка (режим UTP) резистором посажена на ноль.

Конфигурация модуля сети в процесоре используется одинаковая для обоих плат. Для Олимексовской платы дополнительно добавляется програмная конфигурация нескольким ножек. Дальше я пробую считать регистры ID чипа физуровня. Выполняется один и тот же код. Интерфейс управления стандартизованный. На Олимексовкой плате всё работает, на разработаной плате никак не могу запустить чип. При этом поведение его весьма странно.

Во-первых после подачи питания (при подключенном кабеле сети), что-бы я с ним не делал светодиоды статуса не загораются, сеть не появляется. Но если он постоит минут 10-20 (всё это время в цикле програма опрашивает его регистры), то вдруг появляется сеть (при этом канал управления всё равно не работает). Если переподключить кабель сети или питание, сеть появляется сразу, но если выключить питание минут на 20, то опять он минут 10 не реагирует на сеть.

А во вторых, подозревая, что конфигурация номера чипа может быть немного неправильной (немножко некоректно подключенны диоды статуса к ножкам установки номера), в програме я запустил по бесконечному циклу с выводом результатов на USB опрос регистров ID чипа постоянно изменяя номер чипа от которого я хочу получить ответ. Так вот, если код запускается на Олимексовской плате - все работает коректно, при обращении по правильному номеру чипа приходит нужный ответ, на все остальные запросы возвращается FF. При использовании кода на разработаной плате какие-то непонятные ответы приходят на номера 1, 2, 4, 8, 16 (то-есть один бит единицы, остальные 0), при этом от цикла к циклу цифры меняются (чипу выставлен номер 1).

 

Возможно я что-то не учёл, но вроде бы уже досконально изучил документацию, проверил схему, осцилографом посмотрел ножки конфигурации, вроде бы помехи нигде не пролазят. Разработчик платы, говорит, что этот чип физуровня именно в такой обвязке у него работает в другом устройстве где управление заводиться от ПЛИСок. Сделано три экземпляра платы, на всех одни и те же симптомы.

 

Как можно ещё попробовать локализировать проблему? Даже не знаю она на уровне железа или программы.

 

Помогите, пожалуйста

:help:

 

Спасибо

Изменено пользователем OlegHmt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прежде всего, проверьте состояние адресных пинов - если адрес будет считан как '0', то RTL поведет себя примерно так, как Вы описываете. Я бы посоветовал временно подтянуть к питанию еще один адресный пин.

LDPS на время отладки лучше отключить.

Наконец, проверьте, что частота MDC не превышает 2.5МГц - RTL этого очень не любит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если хотите, пришлите мне по почте на [email protected] скриншот фрагмента схемы с подключением трансивера к линии, или выложите здесь.

Действительно, при чтении служебного интерфейса нет нужды торопиться и частоту можно смело понизить. Я это проходил на LXT972... Это линия с третьим состоянием. Возможно, что там запаяли не тот резистор - надо посмотреть фронты.

А еще надо проверить формирование импульса сброса. Все установки, зашитые резисторами записываются внутрь кристалла под сброс. Если у Вас есть возможность - повторите по MDIO загрузку установок. Код это небольшой, и хуже от этого точно не будет.

 

Про пропадание линии - возможно, что что-то неправильно с трансформатором при включении и он замагничивается или может быть какие-нибудь емкости по входам стоят? Без схемы сказать трудно. Может 50 омные резисторы не 1%?

Но в любом случае MDIO читаться должен.

Удачи!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Частота 1.5 МГц.

Сброс чипа сидит на линии сброса процесора и управляется самим процесором.

 

Схема подключения чипа в предыдущем сообщении

Изменено пользователем OlegHmt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Частота 1.5 МГц.

Сброс чипа сидит на линии сброса процесора и управляется самим процесором.

 

Схема подключения чипа в предыдущем сообщении

 

Ну а среднюю точку трансформаторов Пушкин на +3,3В забыл подключить?

Посмотрите у меня на сайте статьи про подключение трансивера к меди или даташит на 8721...

 

Не зевайте так больше и удачи!

Напишите, когда исправите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Относительно включения конектора/транса:

- замечание по подключению 3,3 вольта касается других типов этих конекторов;

- в другом нашем устройстве (FPGA-based) всё в таком виде (кроме шины к процессору, естесственно), работает нормально с LU1S041 and LU1T516-43, тоесть в части RTL-to-net наверное вс' в порядке.

 

Проблемы между процессором и PHY

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Относительно включения конектора/транса:

- замечание по подключению 3,3 вольта касается других типов этих конекторов;

- в другом нашем устройстве (FPGA-based) всё в таком виде (кроме шины к процессору, естесственно), работает нормально с LU1S041 and LU1T516-43, тоесть в части RTL-to-net наверное вс' в порядке.

Что касается "LDPS - нах !" - то здесь я согласен абсолютно. Это я даже представить не мог что Вы так сделаете...

А вот что касается "подключению 3,3" - то это извините стандарт и по другому здесь делать нельзя. Среднюю точку трансформатора по передаче положено подключать на питание.

Интеловсий LXT972 - тоже, Микрел - Тоже...

 

Или другой вариант - вот пример -давиком, стр 45...

А у Вас ни так ни эдак...

Но дело кончно Ваше, если хотите поупражняться....

Изменено пользователем iosifk

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В приложении - схема модуля от Wiznet

 

Им-то нет основания не доверять, они собак-то наелись в єтом деле :)

 

Жду коментариев!

NM7010B_LF.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В приложении - схема модуля от Wiznet

 

Им-то нет основания не доверять, они собак-то наелись в єтом деле :)

 

Жду коментариев!

 

Пока не скачаю хоть один из тестовых примеров от Реалтека - комментировать не буду.

Вполне возможно, что у них в Реалтеке сделан симметричный выходной касакад. Но пока не получу пример, точно ничего не скажу. А у нас IT позавчера провел акцию, так что FTP реалтека приравняно к порно и прочим и закрыто...

А то, что ребята из Wiznet неправильно посадили на землю 24 ногу трансивера - это вижу.

Но что могу точно сказать, так это то, что в отличие от микреловского KSZ8001, реалтек не умеет делать проверку импеданса линии связи, не умеет делать переназначение Rx-Tx.

А кстати, что Вы делаете свич или ник?

Судя по Вашей схеме - свич...

Вот пока все.

Изменено пользователем iosifk

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А то, что ребята из Wiznet неправильно посадили на землю 24 ногу трансивера - это вижу.

Тут небольшая специфика самого чипа, эта нога используется для переключения чипа между режимами UTP (0) и Fiber (1). То-есть там должно бы быть правильно (по крайней мере у нас в схеме ножка подтянута к нулю, но, всё равно управляется процесором).

 

А кстати, что Вы делаете свич или ник?

Судя по Вашей схеме - свич...

К сожалению, не понял к чему это относится? Такого нюанса я не встречал (или упустил). В принципе, в описании чипа это упоминается для ножки RPTR, но там написано, что для использования в приложениях NIC/Switch посадить ножку на землю. Что у нас и сделано.

 

Что касается "LDPS - нах !" - то здесь я согласен абсолютно. Это я даже представить не мог что Вы так сделаете...

Тут также, я не понял в чём проблема. Опять же из описания чипа: если эта ножка на питании, то при отсутсвии кабеля выходные каскады отключаются. Возможно поэтому сбоит включение выходных каскадов, но, насколько я сумел разобраться, крамолы в этом нет.

 

Что же касается инициализации MDIO попробую перед читанием несколько раз записать конфигурацию в регистры - авось действительно заработает. Также LDPS посажу на ноль, может и это поможет. Приду домой - попробую, о результатах напишу уже завтра.

 

А пока спасибо за помощь

:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Зря это вы вот так. Людям верить надо. Наверное там и правда полный выходной каскад и транс можно вообще без средней точки бахнуть - это ж 10 мегабит, там третий уровень не нужен.

В общем в аппнотах реалтека есть разные согласующие штуки по переменке через конденсаторы на землю - но по постоянке смещений/подтяжек нет никаких!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ладно, давайте подождем результата...

только вот по поводу RXER - это ВЫХОД трансивера. При инициализации он опрашивается и это состояние защелкивается. А потом этот пин переключается на Вывод. И туда выводится 1 в случае ошибок в тракте передачи. А Визнет этот пин посадил на землю.

По поводу "свич" - это я посмотрел на описание LXT972 там раздельные схемы для свича и для ника. Проверьте, там где-то должно быть перекрещено Tx на Rx. Обычно это делается в хабах - свичах. Тогда можно применить прямой кабель. А если Вы подключаете ник в РС напрямую, то надо перекрещенный кабель брать. Нет ли здесь ошибки, потому что есть хабы и свичи, которые делают перекрест автоматически. Может Ваш свич чего-то не понимает и пытается перекреститься...

И еще я проверил - сброс для KSZ8721 - должен быть 5 мкс, а для Реалтека 10 мСек. Надеюсь, что здесь правильно!

Напишите мне, если что узнаете по этому поводу...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Касательно свич\ник - я использую уже перекрещенный кабель для связи комп-комп и подключаю свою плату напрямую в разъём сети компа. Тут вроде-бы всё правильно.

 

Касательно сброса - там тоже правильно. Давал сброс 15мс, а потом вообще 2с (сколько позволяет процесор). Поведение одинаковое

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...