Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: USB CDC
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
shrek
Добрый день, возникла проблема по данной реализации.
Написал все с нуля. Порты открываются данные передаются. Смотрю usbmonitorом(триал) и прогой для работы с ком портом. Так вот...
Когда девайс в хост отправляет меньше 64 байт!!! то транзакция проходит. Когда девайс пытается отправить больше 64!!! то транзакция не проходит!!! Опытным путем установил что если хочешь передавать больше 64 байт то в конце всего пакета нужно отправить нулевой байт!... Причем нулевой байт обязательно нужно отправить! даже если пакет не кратен размеру конечной точки. Странно... Хост когда отправляет данные вроде не присылает нулевые пакеты... Но это надо проверить...
shrek
Проверил... В транзакции OUT хост присылает нулевой пакет если размер конечной точки кратен 8!!!!....
Alechek
микрософтовский CDC вообще чудит с отправкой.
А вообще, по стандарту надо отправлять пустой пакет, если размер пакета равен (кратен) размеру конечной точки. Чтобы контроллер знал, что транзакция завершена.
shrek
Но тут проблема в том что в конце транзакции IN, то есть передачи в хост, кратен пакет не кратен пустой пакет в конце пакета отправлять надо...
vicgor
Цитата(shrek @ Oct 26 2011, 15:00) *
Добрый день, возникла проблема по данной реализации.
Написал все с нуля.

А можно исходник скинуть ?
shrek
Исходники
Нажмите для просмотра прикрепленного файла

Вот однако хост негодяй maniac.gif ! Он от устройства понимаешь требует нулевой пакет типа конец передачи! А вот сам ничего не присылает! Привязаться не к чему...
Пришлось привязать конец транзакции OUT к прерыванию SOFINT... (Пробовал петлю внутреннюю по интерфейсу сделать).
Обнаружилось что и передачу данных в хост (транзакция IN) тоже необходимо связать с этим же прерыванием. Когда отправляет в хост данные разбивает их на блоки между соседними кадрами! Смотрел USBMonitorом...
shrek
Нулевой пакет нужен только если пакет кратен размеру конечной точки. Оказаось что это у меня косяк работы с dual буфером bulk конечной точки.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.