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