|
STM32F4 USB CDC, Передаёт не более 32 байт за раз |
|
|
|
Mar 7 2013, 08:53
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Понимаю, что может быть избитая и изъезженная тема тема, но всё же. Короче, взял пример COM-порта отсюда - http://we.easyelectronics.ru/STM32/primery...4-discovey.htmlПорт опознаётся, устанавливается, всё ок. Данные принимает, передаёт. Но. Не могу передать на комп более 32 байт. Комп просто ничего не принимает. Когда 32 байта и меньше всё в порядке. Это ж отстой полный, хуже чем даже USB HID Generic - 64 байта туда-сюда-обратно. И тот кстати не получается. Примеры - сплошные мыши и джойстики  ... Это что, норма? И как этого избежать? Размер буферов в прошивке вроде 2 кила - макрос APP_RX_DATA_SIZE = 2048. И ещё. Не хочется, чтобы железка торчала в списке COM-портов. Взял финский пример отсюда - http://forum.easyelectronics.ru/viewtopic....=35&t=10245Он пошёл без проблем, комп его увидел. Но где взять драйвер? Нашёл libusb, драйвер им сгенерил, но как с ним дальше работать не понял... Может ли кто-нибудь помочь? Спасибо.
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
 |
Ответов
|
Mar 2 2014, 16:36
|
Знающий
   
Группа: Свой
Сообщений: 888
Регистрация: 25-09-08
Из: Питер
Пользователь №: 40 458

|
Угу, еще раз посмотрел внимательно. При приеме из компа в контроллер все аккуратно. А вот при передаче из контроллера в комп - все криво. До конца еще не разобрался, но, похоже, понял в чем дело.
Эта зараза рассчитана на то, что приходящие снаружи (на СОМ) данные никогда не достигнут 64 за один фрейм, т.е. за 1 мсек. И, поэтому, она вообще не заботится о полном размере посылки, а тупо посылает все, рассчитывая, что число посланных байт всегда меньше 64 и проблем с завершением пакета не возникнет.
Это в чем-то обосновано, 64 байта за 1 мсек - это примерно 640кбит - намного выше стандартных скоростей СОМ порта.
Похоже, что для обмена пакетами нельзя использовать CDC, нужно брать что-то другое или не допускать размера пакетов кратного 64.
Конечно можно и драйвер поправить, но для этого прийдется полностью разбираться в структуре драйвера и, фактически, переписать его. Как-то лениво, но, может, прийдется.
Да, это не контрольная точка - это реальный балк.
|
|
|
|
Сообщений в этой теме
hd44780 STM32F4 USB CDC Mar 7 2013, 08:53 KnightIgor Цитата(hd44780 @ Mar 7 2013, 09:53) И ещё... Mar 7 2013, 11:25 hd44780 Ну пусть COM-порт уже, фиг с ним ...
А чего тольк... Mar 7 2013, 12:07 Juk1976 Цитата(hd44780 @ Mar 7 2013, 15:07) Ну пу... Mar 7 2013, 17:20 hd44780 Нашёл в интернете вот такое:
Код #define RX_FIFO_... Mar 8 2013, 14:54 Flexz А пример из библиотеки ST вы брать не пробовали? у... Mar 8 2013, 14:56 hd44780 FlexZ, это из архива STM32_USB-Host-Device_Lib_V2.... Mar 8 2013, 18:05 Flexz Да, пример из этого архива.
Пачки уходят вплоть до... Mar 8 2013, 19:39 hd44780 Спасибо.
Цитата(Flexz @ Mar 8 2013, 21:39... Mar 9 2013, 05:20 hd44780 Короче, мудохался-мудохался, добился 1024 байт за ... Mar 9 2013, 18:29 Flexz Может у вас проблема в другом месте? Кабель плохой... Mar 10 2013, 13:08 hd44780 Кабель длиной где-то 30 см от телефона Nokia X2-02... Mar 11 2013, 07:11 Flexz Вот в этом месте у меня во всех проектах немного п... Mar 11 2013, 09:45 hd44780 Сделал, но заметил следующую странность:
У меня с... Mar 11 2013, 13:50 hd44780 Победил я кажись эту хреновину .
Западло (по кра... Mar 11 2013, 19:15 Golikov A. какой странный подход. По мне последние сообщение ... Mar 12 2013, 16:39 hd44780 Согласен полностью.
Но ковыряться в потрохах этог... Mar 13 2013, 09:45 Golikov A. увы... Mar 13 2013, 15:04 rudy_b И снова та же тема...
Поднял CDC (VirtualComPort) ... Mar 1 2014, 20:05 Golikov A. последняя ошибка вроде ошибка драйвера винды если ... Mar 2 2014, 05:23 rudy_b Вторая ошибка действительно похожа на придурь винд... Mar 2 2014, 10:46 Axel Цитата(rudy_b @ Mar 2 2014, 14:46) Мне пр... Mar 2 2014, 11:58 Golikov A. балк обменивается не по контрольной конечной точке... Mar 2 2014, 13:11 rudy_b А какой именно либы? Я использовал stm32_f105-07_f... Mar 2 2014, 13:41 Golikov A. не надо мешать все в одну кашу.
балк, изохронный, ... Mar 2 2014, 14:27 Golikov A. очень странно что это балк, мне казалась что станд... Mar 2 2014, 18:16 rudy_b Они, почему-то, используют EP1 для приема и переда... Mar 2 2014, 18:46 Axel Цитата(rudy_b @ Mar 2 2014, 22:46) Они, п... Mar 3 2014, 05:02 Golikov A. Да нет никакой проблемы, все равно для уравнивания... Mar 2 2014, 19:35 rudy_b Так тогда мне проще сразу работать блоками по 63 б... Mar 2 2014, 23:43 EmbedElektrik Господа, а никто не поделится проектом под stm32f4... Jun 17 2015, 12:02
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|