Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как запустить rtl8201bl
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
OlegHmt
Уже ничего не соображаю cranky.gif
Собственно ситуация выглядит следующим образом:
Разработку кода начал для платы от Олимекса. Там стоит микросхема от Микрела 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.gif

Спасибо
aaarrr
Прежде всего, проверьте состояние адресных пинов - если адрес будет считан как '0', то RTL поведет себя примерно так, как Вы описываете. Я бы посоветовал временно подтянуть к питанию еще один адресный пин.
LDPS на время отладки лучше отключить.
Наконец, проверьте, что частота MDC не превышает 2.5МГц - RTL этого очень не любит.
iosifk
Если хотите, пришлите мне по почте на iosifk@eltech.spb.ru скриншот фрагмента схемы с подключением трансивера к линии, или выложите здесь.
Действительно, при чтении служебного интерфейса нет нужды торопиться и частоту можно смело понизить. Я это проходил на LXT972... Это линия с третьим состоянием. Возможно, что там запаяли не тот резистор - надо посмотреть фронты.
А еще надо проверить формирование импульса сброса. Все установки, зашитые резисторами записываются внутрь кристалла под сброс. Если у Вас есть возможность - повторите по MDIO загрузку установок. Код это небольшой, и хуже от этого точно не будет.

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

Что не так?
OlegHmt
Частота 1.5 МГц.
Сброс чипа сидит на линии сброса процесора и управляется самим процесором.

Схема подключения чипа в предыдущем сообщении
iosifk
Цитата(OlegHmt @ Dec 21 2006, 13:10) *
Частота 1.5 МГц.
Сброс чипа сидит на линии сброса процесора и управляется самим процесором.

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


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

Не зевайте так больше и удачи!
Напишите, когда исправите.
rustelcom
LDPS - нах !

Про 3.3 это вы загнули, батенька.
RIYA
Относительно включения конектора/транса:
- замечание по подключению 3,3 вольта касается других типов этих конекторов;
- в другом нашем устройстве (FPGA-based) всё в таком виде (кроме шины к процессору, естесственно), работает нормально с LU1S041 and LU1T516-43, тоесть в части RTL-to-net наверное вс' в порядке.

Проблемы между процессором и PHY
iosifk
Цитата(RIYA @ Dec 21 2006, 13:58) *
Относительно включения конектора/транса:
- замечание по подключению 3,3 вольта касается других типов этих конекторов;
- в другом нашем устройстве (FPGA-based) всё в таком виде (кроме шины к процессору, естесственно), работает нормально с LU1S041 and LU1T516-43, тоесть в части RTL-to-net наверное вс' в порядке.

Что касается "LDPS - нах !" - то здесь я согласен абсолютно. Это я даже представить не мог что Вы так сделаете...
А вот что касается "подключению 3,3" - то это извините стандарт и по другому здесь делать нельзя. Среднюю точку трансформатора по передаче положено подключать на питание.
Интеловсий LXT972 - тоже, Микрел - Тоже...

Или другой вариант - вот пример -давиком, стр 45...
А у Вас ни так ни эдак...
Но дело кончно Ваше, если хотите поупражняться....
RIYA
В приложении - схема модуля от Wiznet

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

Жду коментариев!
iosifk
Цитата(RIYA @ Dec 21 2006, 14:56) *
В приложении - схема модуля от Wiznet

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

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


Пока не скачаю хоть один из тестовых примеров от Реалтека - комментировать не буду.
Вполне возможно, что у них в Реалтеке сделан симметричный выходной касакад. Но пока не получу пример, точно ничего не скажу. А у нас IT позавчера провел акцию, так что FTP реалтека приравняно к порно и прочим и закрыто...
А то, что ребята из Wiznet неправильно посадили на землю 24 ногу трансивера - это вижу.
Но что могу точно сказать, так это то, что в отличие от микреловского KSZ8001, реалтек не умеет делать проверку импеданса линии связи, не умеет делать переназначение Rx-Tx.
А кстати, что Вы делаете свич или ник?
Судя по Вашей схеме - свич...
Вот пока все.
OlegHmt
Цитата
А то, что ребята из Wiznet неправильно посадили на землю 24 ногу трансивера - это вижу.

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

Цитата
А кстати, что Вы делаете свич или ник?
Судя по Вашей схеме - свич...

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

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

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

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

А пока спасибо за помощь
smile.gif
boez
Зря это вы вот так. Людям верить надо. Наверное там и правда полный выходной каскад и транс можно вообще без средней точки бахнуть - это ж 10 мегабит, там третий уровень не нужен.
В общем в аппнотах реалтека есть разные согласующие штуки по переменке через конденсаторы на землю - но по постоянке смещений/подтяжек нет никаких!
iosifk
Ладно, давайте подождем результата...
только вот по поводу RXER - это ВЫХОД трансивера. При инициализации он опрашивается и это состояние защелкивается. А потом этот пин переключается на Вывод. И туда выводится 1 в случае ошибок в тракте передачи. А Визнет этот пин посадил на землю.
По поводу "свич" - это я посмотрел на описание LXT972 там раздельные схемы для свича и для ника. Проверьте, там где-то должно быть перекрещено Tx на Rx. Обычно это делается в хабах - свичах. Тогда можно применить прямой кабель. А если Вы подключаете ник в РС напрямую, то надо перекрещенный кабель брать. Нет ли здесь ошибки, потому что есть хабы и свичи, которые делают перекрест автоматически. Может Ваш свич чего-то не понимает и пытается перекреститься...
И еще я проверил - сброс для KSZ8721 - должен быть 5 мкс, а для Реалтека 10 мСек. Надеюсь, что здесь правильно!
Напишите мне, если что узнаете по этому поводу...
OlegHmt
Касательно свич\ник - я использую уже перекрещенный кабель для связи комп-комп и подключаю свою плату напрямую в разъём сети компа. Тут вроде-бы всё правильно.

Касательно сброса - там тоже правильно. Давал сброс 15мс, а потом вообще 2с (сколько позволяет процесор). Поведение одинаковое
aaarrr
Ну и развели же вы флуд, господа! А главное, совершенно не по делу. blink.gif

OlegHmt: Генерация на кварце стабильна?

Цитата(iosifk @ Dec 21 2006, 15:32) *
Пока не скачаю хоть один из тестовых примеров от Реалтека - комментировать не буду.
Вполне возможно, что у них в Реалтеке сделан симметричный выходной касакад. Но пока не получу пример, точно ничего не скажу.

RTL8201 бывает аж 4-х типов, и в одном из них - RTL8201BL - средняя точка трансформатора висит в воздухе. Пример приложен.
Нажмите для просмотра прикрепленного файла

P.S. Я ничего не имею против Micrel, но не надо преподносить его как панацею.
RIYA
По поводу подключения транса/коннектора к RTL8201BL :

Когда начинали разработку FPGA+ethernet, искали коннектор с магнетикой.

Одни знакомые сказали:
"мы выпустили несколько тысяч изделий с RTL8201BL + LU1S041 по такой вот схеме..."
Дейташита по подключению от производителей коннекторов/чипов не предоставили, но мы посчитали, что "несколько тысяч..." - весомый аргумент...

Далее, ту же схему подключения увидели на визнетовском модуле для LU1T516-43, и опробовали...

Смущает то, что для одного и того же чипа можно применять два разных трансформатора (LU1S041 и LU1T516-43) в одинаковом включени. И может быть это ещё вылезет боком smile.gif


Но неоспоримым фактом есть то, что у меня на столе в данный момент нормально работают две платы:
одна - FPGA + RTL8201BL + LU1S041,
вторая - такая же плата, но в ней - LU1T516-43!!!!


Кто может прокоментировать - буду рад!
iosifk
Цитата(aaarrr @ Dec 21 2006, 17:28) *
Ну и развели же вы флуд, господа! А главное, совершенно не по делу. blink.gif

Цитата(iosifk @ Dec 21 2006, 15:32) *

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

RTL8201 бывает аж 4-х типов, и в одном из них - RTL8201BL - средняя точка трансформатора висит в воздухе. Пример приложен.
Нажмите для просмотра прикрепленного файла

P.S. Я ничего не имею против Micrel, но не надо преподносить его как панацею.


Я не предлагал Микрел как панацею. Просто с ним и с Интелом я знаком больше.
Спасибо за пример применения Реалтека.
И вот теперь в том файле, который здесь выложен:
Что такое U2 - H1251 это трансформатор?
И куда подключен его вывод 4 под названием TDCT? Что это за вывод?
Что такое за сигнал PWFBOUT и куда он идет? Вроде как какой то вывод? Называется Power Feedback Output...
Так мало того, что это сделано с выходом, так они еще и на входе это сделали...
Так что вот мои комментарии.
И еще я тут хотел выложить файл на DM9000 от Davicom, но он не прицепился. Посмотрите его...
Спасибо.
Ну я кончаю, как это тут назвали мою попытку помочь.
Как я понимаю, есть две проблемы:
1. Плохо работает MDIO. Я такое проходил и делал понижение скорости передачи.
2. Проблемы с линией. Тут надо через MDIO запретить изменение всех режимов и сравнить работающую платы с новой.

И прошу сообщить мне, когда положение изменится...
Удачи!
aaarrr
Цитата(iosifk @ Dec 21 2006, 17:54) *
И вот теперь в том файле, который здесь выложен:
Что такое U2 - H1251 это трансформатор?
И куда подключен его вывод 4 под названием TDCT? Что это за вывод?
Что такое за сигнал PWFBOUT и куда он идет? Вроде как какой то вывод? Называется Power Feedback
Output...

TDCT - это средняя точка (TD- > TDCT > TD+) трансформатора U2. PWFBOUT - выход внутреннего источника +2.5V. У RTL8201 (без буковок bl, cl, cl+) средняя точка подключается к +3.3V.

Цитата(iosifk @ Dec 21 2006, 17:54) *
Как я понимаю, есть две проблемы:
1. Плохо работает MDIO. Я такое проходил и делал понижение скорости передачи.
2. Проблемы с линией. Тут надо через MDIO запретить изменение всех режимов и сравнить работающую платы с новой.

По-моему, есть одна проблема - PHY просто не запускается. И весьма возможно, что это происходит из-за неправильно считанного адреса - OlegHmt упоминал некорректно подключенные диоды в первом посте.
О проблемах линии можно будет говорить только после того, как будет запущен MDIO.
OlegHmt
Сначала небольшая ремарка касательно подключения пинов выставления адреса. Там всё нормально, я просто невнимательно смотрел схему. Они все сидят на питании, поэтому проблем никаких не должно быть (светодиоды также подтянуты к питанию).

А вот какие результаты моих вчерашних опытов.
Понизил скорость MDC с 1,5МГц до 750кГц.
Код
    /* Enable management port */
    AT91C_BASE_EMAC->EMAC_NCR |= AT91C_EMAC_MPE;    
    //AT91C_BASE_EMAC->EMAC_NCFGR |= ( 2 ) << 10;
    AT91C_BASE_EMAC->EMAC_NCFGR |= ( 3 ) << 10;

Проверял работу запросами на получение ID номеров чипа для всего диапазона номеров
Код
for (;;)
    {
      for (temp=1; temp<=31; temp++)
      {
        vTaskDelay(100);
          vReadPHY( temp, MII_PHYSID1, &ulPHYId1 );
          vReadPHY( temp, MII_PHYSID2, &ulPHYId2 );
        vUSBSendByte((ulPHYId1&0xFF));
        vUSBSendByte(((ulPHYId1&0xFF00)>>8));
        vUSBSendByte((ulPHYId2&0xFF));
        vUSBSendByte(((ulPHYId2&0xFF00)>>8));
      }
      vUSBSendByte(0xAA);
        vReadPHY( 31, 0, &ulPHYId1 );
      vUSBSendByte((ulPHYId1&0xFF));
      vUSBSendByte(((ulPHYId1&0xFF00)>>8));
    }

Результат, по сути, тот же, правда теперь вместо FF во многих местах начало возвращать 00.

Попробовал записать перед циклом чтения ID нужную конфигурацию в регистры чипа
Код
ulPHYId1=(1<<13)|(1<<12);
    vWritePHY( AT91C_PHY_ADDR, 0, &ulPHYId1 );
  vTaskDelay(12);
  ulPHYId1=(1<<15)|(1<<13)|(1<<12);
    vWritePHY( AT91C_PHY_ADDR, 0, &ulPHYId1 );
  vTaskDelay(12);
  ulPHYId1=(1<<15)|(1<<13)|(1<<12);
    vWritePHY( AT91C_PHY_ADDR, 0, &ulPHYId1 );
  vTaskDelay(12);
  ulPHYId1=(1<<13)|(1<<12);
    vWritePHY( AT91C_PHY_ADDR, 0, &ulPHYId1 );
  vTaskDelay(12);
  ulPHYId1=(1<<13)|(1<<12);
    vWritePHY( AT91C_PHY_ADDR, 0, &ulPHYId1 );
  vTaskDelay(12);
  ulPHYId1=(1<<13)|(1<<12);
    vWritePHY( AT91C_PHY_ADDR, 0, &ulPHYId1 );


Ничего не изменилось.

Ещё вспомнил одну вещь, когда я несколько дней назад смотрел сигналы на чипе осцилографом, то видел что на одной из ножек чипа, которая выходит на разъём сети при отключении кабеля постоянный уровень начинает периодически скакать в единицу, при подключении кабеля на этой ножке появляется генерация. Кроме того, если когда чип начал управлять светодиодами при подключенном кабеле дотронуться до кварца чипа светодиоды гаснут и через секунду наново загораются. Так выходит, что генератор запускается и внешняя часть работает.
Проблема в работе шины управления MDIO. Насколько я понимаю она работает и без работы 25МГц генератора, так как у неё клок идёт от MDC.
Кроме того, похоже что схемотехническое подключение правильное, так как такое же сделано в других рабочих системах.

Соответсвенно пока могу сделать только такие выводы. Либо я неправильно работаю на програмном уровне, но пока ошибки не нашёл. Либо что-то неправильно в разводке платы (то-ли наводки какие-то, то ли по питанию проблемы).

Сегодня после обеда будем дальше думать что делать, сравнивать с другими рабочими платами где используется такой чип. Когда найдём причины отпишу.
rustelcom
Безо всяких конфигураций читается ID - 8201 , при тактах=4мгц.

В смысле, 16 бит должны вернуться в формате 0x8201 .
OlegHmt
Несколько дней небыло возможности добраться до форума и написать чем окончилась эпопея.
Оказалося всё банально просто. При распайке платы вместо резистора подтягивающего шину MDIO запаяли конденсатор. Причина: паялось поглядывая на аналогичную плату где в этом месте оказался конденсатор с другой линии.
Теперь шина управления заработала. Правда была ещё проблема с запуском аналоговой части, но там то-ли кварц не запускался, то-ли микросхема сбоила - поменяли их и всё заработало.

Огромное спасибо всем за помощь. Извините, что не усмотрели свою ошибку.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.