|
|
  |
KS8851SNL - странности при приеме |
|
|
|
May 28 2014, 15:50
|
Участник

Группа: Участник
Сообщений: 65
Регистрация: 14-01-10
Пользователь №: 54 821

|
чип, работает на прием со страанностями, точнее совсем неправильно работает - прерывания генерятся, отсчитывается положенное число байт из пакета, но они не читаются из QMU RX FIFO буфера - одни 0х00. И вот что странно регистр теста BIST выдает 0x1001,- тест буфера TX выполнен успешно, в очереди RX зарегистрирована одна ошибка, и тест похоже не завершен поскольку нет ни подтверждения ошибки теста ни его успешного выполнения. При всем при этом RXFHSR = 0x8101 - Valid Frame и Frame CRC Error. Само количество байт в пакете считывается верно, для тестового фрейма. И не работает автоинкремент при считывании - если фреймы не дропать, очередь забивается, и все останавливается  Вот такая штука, вроде все перепробовали - питание 3.3В заводили внешнее (только что с LDO), конденсаторы также меняли. Может кто сталкивался с подобным? думал 1Gbit/s сделать сложно, ан нет 100 не проще оказалось
Эскизы прикрепленных изображений
|
|
|
|
|
May 30 2014, 06:26
|
Участник

Группа: Участник
Сообщений: 65
Регистрация: 14-01-10
Пользователь №: 54 821

|
Цитата(dimka76 @ May 29 2014, 08:27)  Посмотрите приложенные файлы. В них пошагавая инструкция по работе с микросхемой и пример кода программы.
ks8851mql_m16c_20080303.zip ( 4.4 мегабайт )
Кол-во скачиваний: 74
ks8851_programming_guide.zip ( 1.85 мегабайт )
Кол-во скачиваний: 79Спасибо, эти файлы у нас уже есть, просмотрели еще раз, вобщем грешим на саму партию чипов. Хотя и для ревизии A3T это выглядит странно. Запитали от внешнего питания,- и 3.3В и 1.8В. Но RX QMU по прежнему выдает одну ошибку, с не завершенностью теста: CODE /* * Memory BIST Info Register (MBIR). */ #define MEMORY_BIST_INFO_REG 0x24 // Memory BIST Info Register (MBIR). #define TX_MEM_BIST_FINIS 0x1000 // TXMBF TX Memory BIST (Built In Self Test) Finish. #define TX_MEM_BIST_FAIL 0x0800 // TXMBFA TX Memory BIST Fail. #define TX_MEM_BIST_FAIL_CNT 0x0700 // TXMBFC TX Memory BIST Fail Count Mask. #define RX_MEM_BIST_FINISH 0x0010 // RXMBF RX Memory BIST Finish. #define RX_MEM_BIST_FAIL 0x0008 // RXMBFA RX Memory BIST Fail. #define RX_MEM_BIST_FAIL_CNT 0x0007 // RXMBFC RX Memory BIST Fail Count Mask.
значение при первом же прочтении регистра 0x1001 Сейчас поменяем кварц, на 3й. И уже заказали мелкую партию чипов у другого поставщика.
|
|
|
|
|
May 30 2014, 07:50
|
Участник

Группа: Участник
Сообщений: 65
Регистрация: 14-01-10
Пользователь №: 54 821

|
"О май гад!" BIST = 0x1010 ... логический && вместо нормального бинарного "&"
|
|
|
|
|
May 30 2014, 17:38
|
Участник

Группа: Участник
Сообщений: 65
Регистрация: 14-01-10
Пользователь №: 54 821

|
Цитата(iosifk @ May 30 2014, 16:08)  А у кого брали? Чипы похоже в норме - MAC фильтр работает как надо, и по адресу и по мультикасту,- видимо ошибку в коде не вижу. Сейчас буду рыть  Чипы покупали год назад в числе прочего, точно не уверен, кажется это был маузер. PS. Все читается и из памяти, всем спасибо за помощь. Осталось выяснить почему иногда байты не те, чаще всего получаю флаг RXFT. (Receive Frame Type (is Ethernet type frame > 1500 bytes), и это на 60 байтовом пакете - убрал его контроль, вышел на новый уровень непонимания
Сообщение отредактировал b32b - May 30 2014, 19:50
|
|
|
|
|
Jun 8 2014, 09:41
|

developer
   
Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032

|
Цитата(b32b @ May 31 2014, 01:48)  Осталось выяснить почему иногда байты не те, чаще всего получаю флаг RXFT. (Receive Frame Type (is Ethernet type frame > 1500 bytes), и это на 60 байтовом пакете - убрал его контроль, вышел на новый уровень непонимания  Я тоже об это споткнулся. Здесь контролируется поле EtherType в MAC-header. А оно может восприниматься по-разному: либо как EtherType в сетях Ethernet II, либо как length в сетях IEEE 802.3. Для всяких там ARP и IP протоколов используется как раз EtherType, которое вснгда больше 0x0800, вот он и ругается флагом RXFT.
--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
|
|
|
|
|
Jun 8 2014, 15:47
|
Местный
  
Группа: Свой
Сообщений: 371
Регистрация: 24-07-05
Из: Москва
Пользователь №: 7 056

|
В приложенных файлах инструкция версии 1.4. Там есть ошибка, только какая я уже не помню. Возьмите инструкцию версии 1.3 - там однозначно всё правильно. Ещё также прилагаю свой код для чтения 8851.
|
|
|
|
|
Jun 19 2014, 22:07
|
Участник

Группа: Участник
Сообщений: 65
Регистрация: 14-01-10
Пользователь №: 54 821

|
Всем спасибо, все работает, извините, что не отвечал долго Цитата(dimka76 @ Jun 8 2014, 13:41)  Я тоже об это споткнулся. Здесь контролируется поле EtherType в MAC-header. А оно может восприниматься по-разному: либо как EtherType в сетях Ethernet II, либо как length в сетях IEEE 802.3. Для всяких там ARP и IP протоколов используется как раз EtherType, которое вснгда больше 0x0800, вот он и ругается флагом RXFT. Это, похоже на микрел,- легкие неточности в документации Цитата(BSACPLD @ Jun 8 2014, 19:47)  В приложенных файлах инструкция версии 1.4. Там есть ошибка, только какая я уже не помню. Возьмите инструкцию версии 1.3 - там однозначно всё правильно. Ещё также прилагаю свой код для чтения 8851. Спасибо, у меня сишный код, я кстати именно по 1.3 и начинал проект. ЗЫ собственно чип нормальный, только качество описания хромает, и иногда на обе левые ноги
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|