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

 
 
 
Reply to this topicStart new topic
> AVR + CP2200 от SiLabs
MSprut
сообщение Jun 15 2006, 08:36
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 225
Регистрация: 25-04-06
Из: Украина, Луганск
Пользователь №: 16 476



Всем привет.
СР2200 - это Ethernet контроллер от SiLabs. Собрал девайс на АТмега16+СР2200, законнектился с чипом, пишу читаю регистры, все нормально, только вот когда включаю приемник и передатчик, то на выходе передатчика нет импульсов линка, а приемник с чего-то думает что подключен к сетке и светит светодиодом, который показывает что есть линк, хотя при этом кабель не подключен вообще. Может кто работал с этим зверем и сталкивался с подобным? Или может слышал о такой проблеме? Нужен срочно хелп, потому что служба техподдержки SiLabs ушла в отказ, сказали что они не работают с Атмелом и поэтому помочь не могут, а время идет. Всем откликнувшимся заранее спасибо.
Go to the top of the page
 
+Quote Post
KRS
сообщение Jun 15 2006, 10:09
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Я подключал 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);
}
Go to the top of the page
 
+Quote Post
MSprut
сообщение Jun 15 2006, 10:26
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 225
Регистрация: 25-04-06
Из: Украина, Луганск
Пользователь №: 16 476



СПАСИБО ОГРОМНОЕ! Хрен бы когда догадался что нужно обязательно включать автонегоциацию для того чтобы девайс хоть как-то начал жить! Я, блин уже 2 недели сижу над этой проблемой, уже чип заменил... Вот клоуны! А что делать если я нехочу автоопределние включать?
Go to the top of the page
 
+Quote Post
MSprut
сообщение Jun 15 2006, 10:51
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 225
Регистрация: 25-04-06
Из: Украина, Луганск
Пользователь №: 16 476



Да, совсем забыл спросить... Какие впечатления от использования чипа? Хотелось бы отзывы услышать. И как настроить его на прием пакетов предназначенных только ему, только с его МАС адресом?
Go to the top of the page
 
+Quote Post
KRS
сообщение Jun 15 2006, 11:46
Сообщение #5


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



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

Я не знаю smile.gif

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

Когда я получил отладочный комплект и первые чипы, их немного здесь пообсуждали
http://electronix.ru/forum/index.php?showtopic=14993


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


А так чип вполне приличный!
Go to the top of the page
 
+Quote Post
MSprut
сообщение Jun 15 2006, 13:32
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 225
Регистрация: 25-04-06
Из: Украина, Луганск
Пользователь №: 16 476



Чтобы преполнения не было нужно после чтения каждого пакета из буфера очищать его через запись бита RXSKIP в регистр RXCN.
Go to the top of the page
 
+Quote Post
KRS
сообщение Jun 15 2006, 13:38
Сообщение #7


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(MSprut @ Jun 15 2006, 17:32) *
Чтобы преполнения не было нужно после чтения каждого пакета из буфера очищать его через запись бита RXSKIP в регистр RXCN.


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

главное после этого все работает и пакеты можно посылать
и принимаются все пакеты которые уже были в буффере, вот только новые не принимаются!
Go to the top of the page
 
+Quote Post
MSprut
сообщение Jun 16 2006, 09:23
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 225
Регистрация: 25-04-06
Из: Украина, Луганск
Пользователь №: 16 476



Повозился с чипом с этим и ужас как много непонятных мест. Допустим с добавлением CRC в конец пакета. Добавляет всегда, даже когда CRCEN = 0 в регистре MACCF, а после приема этого пакета Ethereal-ом он говорит что контрольная сумма пакета неправильная. И с приемом пакетов какая-то ерунда... Сделал все как в описании, но что-то некорректно работает прием. Может есть какие-то хитрости, которыми Вы можете поделиться? Заранее спасибо.
Go to the top of the page
 
+Quote Post
KRS
сообщение Jun 16 2006, 10:30
Сообщение #9


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(MSprut @ Jun 16 2006, 13:23) *
Сделал все как в описании, но что-то некорректно работает прием. Может есть какие-то хитрости, которыми Вы можете поделиться? Заранее спасибо.


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

Считываю TLBVALID и если он 0 то пакетов нет, если не 0 то уже тогда читаю CPINFOH, CPINFOL и работаю с пакетом через RXAUTORD
Go to the top of the page
 
+Quote Post
MSprut
сообщение Jun 16 2006, 11:03
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 225
Регистрация: 25-04-06
Из: Украина, Луганск
Пользователь №: 16 476



В новой версии описания на СР2200 написано что RXAUTORD используется только для Half Duplex, а так нужно только через буфер самому рулить...
Go to the top of the page
 
+Quote Post
KRS
сообщение Jun 16 2006, 12:09
Сообщение #11


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(MSprut @ Jun 16 2006, 15:03) *
В новой версии описания на СР2200 написано что RXAUTORD используется только для Half Duplex, а так нужно только через буфер самому рулить...

Действительно лежит новый даташит rev 0.3
И там добавили бит RXVALID и надо смотреть по RXVALID & RXOK

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


Но вот про то что RXAUTORD используется только для Half Duplex я там не нашел
Go to the top of the page
 
+Quote Post
MSprut
сообщение Jun 16 2006, 13:10
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 225
Регистрация: 25-04-06
Из: Украина, Луганск
Пользователь №: 16 476



Сорри, не так интерпретировал текст про Half Duplex.
Go to the top of the page
 
+Quote Post
MSprut
сообщение Jul 8 2006, 10:44
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 225
Регистрация: 25-04-06
Из: Украина, Луганск
Пользователь №: 16 476



2KRS
А не могли бы поделиться примером инициализации для приема пакетов, предназначенных только для данного МАС-адреса и широковещательных пакетов, а то у меня что-то не получается, принимает все к ряду и с настройками не могу разобраться. И еще насчет CRC вконце пакета отправляемого - лепит его туда чтобы я не делал и как-то неустойчиво на пинг отвечает, хотя и проверяю TLBVALID. И еще CRC какой-то неправильный генерит вконце пакета, потому что Ethereal-ом принимаю, в пакете все правильно, контрольные суммы и т.д, а на приаттачиный CRC ругается, говорит что не такой должен быть. Заранее спасибо.
Go to the top of the page
 
+Quote Post
KRS
сообщение Jul 10 2006, 09:21
Сообщение #14


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(MSprut @ Jul 8 2006, 14:44) *
2KRS
А не могли бы поделиться примером инициализации для приема пакетов, предназначенных только для данного МАС-адреса и широковещательных пакетов, а то у меня что-то не получается, принимает все к ряду и с настройками не могу разобраться. И еще насчет CRC вконце пакета отправляемого - лепит его туда чтобы я не делал и как-то неустойчиво на пинг отвечает, хотя и проверяю TLBVALID. И еще CRC какой-то неправильный генерит вконце пакета, потому что Ethereal-ом принимаю, в пакете все правильно, контрольные суммы и т.д, а на приаттачиный CRC ругается, говорит что не такой должен быть. Заранее спасибо.


Так вроде никакой специальной инициализации не надо! После ресета все настроено на прием броадкастовых пакетов и для данного MAC.
с CRC у меня никаких проблем не было!
а вы длинну и данные отпраляемого пакета проверили?
(если лишнии данные напихать тогда может съехать все)
Go to the top of the page
 
+Quote Post
MSprut
сообщение Jul 10 2006, 12:50
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 225
Регистрация: 25-04-06
Из: Украина, Луганск
Пользователь №: 16 476



Цитата(KRS @ Jul 10 2006, 12:21) *
Так вроде никакой специальной инициализации не надо! После ресета все настроено на прием броадкастовых пакетов и для данного MAC.
с CRC у меня никаких проблем не было!
а вы длинну и данные отпраляемого пакета проверили?
(если лишнии данные напихать тогда может съехать все)


Да вроде все с длиной нормально, попробую еще проверить.
Go to the top of the page
 
+Quote Post

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

 


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


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