t25a3 0 26 октября, 2011 Опубликовано 26 октября, 2011 · Жалоба Добрый день, возникла проблема по данной реализации. Написал все с нуля. Порты открываются данные передаются. Смотрю usbmonitorом(триал) и прогой для работы с ком портом. Так вот... Когда девайс в хост отправляет меньше 64 байт!!! то транзакция проходит. Когда девайс пытается отправить больше 64!!! то транзакция не проходит!!! Опытным путем установил что если хочешь передавать больше 64 байт то в конце всего пакета нужно отправить нулевой байт!... Причем нулевой байт обязательно нужно отправить! даже если пакет не кратен размеру конечной точки. Странно... Хост когда отправляет данные вроде не присылает нулевые пакеты... Но это надо проверить... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
t25a3 0 27 октября, 2011 Опубликовано 27 октября, 2011 · Жалоба Проверил... В транзакции OUT хост присылает нулевой пакет если размер конечной точки кратен 8!!!!.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alechek 0 27 октября, 2011 Опубликовано 27 октября, 2011 · Жалоба микрософтовский CDC вообще чудит с отправкой. А вообще, по стандарту надо отправлять пустой пакет, если размер пакета равен (кратен) размеру конечной точки. Чтобы контроллер знал, что транзакция завершена. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
t25a3 0 27 октября, 2011 Опубликовано 27 октября, 2011 · Жалоба Но тут проблема в том что в конце транзакции IN, то есть передачи в хост, кратен пакет не кратен пустой пакет в конце пакета отправлять надо... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vicgor 0 27 октября, 2011 Опубликовано 27 октября, 2011 · Жалоба Добрый день, возникла проблема по данной реализации. Написал все с нуля. А можно исходник скинуть ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
t25a3 0 27 октября, 2011 Опубликовано 27 октября, 2011 · Жалоба Исходники USB_CDC.ZIP Вот однако хост негодяй :maniac: ! Он от устройства понимаешь требует нулевой пакет типа конец передачи! А вот сам ничего не присылает! Привязаться не к чему... Пришлось привязать конец транзакции OUT к прерыванию SOFINT... (Пробовал петлю внутреннюю по интерфейсу сделать). Обнаружилось что и передачу данных в хост (транзакция IN) тоже необходимо связать с этим же прерыванием. Когда отправляет в хост данные разбивает их на блоки между соседними кадрами! Смотрел USBMonitorом... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
t25a3 0 16 ноября, 2011 Опубликовано 16 ноября, 2011 · Жалоба Нулевой пакет нужен только если пакет кратен размеру конечной точки. Оказаось что это у меня косяк работы с dual буфером bulk конечной точки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться