Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: RangeError в RxStatus на LPC1768
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
codier
Здравствуйте! Разбираюсь с Ethernet-ом на контроллере LPС1768. Опыта работы с EMAC на других контроллерах не имею. Сделал инициализацию EMAC, PHY и т.д., пытаюсь принимать фреймы, вроде всё работает, но во всех фреймах в RxStatus выставлен бит ошибки RangeError. Читаю документацию и не понимаю что это такое sad.gif

Как я понимаю, RangeError должен выставиться если длина пакета не совпадает с максимальной длиной фрейма, который EMAC может принять, но MAXF выставлен в 1536, а ARP пакеты, на которых я проверяю явно меньше.

Может кто сталкивался с подобным?
andrewlekar
Вот что сказано в даташите:

The EMAC doesn't distinguish the frame type and frame length, so, e.g. when the IP(0x8000) or
ARP(0x0806) packets are received, it compares the frame type with the max length and gives the "Length
out of range" error. In fact, this bit is not an error indication, but simply a statement by the chip regarding the
status of the received frame.

Я, соответственно, отключил реакцию на Length Range Error.
codier
2 andrewlekar:

Уже разобрался, но спасибо! Я даташиту тоже читал, но в упор не видел сути написанного :-)

Вообще, глупость какая-то получается. В Ethernet фрейме поле type/length одно и как его использовать определяет пользователь - допустим. Но если такая свобода заложена в протоколе, то почему нельзя было сделать отключаемой проверку этой ошибки? Это при том, что массовое применение (TCP/IP) использует это поле именно в type режиме. А получается, что все IP пакеты метятся как RangeError и обобщённый флаг Error по сути не работает.

Ладно.. переживём :-)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.