|
Как запустить rtl8201bl, Управление от AT91SAM7X256 |
|
|
|
Dec 21 2006, 00:07
|
Участник

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

|
Уже ничего не соображаю  Собственно ситуация выглядит следующим образом: Разработку кода начал для платы от Олимекса. Там стоит микросхема от Микрела 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). Возможно я что-то не учёл, но вроде бы уже досконально изучил документацию, проверил схему, осцилографом посмотрел ножки конфигурации, вроде бы помехи нигде не пролазят. Разработчик платы, говорит, что этот чип физуровня именно в такой обвязке у него работает в другом устройстве где управление заводиться от ПЛИСок. Сделано три экземпляра платы, на всех одни и те же симптомы. Как можно ещё попробовать локализировать проблему? Даже не знаю она на уровне железа или программы. Помогите, пожалуйста  Спасибо
Сообщение отредактировал OlegHmt - Dec 21 2006, 00:07
|
|
|
|
2 страниц
< 1 2
|
 |
Ответов
(15 - 21)
|
Dec 21 2006, 17:28
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Ну и развели же вы флуд, господа! А главное, совершенно не по делу. OlegHmt: Генерация на кварце стабильна? Цитата(iosifk @ Dec 21 2006, 15:32)  Пока не скачаю хоть один из тестовых примеров от Реалтека - комментировать не буду. Вполне возможно, что у них в Реалтеке сделан симметричный выходной касакад. Но пока не получу пример, точно ничего не скажу. RTL8201 бывает аж 4-х типов, и в одном из них - RTL8201BL - средняя точка трансформатора висит в воздухе. Пример приложен. [attachment=8852:attachment] P.S. Я ничего не имею против Micrel, но не надо преподносить его как панацею.
|
|
|
|
|
Dec 21 2006, 17:35
|
Участник

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

|
По поводу подключения транса/коннектора к RTL8201BL : Когда начинали разработку FPGA+ethernet, искали коннектор с магнетикой. Одни знакомые сказали: "мы выпустили несколько тысяч изделий с RTL8201BL + LU1S041 по такой вот схеме..." Дейташита по подключению от производителей коннекторов/чипов не предоставили, но мы посчитали, что "несколько тысяч..." - весомый аргумент... Далее, ту же схему подключения увидели на визнетовском модуле для LU1T516-43, и опробовали... Смущает то, что для одного и того же чипа можно применять два разных трансформатора (LU1S041 и LU1T516-43) в одинаковом включени. И может быть это ещё вылезет боком Но неоспоримым фактом есть то, что у меня на столе в данный момент нормально работают две платы:одна - FPGA + RTL8201BL + LU1S041, вторая - такая же плата, но в ней - LU1T516-43!!!! Кто может прокоментировать - буду рад!
|
|
|
|
|
Dec 21 2006, 17:54
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(aaarrr @ Dec 21 2006, 17:28)  Ну и развели же вы флуд, господа! А главное, совершенно не по делу. Цитата(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
|
|
|
|
|
Dec 21 2006, 18:08
|
Гуру
     
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Dec 22 2006, 11:46
|
Участник

Группа: Участник
Сообщений: 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. Кроме того, похоже что схемотехническое подключение правильное, так как такое же сделано в других рабочих системах. Соответсвенно пока могу сделать только такие выводы. Либо я неправильно работаю на програмном уровне, но пока ошибки не нашёл. Либо что-то неправильно в разводке платы (то-ли наводки какие-то, то ли по питанию проблемы). Сегодня после обеда будем дальше думать что делать, сравнивать с другими рабочими платами где используется такой чип. Когда найдём причины отпишу.
|
|
|
|
|
Dec 22 2006, 14:31
|
Участник

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

|
Безо всяких конфигураций читается ID - 8201 , при тактах=4мгц.
В смысле, 16 бит должны вернуться в формате 0x8201 .
|
|
|
|
|
Dec 27 2006, 11:42
|
Участник

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

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