Перейти к содержанию
    

Добрый день, возникла проблема по данной реализации.

Написал все с нуля. Порты открываются данные передаются. Смотрю usbmonitorом(триал) и прогой для работы с ком портом. Так вот...

Когда девайс в хост отправляет меньше 64 байт!!! то транзакция проходит. Когда девайс пытается отправить больше 64!!! то транзакция не проходит!!! Опытным путем установил что если хочешь передавать больше 64 байт то в конце всего пакета нужно отправить нулевой байт!... Причем нулевой байт обязательно нужно отправить! даже если пакет не кратен размеру конечной точки. Странно... Хост когда отправляет данные вроде не присылает нулевые пакеты... Но это надо проверить...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверил... В транзакции OUT хост присылает нулевой пакет если размер конечной точки кратен 8!!!!....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

микрософтовский CDC вообще чудит с отправкой.

А вообще, по стандарту надо отправлять пустой пакет, если размер пакета равен (кратен) размеру конечной точки. Чтобы контроллер знал, что транзакция завершена.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но тут проблема в том что в конце транзакции IN, то есть передачи в хост, кратен пакет не кратен пустой пакет в конце пакета отправлять надо...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день, возникла проблема по данной реализации.

Написал все с нуля.

А можно исходник скинуть ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Исходники

USB_CDC.ZIP

 

Вот однако хост негодяй :maniac: ! Он от устройства понимаешь требует нулевой пакет типа конец передачи! А вот сам ничего не присылает! Привязаться не к чему...

Пришлось привязать конец транзакции OUT к прерыванию SOFINT... (Пробовал петлю внутреннюю по интерфейсу сделать).

Обнаружилось что и передачу данных в хост (транзакция IN) тоже необходимо связать с этим же прерыванием. Когда отправляет в хост данные разбивает их на блоки между соседними кадрами! Смотрел USBMonitorом...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нулевой пакет нужен только если пакет кратен размеру конечной точки. Оказаось что это у меня косяк работы с dual буфером bulk конечной точки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...