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

 
 
 
Reply to this topicStart new topic
> RTL8201, помогите заинициализировать:)
InsolentS
сообщение Jul 8 2007, 09:06
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 414
Регистрация: 8-06-06
Пользователь №: 17 897



Здравствуйте!:)
Имеется девайс на AT91SAM7X256+RTL8201BL+разьём RD1-1D5B1A1A.
Пытаюсь инициализировать на основе атмеловского кода для DM9161, но ничего не получаетсяsad.gif
Как я понял, данная связка(SAM7X+RTL8201) очень популярная на этом форуме, может у кого-нибудь завалялся кусочек кода?wink.gif

P.S. ещё вопросец, как микросхемы типа визнет без проблем работают с любым PHY, может есть какой-нибудь универсальный код?


--------------------
Курильщик даташитов со стажем
Go to the top of the page
 
+Quote Post
InsolentS
сообщение Jul 8 2007, 20:26
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 414
Регистрация: 8-06-06
Пользователь №: 17 897



люди добрые, помогите плиззззз....проект встал, а мне его сдавать месяц назад :'(


--------------------
Курильщик даташитов со стажем
Go to the top of the page
 
+Quote Post
Gemm
сообщение Jul 9 2007, 13:23
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 61
Регистрация: 2-08-05
Из: Коломна
Пользователь №: 7 283



Цитата(InsolentS @ Jul 9 2007, 00:26) *
люди добрые, помогите плиззззз....проект встал, а мне его сдавать месяц назад :'(


Вот так я делаю. Сначала ресет, ждем его завершения. Потом разрешаю auto negatiation, ждем завершения. На физикле загорается светодиодик. Потом из регистров физикла читаем скорость и дуплекс. Может что и не совсем рационально - но все работает.




Код
#ifdef RTL8201
  
  #define MII_BMSR_REG          0x01
  #define MII_ANLPAR_REG        0x05
  
  unsigned short stat1, stat;
  
  stat = AT91F_MII_ReadPhy(pEmac, 0x00);
  AT91F_MII_WritePhy(pEmac, 0x00, stat | 0x8000);       //  reset
  do
    stat = AT91F_MII_ReadPhy(pEmac, 0x00);
  while(stat & 0x8000);
  dbgu_out("PHY reset completed.\n\r");
  AT91F_MII_WritePhy(pEmac, 0x00, stat | 0x1000);       //  auto negotiation enabled
  do
    stat = AT91F_MII_ReadPhy(pEmac, 0x01);              //  auto neg. completed
  while(!(stat & 0x20));  
  dbgu_out("PHY auto negotiation completed.\n\r");
  
  stat = AT91F_MII_ReadPhy(pEmac, MII_BMSR_REG);
  stat1 = AT91F_MII_ReadPhy(pEmac, MII_ANLPAR_REG);
  
  if ((stat & (1 << 14)) && (stat1 & (1 << 8)) ) {
    pEmac->EMAC_CFG |= (AT91C_EMAC_SPD| AT91C_EMAC_FD);
    dbgu_out("set MII for 100BaseTX and Full Duplex\n\r");
  } else if ((stat & (1 << 12)) && (stat1 & (1 << 6)) ) {
    pEmac->EMAC_CFG = (pEmac->EMAC_CFG & AT91C_EMAC_SPD) | AT91C_EMAC_FD;
    dbgu_out("set MII for 10BaseT and Full Duplex\n\r");
  } else if ((stat & (1 << 13)) && (stat1 & (1 << 7)) ) {
    pEmac->EMAC_CFG = (pEmac->EMAC_CFG | AT91C_EMAC_SPD ) & ~AT91C_EMAC_FD;
    dbgu_out("set MII for 100BaseTX and Half Duplex\n\r");
  } else if ((stat & (1 << 11)) && (stat1 & (1 << 5)) ) {
    pEmac->EMAC_CFG = pEmac->EMAC_CFG & ~AT91C_EMAC_SPD & ~AT91C_EMAC_FD;
    dbgu_out("set MII for 10BaseT and Half Duplex\n\r");          
  }
  
  
#else
Go to the top of the page
 
+Quote Post
_dem
сообщение Jul 10 2007, 07:11
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 2-02-07
Из: CN, Ukraine
Пользователь №: 24 970



на основе Атмеловского кода все вроде бы нормально работает. нужно поменять 2 вещи - это
id физики - у DM 0x181b8a0, у RTL - 0x00225540
и задержку резета - вместо (1 << 8) поставь в подобном этому коде

Код
    /* After PHY power up, hardware reset. */
    AT91C_BASE_RSTC->RSTC_RMR = emacRESET_KEY | emacRESET_LENGTH;
    AT91C_BASE_RSTC->RSTC_RCR = emacRESET_KEY | AT91C_RSTC_EXTRST;


( 9 << 8)

и все


остальное все идентично


да, и не забудь проверить аппаратный адрес, который задается ножками физикла

Сообщение отредактировал _dem - Jul 10 2007, 07:12
Go to the top of the page
 
+Quote Post
InsolentS
сообщение Jul 10 2007, 07:14
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 414
Регистрация: 8-06-06
Пользователь №: 17 897



Всем огромное, огромное спасибо!!! smile.gif с меня пиво beer.gif


--------------------
Курильщик даташитов со стажем
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th June 2025 - 18:50
Рейтинг@Mail.ru


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