Цитата(VladislavS @ Sep 1 2017, 17:31)

После того как точка что-то передаст (вернее хост у неё заберёт) в статусе выставляется CTR_TX. У вас он в нуле. Это что-то другое вы поймали.
Если в дескрипторах написали правильно, то должно и так работать. Но вообще, точки двунаправленные. Для CDC достаточно одной точки Bulk на приём/передачу и одной Interrupt. Ну и EP0 для всех системных вопросов. Сделайте как в кубе дескрипторы и используемые точки.
На скриншотах регистры при входе в конечную точку. До того как данные будут записаны в буфер EP и выставлен флаг для передачи. После выполнения этих операций CTR_TX действительно выставится и затем сбросится но только 1 первый раз. Далее процесс передачи не работает в не зависимости сколько данных записываем.
Дескрипторы верные. EP0 корректно отрабатывает все запросы и устройство на хосте видно корректно. Со всеми описаниями и данными.
Цитата(uriy @ Sep 1 2017, 21:49)

Проверьте еще реальную частоту тактовой частоты 48 МГц, лучше через вывод MCO.
Допуск насколько помню не такой уже жесткий - 0,25%. Мало ли.
запросы через EP0 проходят и обрабатываются корректно
устройство на хосте видно
все данные верные
устройство принимает все пакеты от хоста через EP2
проблема только в том, что не могу передать хосту более чем 1 раз ответ через EP3