Jump to content
    

AVR + CP2200 от SiLabs

Всем привет.

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

Share this post


Link to post
Share on other sites

Я подключал 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);
}

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Я не знаю :)

 

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

 

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

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

 

 

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

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

 

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

 

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

 

 

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

Share this post


Link to post
Share on other sites

2KRS

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

Share this post


Link to post
Share on other sites

2KRS

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

 

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

 

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...