реклама на сайте
подробности

 
 
> Как запустить rtl8201bl, Управление от AT91SAM7X256
OlegHmt
сообщение Dec 21 2006, 00:07
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 5-12-06
Пользователь №: 23 146



Уже ничего не соображаю 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

Спасибо

Сообщение отредактировал OlegHmt - Dec 21 2006, 00:07
Go to the top of the page
 
+Quote Post
2 страниц V  < 1 2  
Start new topic
Ответов (15 - 21)
aaarrr
сообщение Dec 21 2006, 17:28
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Ну и развели же вы флуд, господа! А главное, совершенно не по делу. blink.gif

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

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

RTL8201 бывает аж 4-х типов, и в одном из них - RTL8201BL - средняя точка трансформатора висит в воздухе. Пример приложен.
[attachment=8852:attachment]

P.S. Я ничего не имею против Micrel, но не надо преподносить его как панацею.
Go to the top of the page
 
+Quote Post
RIYA
сообщение Dec 21 2006, 17:35
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 26-10-06
Из: Ukraine, Lviv
Пользователь №: 21 690



По поводу подключения транса/коннектора к RTL8201BL :

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

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

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

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


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


Кто может прокоментировать - буду рад!
Go to the top of the page
 
+Quote Post
iosifk
сообщение Dec 21 2006, 17:54
Сообщение #18


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



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

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

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

RTL8201 бывает аж 4-х типов, и в одном из них - RTL8201BL - средняя точка трансформатора висит в воздухе. Пример приложен.
[attachment=8852:attachment]

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


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

И прошу сообщить мне, когда положение изменится...
Удачи!


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 21 2006, 18:08
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(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.
Go to the top of the page
 
+Quote Post
OlegHmt
сообщение Dec 22 2006, 11:46
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 5-12-06
Пользователь №: 23 146



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

А вот какие результаты моих вчерашних опытов.
Понизил скорость 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.
Кроме того, похоже что схемотехническое подключение правильное, так как такое же сделано в других рабочих системах.

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

Сегодня после обеда будем дальше думать что делать, сравнивать с другими рабочими платами где используется такой чип. Когда найдём причины отпишу.
Go to the top of the page
 
+Quote Post
rustelcom
сообщение Dec 22 2006, 14:31
Сообщение #21


Участник
*

Группа: Свой
Сообщений: 29
Регистрация: 19-01-05
Пользователь №: 2 052



Безо всяких конфигураций читается ID - 8201 , при тактах=4мгц.

В смысле, 16 бит должны вернуться в формате 0x8201 .
Go to the top of the page
 
+Quote Post
OlegHmt
сообщение Dec 27 2006, 11:42
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 5-12-06
Пользователь №: 23 146



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

Огромное спасибо всем за помощь. Извините, что не усмотрели свою ошибку.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 10:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.05458 секунд с 7
ELECTRONIX ©2004-2016