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

 
 
> USB CDC на SAM7X, не принимаются пакеты размером 64 байта
athlon64
сообщение Aug 26 2011, 06:06
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 156
Регистрация: 10-03-10
Из: Уфа
Пользователь №: 55 882



Делаю виртуальный COM-порт на USB AT91SAM7X.
Переделал атмеловский пример чтобы входящие пакеты отдавались разборщикам пакетов от ком-портов, а ответы отправлялись в USB CDC. Обмен прекрасно заработал, пока случайно не обнаружил что входящий пакет размером 64 байта не вызывает UDP_EndOfTransfer, вызов которой необходим для вызова callback функции приёма и, соответственно, для обработки принятого пакета.
Не проходит проверка условия:
Код
      if ((pTransfer->remaining == 0) || (wPacketSize < pEndpoint->size))
в процедуре static void UDP_EndpointHandler(unsigned char bEndpoint). pEndpoint->size = 64.
При этом пакеты больше 64 байт и меньше 64 байт принимаются и обрабатываются правильно.
Подозреваю что нужно переделать приём на другой EndPoint с размером буфера 256 байт, но как это сделать в мудрёном примере не нахожу.
Как это сделать?

Сообщение отредактировал athlon64 - Aug 26 2011, 06:11


--------------------
Руслан
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 1)
SSerge
сообщение Aug 26 2011, 09:36
Сообщение #2


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

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Что-то тут не то с логикой на самом верхнем уровне.
Ведь COM-порт, даже виртуальный, это поток байтов, так какая разница будут после текущего пакета ещё данные или нет, в любом случае то что пришло уже можно обрабатывать.
Условие такого типа как в первом сообщении имеет смысл, например, для MSD устройства (флешки), но там в такой ситуации для индикации конца передачи блока отправляют ещё один пакет данных нулевой длины.
А bulk EndPoint-ы больше 64 байт для Full-speed устройств не предусмотрены, только для High-speed.


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 22:23
Рейтинг@Mail.ru


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