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

 
 
> Olimex/Startetkit LPC23/4 + RMII KS8721BL, Баги в схеме :(
zltigo
сообщение Sep 24 2008, 12:04
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Во всех китах Olimex и Starterkit для чипов LPC23xx и LPC24xx ошибка в подключении PHY KS8721BL в RMII Mode. К контроллеру подключен сигнал CRS (Carrier Sense), а не RXDV(CRS_DV - Carrier Sense/Data Valid). Результат плачевен - все фреймы принимаются с якобы битой CRC. Кстати, там по хорошему надо-бы этот сигнальчик к земле подтянуть, а то со встроенной в LPC PU подтяжкой при Reset потенциально могут быть проблемы.

P.S.
Поражает пофигизм разработчиков в обработке ошибок - описанные киты давно уже в продаже, на них написано всяких разных демок-приложений вплоть до Linux, а обрабатывать ошибки sad.gif, получается не заморачивается никто особо sad.gif. Уперся в баг, потратил пару дней, просмотрел интернет вдоль и поперек - кроме одного безответного вопроса на LPC2000 форуме - тишина......


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
haker_fox
сообщение Jul 1 2011, 15:48
Сообщение #2


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (zltigo @ Jun 29 2011, 18:02) *
чевидно sad.gif

Все заработало. Основная часть демок от Кейла пошла (web-сервера (Java, CGI), ping и т.п.).
Что было сделано:
1. В инициализации EMAC добавлена строка
CODE
MAC_MCFG = MCFG_HCLK_DIV_28;

после этих строк
CODE
  /* Initialize MAC control registers. */
  MAC_MAC1 = MAC1_PASS_ALL;
  MAC_MAC2 = MAC2_CRC_EN | MAC2_PAD_EN;
  MAC_MAXF = ETH_MAX_FLEN;
  MAC_CLRT = CLRT_DEF;
  MAC_IPGR = IPGR_DEF;

2. Естественно, в начале файла есть макрос
CODE
#define MCFG_HCLK_DIV_28      (7 << 2)

Саму инициализацию вообще не трогал (не за исключением добавления указанной строки), не знаю, правильно или нет. Но работает же.
3. По невнимательности для LPC2468 использовал стартовый код LPC2300.s. Заменил на LPC2400.s.
4. Адрес микросхемы PHY не менял, он был уже 0x0100 (1 << 8).
5. Выключил всю отладку сети (файл Net_Debug.c). Это угробляло всю библиотеку TCPnet в моем случае.

Ну и сменил IP на удобный для меня rolleyes.gif
Все пошло!!!))) Пинг меньше 1 мс. Сервера работают.
Сегодня запустил под осью RTX. Стандартный пример не смог запустить. Сделал свой. Правда пинг 8 - 30 мс. Но это связано с неправильным распределением приоритетов задач. Это я уже выяснил. Буду учиться и исправлять ситуацию.
Вот вроде и все.

Большое человеческое спасибо участникам за помощь!


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 1 2011, 19:37
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (haker_fox @ Jul 1 2011, 17:48) *
1. В инициализации EMAC добавлена строка
CODE
MAC_MCFG = MCFG_HCLK_DIV_28;

после этих строк
CODE
  /* Initialize MAC control registers. */
  MAC_MAC1 = MAC1_PASS_ALL;
  MAC_MAC2 = MAC2_CRC_EN | MAC2_PAD_EN;
  MAC_MAXF = ETH_MAX_FLEN;
  MAC_CLRT = CLRT_DEF;
  MAC_IPGR = IPGR_DEF;

2. Естественно, в начале файла есть макрос
CODE
#define MCFG_HCLK_DIV_28      (7 << 2)

Саму инициализацию вообще не трогал (не за исключением добавления указанной строки), не знаю, правильно или нет. Но работает же.
3. По невнимательности для LPC2468 использовал стартовый код LPC2300.s. Заменил на LPC2400.s.
4. Адрес микросхемы PHY не менял, он был уже 0x0100 (1 << 8).

Да, демописатели sad.gif. У меня даже для рабочего варианта поиск PHY производится, дабы не думать каждый раз..
CODE
int init_phy(void)
{
    MCFG = MCFG_HCLK_DIV_28|MCFG_RESET_MII_MGMT;
      vSmartDelay_ms( 2 );

#if( EMAC_CFG_RMII == 0 )
    MCOMMAND &= ~CR_RMII;
#else
    MCOMMAND |= CR_RMII;
#if defined __IOLPC2458_H
    SUPP = SUPP_RESET_MII;
#else
    SUPP = 0;                 // Assume and configure RMII link speed logic for 10Mbit
#endif
#endif

    for( int i = 0; i < 7; i++ )
    {    // Check dividers to yield MII frequency ~2.5 MHz
        if( ( (configCPU_CLOCK_HZ/100000L)/mii_dividers[i][0] ) <=  25 )
        {    MCFG = mii_dividers[i][1];        // Remove reset, set proper MIIM divider
            break;
        }
    }
    vSmartDelay_ms( 10 );    // Short delay while PHY exits reset and new divider is set

      for( phy_addr = 1; phy_addr <= 31; phy_addr++ )
      {   // Put PHY in reset mode
        write_PHY( PHY_REG_BMCR, BMCR_RESET );
        // Wait for hardware reset to end
        for( int i = 0; i < 128; i++ )
        {   vSmartDelay_ms( 1 );
            if( !(read_PHY( PHY_REG_BMCR ) & BMCR_RESET) )
            {    // Reset complete
                goto phy_found;
              }
        }
    }
    printst( "PHY:Missing " );
    return( 1 );

phy_found:
    {
    // Check if this is a valid PHY
      ulong id_phy = (read_PHY( PHY_REG_IDR1 )<<16)|read_PHY( PHY_REG_IDR2 );
    if( id_phy == KS8721BL_ID  )
        xprintf( "PHY%2X:KS8721BL ", phy_addr );
    else if( id_phy == KS8041TL_ID  )
        xprintf( "PHY%2X:KS8041TL ", phy_addr );
    else
    {    xprintf( "PHY%2X:%8X -Unknown ", phy_addr, id_phy );
         return( 2 );
    }
    }

      // Sanity check...
...........


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jul 2 2011, 08:36
Сообщение #4


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (zltigo @ Jul 2 2011, 04:37) *
Да, демописатели sad.gif. У меня даже для рабочего варианта поиск PHY производится, дабы не думать каждый раз..

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


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 14:45
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(haker_fox @ Jul 2 2011, 12:36) *
За исходник - спасибо! Поизучаю!


Какой-то индусокод. Представьте что адрес не 1 или 2 а 31 - сколько эта херня будет циклы накручивать с задержками ? Лучше нормальные открытые проекты изучайте.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2011, 18:25
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sasamy @ Jul 5 2011, 17:45) *
Какой-то индусокод. Представьте что адрес не 1 или 2 а 31 - сколько эта херня будет циклы накручивать с задержками ?

Если не умеете считать, то порядка 128ms на адрес. Один раз при инициализации. Зато будет найден любой. При необходимости экономить время и использовании 31 адреса все может быть постфактум скорректировано в конкретном рабочем исходнике. Именно такой подход к делу для ДЕМО кода является нормальным в отличии от забивания конкретного адреса, причем без комментариев, что это адрес.
QUOTE
Лучше нормальные открытые проекты изучайте.

Нормальных открытых нет. Один с относительно нормальным уровнем драйвера я уже в этом топике поминал.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 18:56
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(zltigo @ Jul 5 2011, 22:25) *
Если не умеете считать, то порядка 128ms на адрес. Один раз при инициализации. Зато будет найден любой. При необходимости экономить время и использовании 31 адреса все может быть постфактум скорректировано в конкретном рабочем исходнике. Именно такой подход к делу для ДЕМО кода является нормальным в отличии от забивания конкретного адреса, причем без комментариев, что это адрес.


Я как раз умею считать - для 31 адреса задержка составит 3 секунды - это нормально по-вашему ? Смысл не в том что вы ищете живой адрес а в том как вы это делаете - можно было в цикле заслать сброс по всем адресам без задержек, а потом опрашивать начианая с первого и если он не ответил, то для следующих задержки уже не нужны. В итоге задержка практически не будет зависеть от адреса а для 31 сократится в 30 (!) раз.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2011, 19:30
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sasamy @ Jul 5 2011, 21:56) *
можно было в цикле заслать сброс по всем адресам без задержек, а потом....

В результате получим много большую задержку для начального ОЖИДАЕМОГО адреса и более замысловатый код и более сложный для правки с целью получить из этого демо рабочий вариант.
Единственно, что, пожалуй следует изменить, это явно дефинировать ожидаемый адрес. Где-то так:
CODE
#define DEFAULT_PHY_ADDR (1)
  
    for( phy_addr = DEFAULT_PHY_ADDR;; )
      {   // Put PHY in reset mode
        write_PHY( PHY_REG_BMCR, BMCR_RESET );
        // Wait for hardware reset to end
        for( int i = 0; i < 128; i++ )
        {   vSmartDelay_ms( 1 );
            if( !(read_PHY( PHY_REG_BMCR ) & BMCR_RESET) )
            {    // Reset complete
                goto phy_found;
              }
        }
        phy_addr = ( phy_addr + 1 ) & 0x1F;
        if( phy_addr == DEFAULT_PHY_ADDR )
                           {    printst( "PHY:Missing " );
                                 return( 1 );
        }
        
    }

Достаточно изменить DEFAULT_PHY_ADDR на желаемый и получаем максимально быстрый рабочий вариант, который тем не менее обеспечит поиск при запуске демки или каких-то монтажных ошибок


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 20:16
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(zltigo @ Jul 5 2011, 23:30) *
В результате получим много большую задержку для начального ОЖИДАЕМОГО адреса и более замысловатый код и более сложный для правки с целью получить из этого демо рабочий вариант.


Вы о чем вообще ? вот ваш подправленый код

Код
    for (phy_addr = 1; phy_addr <= 31; phy_addr++)
        // Put PHY in reset mode
        write_PHY(PHY_REG_BMCR, BMCR_RESET);

    phy_addr = 1;

    for (int i = 0; i < 128; i++) {  
        if (!(read_PHY( PHY_REG_BMCR ) & BMCR_RESET))
            // Reset complete
            goto phy_found;
        vSmartDelay_ms(1);
    }
    
    for (phy_addr = 2; phy_addr <= 31; phy_addr++) {
        if (!(read_PHY(PHY_REG_BMCR) & BMCR_RESET))
            goto phy_found;
    }
    
    printst("PHY:Missing ");
    return (1);
      
phy_found:


Цитата
for( phy_addr = DEFAULT_PHY_ADDR;; )


Это вообще цирк - зачем тогда поиск адреса нужен sm.gif

Сообщение отредактировал sasamy - Jul 5 2011, 20:21
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2011, 20:20
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sasamy @ Jul 5 2011, 23:16) *
Вы о чем вообще ?

О том, что написал.
QUOTE
вот ваш подправленый код

Я понял Вашу мысль и достаточно четко на мой взгляд написал, почему меня такая правка НЕ устраивает. Подправленный код тоже привел. Ознакомьтесь для начала.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 20:24
Сообщение #11


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(zltigo @ Jul 6 2011, 00:20) *
О том, что написал.

Я понял Вашу мысль и достаточно четко на мой взгляд написал, почему меня такая правка НЕ устраивает. Подправленный код тоже привел. Ознакомьтесь для начала.


Я немного опоздал с ответом - в общем это очередная индусятина - собственно то что вы ставили во главу сначала (а это перебрать и найти ЛЮБОЙ адрес даже если ошибка в физике) вдруг отошло на второй план и появился костыль который гробит всю идею на корню
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2011, 20:35
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sasamy @ Jul 5 2011, 23:24) *
в общем это очередная индусятина

бла, бла, бла....
QUOTE
собственно то что вы ставили во главу сначала (а это перебрать и найти ЛЮБОЙ адрес даже если ошибка в физике) вдруг отошло на второй план

Было и есть на переднем плане. Во главе угла нормально без лишних рассылок ресетов и прочих ЛИШНИХ телодвижений инициализировать PHY. Если вдруг PHY не нашелся на том адресе, на котором должен быть, то тогда искать. Это НЕ штатный режим и время не имеет значения. Значение-же, для той-же демки имеет понятность и минимально-достаточное количество действий при инициализации. Дивная посылка кучи НЕНУЖНЫХ ресетов может в демке разве только сбить с толку читающего и замаскировать ту самую необходимо-достаточную процедуру инициализации PHY. Кстати, о времени, vSmartDelay_ms() это при работающем шедулере и не при вызове из Idle не задержка, а переключение на другую задачу. До кучи у меня нет зависимости от наличия в функции write_PHY() ожидания окончания транзакции. Отсутствие такого ожидания тоже встречалось в халявных демках sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 20:41
Сообщение #13


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(zltigo @ Jul 6 2011, 00:35) *
бла, бла, бла....


Честно говоря - мне нечего добавить. Учить Вас с таким самомнением бесполезно и поздно, тем более что-то доказывать - я даже не расчитывал что вы согласитесь что код у вас говенный sm.gif

Сообщение отредактировал sasamy - Jul 5 2011, 20:43
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 5 2011, 21:20
Сообщение #14


Гуру
******

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



Цитата(sasamy @ Jul 6 2011, 00:41) *
...даже не расчитывал что вы согласитесь что код у вас говенный sm.gif

Ваше "исправление" смотрится гораздо более убого "очередной индусятины", ибо не предполагает удобную смену дефолтного адреса, коли уж на то пошло.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 21:34
Сообщение #15


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(aaarrr @ Jul 6 2011, 01:20) *
Ваше "исправление" смотрится гораздо более убого "очередной индусятины", ибо не предполагает удобную смену дефолтного адреса, коли уж на то пошло.


Еще один. Для нервнодышащих, вот исходное сообщение
http://electronix.ru/forum/index.php?showt...st&p=947034
покажите мне - какой там дефолтный адрес. Если он так нужен - пожалуйста, смысл ведь не в этом.
Код
#define DEFAULT_PHY_ADDR (1)

    for (phy_addr = 1; phy_addr <= 31; phy_addr++)
        // Put PHY in reset mode
        write_PHY(PHY_REG_BMCR, BMCR_RESET);

    phy_addr = DEFAULT_PHY_ADDR;

    for (int i = 0; i < 128; i++) {  
        if (!(read_PHY( PHY_REG_BMCR ) & BMCR_RESET))
            // Reset complete
            goto phy_found;
        vSmartDelay_ms(1);
    }
    
    for (phy_addr = 1; phy_addr <= 31; phy_addr++) {
        if ((phy_addr != DEFAULT_PHY_ADDR) &&  (!(read_PHY(PHY_REG_BMCR) & BMCR_RESET)))
            goto phy_found;
    }
    
    printst("PHY:Missing ");
    return (1);
      
phy_found:
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2011, 22:05
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sasamy @ Jul 6 2011, 00:34) *
....


CODE
    for (phy_addr = 1; phy_addr <= 31; phy_addr++)
        // Put PHY in reset mode
        write_PHY(PHY_REG_BMCR, BMCR_RESET);

1. Нет сброса по 0 адресу.
2. Тратится время на бездумную передачу 30(31) команды сброса по последовательному интерфейсу все зависимости потребуются они в последствии или нет. Соответственно эти пустые действия непонятны для изучающего вольного предположить в их наличии
какой-то смысл.
3. Если в функции write_PHY() нет ожидания окончания транзакции будет облом.
CODE
    for (phy_addr = 1; phy_addr <= 31; phy_addr++) {
        if ((phy_addr != DEFAULT_PHY_ADDR) &&  (!(read_PHY(PHY_REG_BMCR) & BMCR_RESET)))
            goto phy_found;
    }

1. Опять нет контроля по 0 адресу.
2. (phy_addr != DEFAULT_PHY_ADDR) && лишнее украшение.

QUOTE (sasamy @ Jul 6 2011, 00:54) *
Собственно исправление автора еще более убого чем начальный вариант - он теряет смысл, потому что весь диапазон адресов не будет проверен.

Как оказалось, чукча не только не "писатель", но и не "читатель" sad.gif - типа чисто "критик". Диапазон адресов проверяется весь начиная DEFAULT_PHY_ADDR.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 22:18
Сообщение #17


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(zltigo @ Jul 6 2011, 01:59) *
Код
    for (phy_addr = 1; phy_addr <= 31; phy_addr++)
        // Put PHY in reset mode
        write_PHY(PHY_REG_BMCR, BMCR_RESET);

1. Нет сброса по 0 адресу.


Вообще-то это была копипаста с вашего кода, так что претензии не ко мне sm.gif

Цитата
2. Тратится время на бездумную передачу 30(31) команды сброса по последовательному интерфейсу все зависимости потребуются они в последствии или нет.


Вы их точно так же делаете, только в некоторых случаях меньше. На этом последовательном интерфейсе 25 МГц, а у вас первая же задержка 1 мс - о чем вообще может быть речь, эти команды пролетят когда она еще не закончится.

Цитата
3. Если в функции write_PHY() нет ожидания окончания транзакции будет облом.


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

Цитата
(phy_addr != DEFAULT_PHY_ADDR) && лишнее украшение.


Ну с этим согласен - прочитать лишний раз регистр - раз плюнуть.

Сообщение отредактировал sasamy - Jul 5 2011, 22:20
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2011, 22:39
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sasamy @ Jul 6 2011, 01:18) *
Вообще-то это была копипаста с вашего кода, так что претензии не ко мне sm.gif

Кто-то взялся править, причем после публикации моего подчищенного, но не сумел.
QUOTE
Вы их точно так же делаете, только в некоторых случаях меньше.

При штатном течении инициализации ровно один необходимо-достаточный сброс вместо 32.
QUOTE
На этом последовательном интерфейсе 25 МГц

Вы не знаете и типичных скоростей MDIO интерфейсов в PHY sad.gif. Ошибка на порядок.
QUOTE
я хотел всего лишь показать смысл моего замечания - тратится слишком много времени на ненужные ожидания

только в случае НЕШТАТНОЙ ситуации с PHY. Вместо этого Вы добавили те самые ненужные действия требующие времени и для случая штатной инициализации. Затраты времени меня особо не смущают, но порожден еще и тот самый говнокод ( делающий что-то зачем-то ) sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 5 2011, 22:46
Сообщение #19


Гуру
******

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



Цитата(zltigo @ Jul 6 2011, 02:39) *
что-то зачем-то

Вот заодно и спрошу: зачем сброс? Вопрос без всякой подковырки, просто интересно.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2011, 23:22
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (aaarrr @ Jul 6 2011, 01:46) *
Вот заодно и спрошу: зачем сброс? Вопрос без всякой подковырки, просто интересно.

Для порядка, дабы функция инициализации всегда делала все возможное включая инициализацию PHY и после софтового сброса контроллера, если нет аппаратного сброса. Но прежде всего это ведь тест на наличие любого PHY - бит должен самосброситься по окончанию инициализации PHY. Другое дело, что время ожидания очистки в 128ms скорее всего великовато, но с другой стороны оно обычно никак не нормируется производителем PHY sad.gif. Далее еще, после чтения идентификатора, но перед инициализацией, производятся чтения default значений из регистров PHY. Это тоже диагностика PHY. Порядка 10 лет работы в качестве разработчика диагностических комплексов на VEF-е оставили хорошую привычку, в том числе при POST, делать всю диагностику по максимуму.
QUOTE (sasamy @ Jul 6 2011, 01:58) *
...достаточно открыть любой даташит.

Открыть, почитать, подумать...., допустить мысль, что кто-то тоже обладает разумом. Только очевидно это не всем дано - лучше сразу писать первое, что придет в голову sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- zltigo   Olimex/Startetkit LPC23/4 + RMII KS8721BL   Sep 24 2008, 12:04
- - Quasar   Цитата(zltigo @ Sep 24 2008, 16:04) Во вс...   Sep 25 2008, 19:18
|- - zltigo   Цитата(Quasar @ Sep 25 2008, 21:18) Я с э...   Sep 25 2008, 19:24
|- - Quasar   Цитата(zltigo @ Sep 25 2008, 23:24) ...   Sep 25 2008, 19:59
- - Vitaliy_ARM   Хорошо, что в свое время я купил демоплату у Embed...   Sep 26 2008, 14:07
|- - zltigo   Цитата(Vitaliy_ARM @ Sep 26 2008, 16:07) ...   Sep 26 2008, 15:08
|- - Vitaliy_ARM   Цитата(zltigo @ Sep 26 2008, 19:08) Если ...   Sep 27 2008, 11:15
|- - zltigo   Цитата(Vitaliy_ARM @ Sep 27 2008, 13:15) ...   Sep 27 2008, 11:58
|- - Vitaliy_ARM   Цитата(zltigo @ Sep 27 2008, 15:58) VDDA_...   Sep 27 2008, 13:03
|- - zltigo   Цитата(Vitaliy_ARM @ Sep 27 2008, 15:03) ...   Sep 27 2008, 13:08
- - lebiga   Цитата(zltigo @ Sep 24 2008, 15:04) Во вс...   Oct 1 2008, 07:26
|- - zltigo   Цитата(lebiga @ Oct 1 2008, 09:26) И еще ...   Oct 1 2008, 07:36
|- - lebiga   Цитата(zltigo @ Oct 1 2008, 10:36) Да на ...   Oct 1 2008, 07:57
|- - zltigo   Цитата(lebiga @ Oct 1 2008, 09:57) это вс...   Oct 1 2008, 08:04
|- - lebiga   Да, сам себя накрутил, где-то взял этот код... Ког...   Oct 1 2008, 10:48
- - virfis   У меня olimex LPC-E2468 с KS8721BL не проходит ини...   Oct 16 2008, 12:08
|- - defunct   На практике действительно так нужен RMII? PHY толь...   Oct 16 2008, 22:52
- - aaarrr   За наличие RMII и версии с индустриальным диапазон...   Oct 16 2008, 22:58
|- - defunct   Я нашел эту разницу и пост удалил. Поворчал по дру...   Oct 16 2008, 23:02
|- - Alexandro   Цитата(aaarrr @ Oct 17 2008, 01:58) Впроч...   Oct 17 2008, 11:49
|- - defunct   Цитата(Alexandro @ Oct 17 2008, 13:49) Не...   Nov 2 2008, 02:48
|- - zltigo   Цитата(defunct @ Nov 2 2008, 05:48) Эта д...   Nov 2 2008, 08:45
- - virfis   В чем разница RMII и MII? Может у меня поэтому не ...   Oct 17 2008, 08:03
|- - mdmitry   Цитата(virfis @ Oct 17 2008, 12:03) В чем...   Oct 17 2008, 10:32
- - haker_fox   QUOTE (zltigo @ Sep 24 2008, 21:04) Во вс...   Jun 27 2011, 06:29
- - haker_fox   Перерезал дорожку. Припоял перемычку. Лучше на ста...   Jun 29 2011, 08:13
|- - zltigo   QUOTE (haker_fox @ Jun 29 2011, 10:13) Пе...   Jun 29 2011, 09:02
- - Lotor   На счет драйвера я отписал тут, думаю поможет - ht...   Jun 29 2011, 09:45
|- - haker_fox   QUOTE (Lotor @ Jun 29 2011, 18:45) На сче...   Jun 30 2011, 00:53
|- - Lotor   Цитата(haker_fox @ Jun 30 2011, 04:53) Мо...   Jun 30 2011, 04:12
|- - haker_fox   QUOTE (Lotor @ Jun 30 2011, 13:12) Должна...   Jun 30 2011, 05:28
||- - Lotor   Цитата(haker_fox @ Jun 30 2011, 09:28) Пр...   Jun 30 2011, 06:15
||- - haker_fox   QUOTE (Lotor @ Jun 30 2011, 15:15) Ничего...   Jun 30 2011, 06:32
||- - sadfeel   Цитата(Lotor @ Jun 30 2011, 09:15) Ничего...   Jul 5 2011, 07:10
|- - yakub_EZ   Цитата(Lotor @ Jun 30 2011, 08:12) У меня...   Jun 30 2011, 08:01
|- - Lotor   Цитата(yakub_EZ @ Jun 30 2011, 12:01) Что...   Jun 30 2011, 08:07
|- - yakub_EZ   Цитата(Lotor @ Jun 30 2011, 12:07) От Чан...   Jun 30 2011, 08:21
|- - Lotor   Цитата(yakub_EZ @ Jun 30 2011, 12:21) Хм....   Jun 30 2011, 09:44
- - yakub_EZ   Демка не простая, а заточенная под стартеркит   Jun 30 2011, 09:56
|- - Lotor   Цитата(yakub_EZ @ Jun 30 2011, 13:56) Дем...   Jun 30 2011, 11:04
|- - zltigo   QUOTE (haker_fox @ Jul 2 2011, 10:36) Вид...   Jul 2 2011, 09:59
||- - haker_fox   QUOTE (zltigo @ Jul 2 2011, 18:59) PHY по...   Jul 2 2011, 12:41
|- - zltigo   QUOTE (sasamy @ Jul 5 2011, 23:41) ...сог...   Jul 5 2011, 20:46
|- - aaarrr   Цитата(sasamy @ Jul 6 2011, 01:34) Еще од...   Jul 5 2011, 21:43
||- - sasamy   Цитата(aaarrr @ Jul 6 2011, 01:43) Я разв...   Jul 5 2011, 21:54
||- - aaarrr   Цитата(sasamy @ Jul 6 2011, 01:54) Собств...   Jul 5 2011, 21:56
|- - aaarrr   Цитата(sasamy @ Jul 6 2011, 02:18) На это...   Jul 5 2011, 22:30
||- - sasamy   Цитата(aaarrr @ Jul 6 2011, 02:30) 2.5МГц...   Jul 5 2011, 22:34
|- - sasamy   Цитата(zltigo @ Jul 6 2011, 02:39) Вы не ...   Jul 5 2011, 22:58
- - IgorKossak   Удалил лишнее. Прошу придерживаться рамок темы, хо...   Jul 6 2011, 20:04
- - Lotor   Не про RMII KS8721BL, зато про Olimex/Startetkit ...   Jul 7 2011, 06:34
- - aaarrr   Цитата(Lotor @ Jul 7 2011, 10:34) Проблем...   Jul 7 2011, 10:22
|- - Lotor   Цитата(aaarrr @ Jul 7 2011, 14:22) В этом...   Jul 8 2011, 07:07
- - FinaC   Цитата(Lotor @ Jul 7 2011, 12:34) Не про ...   Aug 10 2011, 06:07


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

 


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


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