Перейти к содержанию
    

AVR + CP2200 от SiLabs

Всем привет.

СР2200 - это Ethernet контроллер от SiLabs. Собрал девайс на АТмега16+СР2200, законнектился с чипом, пишу читаю регистры, все нормально, только вот когда включаю приемник и передатчик, то на выходе передатчика нет импульсов линка, а приемник с чего-то думает что подключен к сетке и светит светодиодом, который показывает что есть линк, хотя при этом кабель не подключен вообще. Может кто работал с этим зверем и сталкивался с подобным? Или может слышал о такой проблеме? Нужен срочно хелп, потому что служба техподдержки SiLabs ушла в отказ, сказали что они не работают с Атмелом и поэтому помочь не могут, а время идет. Всем откликнувшимся заранее спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я подключал CP2200 и CP2201 к ARM LPC2129 и LPC2103

 

у меня вроде была такая фишка с LINKом пока я не стал запускать auto-negotiation

 

в общем инициализация у меня выглядит примерно так:

  //reset CP220x
  cpReadByte(INT0); //clear INT0
  cpWriteByte(SWRST,4);
  while (!(cpReadByte(INT0)& 0x20)); //wait for reset complete

  cpWriteByte(IOPWR,0x0C);

//PHY INIT
  cpWriteByte(PHYCF,0xFE);
  cpWriteByte(PHYCN,0x00);
  Delay(1);
  r=INT1;
  cpWriteByte(PHYCN,0x80);
  Delay(1);
  cpWriteByte(PHYCN,0xE0);
  Delay(75);

  while (!(cpReadByte(INT1)& 0x01));

  while (!(cpReadByte(PHYCN)& 0x01));


//MAC INIT
  cpWriteMac(MACCF,0xB3);
  cpWriteMac(IPGT,0x15);
  cpWriteMac(IPGR,0x0C12);

  cpWriteByte(FLASHADDRL,0xFA);
  cpWriteByte(FLASHADDRH,0x1F);
  Tmp=cpReadByte(FLASHAUTORD);
  Tmp|=cpReadByte(FLASHAUTORD)<<8;
  cpWriteMac(MACAD2,Tmp);
  Tmp=cpReadByte(FLASHAUTORD);
  Tmp|=cpReadByte(FLASHAUTORD)<<8;
  cpWriteMac(MACAD1,Tmp);
  Tmp=cpReadByte(FLASHAUTORD);
  Tmp|=cpReadByte(FLASHAUTORD)<<8;
  cpWriteMac(MACAD0,Tmp);

  cpWriteMac(MACCN,0x01);

 

тут соотв. cpReadByte и cpWriteByte этщ чтение и запись в регистры

cpWriteMac запись в MAC регистры:

static void cpWriteMac(uint8_t Addr,uint16_t r)
{
  cpWriteByte(MACADDR,Addr);
  cpWriteByte(MACDATAH,r>>8);
  cpWriteByte(MACDATAL,r);
  cpWriteByte(MACRW,0);
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

СПАСИБО ОГРОМНОЕ! Хрен бы когда догадался что нужно обязательно включать автонегоциацию для того чтобы девайс хоть как-то начал жить! Я, блин уже 2 недели сижу над этой проблемой, уже чип заменил... Вот клоуны! А что делать если я нехочу автоопределние включать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, совсем забыл спросить... Какие впечатления от использования чипа? Хотелось бы отзывы услышать. И как настроить его на прием пакетов предназначенных только ему, только с его МАС адресом?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

СПАСИБО ОГРОМНОЕ! Хрен бы когда догадался что нужно обязательно включать автонегоциацию для того чтобы девайс хоть как-то начал жить! Я, блин уже 2 недели сижу над этой проблемой, уже чип заменил... Вот клоуны! А что делать если я нехочу автоопределние включать?

Я не знаю :)

 

Вообще там есть много непонятных моментов!

 

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

http://electronix.ru/forum/index.php?showtopic=14993

 

 

Сейчас я практически все поборол.

Из оставшихся фич - если происходит переполнение (например принят паке а все 8 TLB заняты) то он перестает принимать пакеты (можно выгрести 8 которые были уже, а больше .....) как очистить это состояние я еще не придумал (все руки не доходят)

 

 

А так чип вполне приличный!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чтобы преполнения не было нужно после чтения каждого пакета из буфера очищать его через запись бита RXSKIP в регистр RXCN.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чтобы преполнения не было нужно после чтения каждого пакета из буфера очищать его через запись бита RXSKIP в регистр RXCN.

 

Это то понятно :) у меня его обычно и не возникает, но вот при отладке ... иногда возникает переполнение (пока по шагам шагаешь)

 

главное после этого все работает и пакеты можно посылать

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Повозился с чипом с этим и ужас как много непонятных мест. Допустим с добавлением CRC в конец пакета. Добавляет всегда, даже когда CRCEN = 0 в регистре MACCF, а после приема этого пакета Ethereal-ом он говорит что контрольная сумма пакета неправильная. И с приемом пакетов какая-то ерунда... Сделал все как в описании, но что-то некорректно работает прием. Может есть какие-то хитрости, которыми Вы можете поделиться? Заранее спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделал все как в описании, но что-то некорректно работает прием. Может есть какие-то хитрости, которыми Вы можете поделиться? Заранее спасибо.

 

Я определяю наличие пакета не по биту RXOK (который кстати непонятно где находится толи в CPINFOH, толи CPINFOL) а по регистру TLBVALID.

 

Считываю TLBVALID и если он 0 то пакетов нет, если не 0 то уже тогда читаю CPINFOH, CPINFOL и работаю с пакетом через RXAUTORD

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В новой версии описания на СР2200 написано что RXAUTORD используется только для Half Duplex, а так нужно только через буфер самому рулить...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В новой версии описания на СР2200 написано что RXAUTORD используется только для Half Duplex, а так нужно только через буфер самому рулить...

Действительно лежит новый даташит rev 0.3

И там добавили бит RXVALID и надо смотреть по RXVALID & RXOK

 

Еще главное добавили как продолжить принимать пакеты после переполнения

 

 

Но вот про то что RXAUTORD используется только для Half Duplex я там не нашел

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2KRS

А не могли бы поделиться примером инициализации для приема пакетов, предназначенных только для данного МАС-адреса и широковещательных пакетов, а то у меня что-то не получается, принимает все к ряду и с настройками не могу разобраться. И еще насчет CRC вконце пакета отправляемого - лепит его туда чтобы я не делал и как-то неустойчиво на пинг отвечает, хотя и проверяю TLBVALID. И еще CRC какой-то неправильный генерит вконце пакета, потому что Ethereal-ом принимаю, в пакете все правильно, контрольные суммы и т.д, а на приаттачиный CRC ругается, говорит что не такой должен быть. Заранее спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2KRS

А не могли бы поделиться примером инициализации для приема пакетов, предназначенных только для данного МАС-адреса и широковещательных пакетов, а то у меня что-то не получается, принимает все к ряду и с настройками не могу разобраться. И еще насчет CRC вконце пакета отправляемого - лепит его туда чтобы я не делал и как-то неустойчиво на пинг отвечает, хотя и проверяю TLBVALID. И еще CRC какой-то неправильный генерит вконце пакета, потому что Ethereal-ом принимаю, в пакете все правильно, контрольные суммы и т.д, а на приаттачиный CRC ругается, говорит что не такой должен быть. Заранее спасибо.

 

Так вроде никакой специальной инициализации не надо! После ресета все настроено на прием броадкастовых пакетов и для данного MAC.

с CRC у меня никаких проблем не было!

а вы длинну и данные отпраляемого пакета проверили?

(если лишнии данные напихать тогда может съехать все)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так вроде никакой специальной инициализации не надо! После ресета все настроено на прием броадкастовых пакетов и для данного MAC.

с CRC у меня никаких проблем не было!

а вы длинну и данные отпраляемого пакета проверили?

(если лишнии данные напихать тогда может съехать все)

 

Да вроде все с длиной нормально, попробую еще проверить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...