Цитата(Axel @ Mar 23 2013, 12:31)

Для надежности даже больше (учитывая 12Мb full speed)
Если процессы асинхронные - не думаю. Я использую кольцевые FIFO.
Прикрутил кольцевые фифо, пришлось написать свою реализацию DCD_WriteEmptyTxFifo.
В процессе обнаружил что библиотека (+железо) не посылают zero length packet автоматически в случае если размер блока кратен размеру эндпойнта и последний пакет был передан полным.
Если добавить отправку ZLP как предлагают в
USB CDC Device hung fix то на мой взгляд может быть разрыв до следующей передачи в как минимум 1 sof (а скорее 2).
Гадаю, как будет быстрее:
а) реализовать в DataIn callback отправку ZLP как предлагают или
б) при формировании блока данных следить чтобы размер блока всегда был не кратен размеру эндпойнта чтобы ZLP вообще никогда не посылался.
----
Добавлю:
Проверил оба варианта.
Вариант а) немного быстрее - выдает около 550000 байт/с в то время как по варианту б) получается 535000
Почему так непонятно, с моей точки зрания б) должен быть быстрее, ну уж точно не хуже чем а).
Сообщение отредактировал _3m - Mar 27 2013, 13:13