MSprut 0 15 июня, 2006 Опубликовано 15 июня, 2006 · Жалоба Всем привет. СР2200 - это Ethernet контроллер от SiLabs. Собрал девайс на АТмега16+СР2200, законнектился с чипом, пишу читаю регистры, все нормально, только вот когда включаю приемник и передатчик, то на выходе передатчика нет импульсов линка, а приемник с чего-то думает что подключен к сетке и светит светодиодом, который показывает что есть линк, хотя при этом кабель не подключен вообще. Может кто работал с этим зверем и сталкивался с подобным? Или может слышал о такой проблеме? Нужен срочно хелп, потому что служба техподдержки SiLabs ушла в отказ, сказали что они не работают с Атмелом и поэтому помочь не могут, а время идет. Всем откликнувшимся заранее спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 0 15 июня, 2006 Опубликовано 15 июня, 2006 · Жалоба Я подключал 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); } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MSprut 0 15 июня, 2006 Опубликовано 15 июня, 2006 · Жалоба СПАСИБО ОГРОМНОЕ! Хрен бы когда догадался что нужно обязательно включать автонегоциацию для того чтобы девайс хоть как-то начал жить! Я, блин уже 2 недели сижу над этой проблемой, уже чип заменил... Вот клоуны! А что делать если я нехочу автоопределние включать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MSprut 0 15 июня, 2006 Опубликовано 15 июня, 2006 · Жалоба Да, совсем забыл спросить... Какие впечатления от использования чипа? Хотелось бы отзывы услышать. И как настроить его на прием пакетов предназначенных только ему, только с его МАС адресом? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 0 15 июня, 2006 Опубликовано 15 июня, 2006 · Жалоба СПАСИБО ОГРОМНОЕ! Хрен бы когда догадался что нужно обязательно включать автонегоциацию для того чтобы девайс хоть как-то начал жить! Я, блин уже 2 недели сижу над этой проблемой, уже чип заменил... Вот клоуны! А что делать если я нехочу автоопределние включать? Я не знаю :) Вообще там есть много непонятных моментов! Когда я получил отладочный комплект и первые чипы, их немного здесь пообсуждали http://electronix.ru/forum/index.php?showtopic=14993 Сейчас я практически все поборол. Из оставшихся фич - если происходит переполнение (например принят паке а все 8 TLB заняты) то он перестает принимать пакеты (можно выгрести 8 которые были уже, а больше .....) как очистить это состояние я еще не придумал (все руки не доходят) А так чип вполне приличный! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MSprut 0 15 июня, 2006 Опубликовано 15 июня, 2006 · Жалоба Чтобы преполнения не было нужно после чтения каждого пакета из буфера очищать его через запись бита RXSKIP в регистр RXCN. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 0 15 июня, 2006 Опубликовано 15 июня, 2006 · Жалоба Чтобы преполнения не было нужно после чтения каждого пакета из буфера очищать его через запись бита RXSKIP в регистр RXCN. Это то понятно :) у меня его обычно и не возникает, но вот при отладке ... иногда возникает переполнение (пока по шагам шагаешь) главное после этого все работает и пакеты можно посылать и принимаются все пакеты которые уже были в буффере, вот только новые не принимаются! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MSprut 0 16 июня, 2006 Опубликовано 16 июня, 2006 · Жалоба Повозился с чипом с этим и ужас как много непонятных мест. Допустим с добавлением CRC в конец пакета. Добавляет всегда, даже когда CRCEN = 0 в регистре MACCF, а после приема этого пакета Ethereal-ом он говорит что контрольная сумма пакета неправильная. И с приемом пакетов какая-то ерунда... Сделал все как в описании, но что-то некорректно работает прием. Может есть какие-то хитрости, которыми Вы можете поделиться? Заранее спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 0 16 июня, 2006 Опубликовано 16 июня, 2006 · Жалоба Сделал все как в описании, но что-то некорректно работает прием. Может есть какие-то хитрости, которыми Вы можете поделиться? Заранее спасибо. Я определяю наличие пакета не по биту RXOK (который кстати непонятно где находится толи в CPINFOH, толи CPINFOL) а по регистру TLBVALID. Считываю TLBVALID и если он 0 то пакетов нет, если не 0 то уже тогда читаю CPINFOH, CPINFOL и работаю с пакетом через RXAUTORD Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MSprut 0 16 июня, 2006 Опубликовано 16 июня, 2006 · Жалоба В новой версии описания на СР2200 написано что RXAUTORD используется только для Half Duplex, а так нужно только через буфер самому рулить... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 0 16 июня, 2006 Опубликовано 16 июня, 2006 · Жалоба В новой версии описания на СР2200 написано что RXAUTORD используется только для Half Duplex, а так нужно только через буфер самому рулить... Действительно лежит новый даташит rev 0.3 И там добавили бит RXVALID и надо смотреть по RXVALID & RXOK Еще главное добавили как продолжить принимать пакеты после переполнения Но вот про то что RXAUTORD используется только для Half Duplex я там не нашел Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MSprut 0 16 июня, 2006 Опубликовано 16 июня, 2006 · Жалоба Сорри, не так интерпретировал текст про Half Duplex. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MSprut 0 8 июля, 2006 Опубликовано 8 июля, 2006 · Жалоба 2KRS А не могли бы поделиться примером инициализации для приема пакетов, предназначенных только для данного МАС-адреса и широковещательных пакетов, а то у меня что-то не получается, принимает все к ряду и с настройками не могу разобраться. И еще насчет CRC вконце пакета отправляемого - лепит его туда чтобы я не делал и как-то неустойчиво на пинг отвечает, хотя и проверяю TLBVALID. И еще CRC какой-то неправильный генерит вконце пакета, потому что Ethereal-ом принимаю, в пакете все правильно, контрольные суммы и т.д, а на приаттачиный CRC ругается, говорит что не такой должен быть. Заранее спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 0 10 июля, 2006 Опубликовано 10 июля, 2006 · Жалоба 2KRS А не могли бы поделиться примером инициализации для приема пакетов, предназначенных только для данного МАС-адреса и широковещательных пакетов, а то у меня что-то не получается, принимает все к ряду и с настройками не могу разобраться. И еще насчет CRC вконце пакета отправляемого - лепит его туда чтобы я не делал и как-то неустойчиво на пинг отвечает, хотя и проверяю TLBVALID. И еще CRC какой-то неправильный генерит вконце пакета, потому что Ethereal-ом принимаю, в пакете все правильно, контрольные суммы и т.д, а на приаттачиный CRC ругается, говорит что не такой должен быть. Заранее спасибо. Так вроде никакой специальной инициализации не надо! После ресета все настроено на прием броадкастовых пакетов и для данного MAC. с CRC у меня никаких проблем не было! а вы длинну и данные отпраляемого пакета проверили? (если лишнии данные напихать тогда может съехать все) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MSprut 0 10 июля, 2006 Опубликовано 10 июля, 2006 · Жалоба Так вроде никакой специальной инициализации не надо! После ресета все настроено на прием броадкастовых пакетов и для данного MAC. с CRC у меня никаких проблем не было! а вы длинну и данные отпраляемого пакета проверили? (если лишнии данные напихать тогда может съехать все) Да вроде все с длиной нормально, попробую еще проверить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться