zheka 1 20 марта, 2015 Опубликовано 20 марта, 2015 · Жалоба Коллеги, хочу передавать изображения с камеры OV7670 (640x480) на комп. В распоряжении есть плата STM32F4Discovery, камера с ебея уже пересекает китайскую границу, проект использующий аппаратный DCMI и DMА я нашел. Пока суровые китайские таможенники оформляют пересечение камерой границы, хочу хотя бы проэмулировать передачу данных, то есть искусственно заполнять буфер, куда DMA кидает данные тестовой картинкой и принимать ее на компе. Оговорюсь сразу - задача специфическая, и большого FPS не потребует, 3 кадра в секунду меня устроят.Получается скорость должна составлять около 2 мбайт сек. И что-то я в растерянности. Единственный мой опыт - USB HID на STM32F103, пакетами по 64 байта. Отсюда первый вопрос - в орежиме USB HID какая максимально возможная скорость? 2 мбайт / сек потянет? Далее -я пытался ковырятьс в примерах - есть там пример, который из платы дисковери делает мышку на акселерометре. Вроде бы это USB HID, но почему-то в тексте программы я встречал упоминание USB OTG. Насколько я знаю, USB HID является ведомым по отношению к компу, а комп - это всегда хост. Вроде бы, если я правильно понял - USB OTG - это разновидность USB Host, плата при этом сама становится "компом" и к ней можно подключать флешку например. Зачем для мышки USB OTG? В общем, подскажите, что мне нужно для решения задачи? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dr.Alex 0 20 марта, 2015 Опубликовано 20 марта, 2015 · Жалоба В общем, подскажите, что мне нужно для решения задачи? Проще всего переделать CDC на BULK. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 20 марта, 2015 Опубликовано 20 марта, 2015 · Жалоба Проще всего переделать CDC на BULK. Максимум 980кБайт/сек на USB-FS. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dr.Alex 0 20 марта, 2015 Опубликовано 20 марта, 2015 · Жалоба Максимум 980кБайт/сек на USB-FS. Зачем ФС? ХС надо. О скорости я недавно отчитывался. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 20 марта, 2015 Опубликовано 20 марта, 2015 · Жалоба Зачем ФС? ХС надо. О скорости я недавно отчитывался. можно ссылку на отчет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dr.Alex 0 20 марта, 2015 Опубликовано 20 марта, 2015 · Жалоба можно ссылку на отчет? http://electronix.ru/forum/index.php?showtopic=126651 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 20 марта, 2015 Опубликовано 20 марта, 2015 · Жалоба USB OTG - это разновидность USB Host OTG - это и Host и Device. В зависимости от того зажат специальный контакт или нет. То есть это USB которое само определяет куда оно подключилось, если к девайсу, становиться хостом, если к хосту становиться девайсом. То есть OTG не означает что оно использовалось как хост, просто факт возможности В общем, подскажите, что мне нужно для решения задачи? А для решения задачи вам надо еще драйвер на стороне Windows, есть встроенный HID и практически встроенный CDC. Остальные драйверы надо писать самому, и потому обмен через другие интерфейсы вам создаст дополнительных проблем. Наверное идеологически правильно использовать все же CDC, но в целом можно конечно картинку представить как HID input report, и через interrupt точку гнать данные. Частота пакетов в HID если не ошибаюсь 1 КГц, размер пакета 64 байта максимальный по спецификации для HS, FS и 8 для LS. так что через HID вы продавите 64 Кбайтай/сек - край... Потому смотрите в сторону CDC там скорости повыше Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 50 20 марта, 2015 Опубликовано 20 марта, 2015 · Жалоба А для решения задачи вам надо еще драйвер на стороне Windows, есть встроенный HID и практически встроенный CDC. Остальные драйверы надо писать самому, и потому обмен через другие интерфейсы вам создаст дополнительных проблем. Так-то есть еще usb video class, по которому работают камеры в винде, он стандартный, но на стороне мк реализовать сложнее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 20 марта, 2015 Опубликовано 20 марта, 2015 · Жалоба Так-то есть еще usb video class, это видать что-то новое появилось... правда я так давно этим USB последний раз занимался, что оно может быть вполне и старое:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 20 марта, 2015 Опубликовано 20 марта, 2015 (изменено) · Жалоба Установил я virtual comport driver версия 1.4, скачал с самого сайта ST. Все установилось без проблем. Но появляющийся com-порт со значком ошибки - для устройства не установлены драйверы. Хотя номер порту присваивается. При попытке вручную что-то сделать выдается сообщение "Неправильная секция установки службы в этом ini файле" Прошивку качал отсюда http://ctrl-v.biz/blog/7 Что я делаю не так? Ini файл прикладываю Изменено 20 марта, 2015 пользователем zheka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 21 марта, 2015 Опубликовано 21 марта, 2015 · Жалоба Много бубнов разбил, но установил все-таки этот драйвер. Объясните мне феномен - как ни переключаю скорость COM-порта в Terminal - данные идут правильные и на высокой скорости. Это как? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andy_Mozzhevilov 0 21 марта, 2015 Опубликовано 21 марта, 2015 · Жалоба Объясните мне феномен - как ни переключаю скорость COM-порта в Terminal - данные идут правильные и на высокой скорости. Это как? Так и есть. В USB данные будут ходить с той скоростью, сколько USB позволит. То, что вы устанавливаете, это фактически настройки для реального COM порта, который может торчать с другой стороны USB. Они уходят отдельными командами и могут быть использованы, если нужно. Например можно сделать конвертер USB-COM и по переданным параметрам устанавливать нужную скорость UART. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 21 марта, 2015 Опубликовано 21 марта, 2015 · Жалоба А из DMA тогда как в USB писать? Что записывать в DMA_InitStructure.DMA_Memory0BaseAddr ??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 21 марта, 2015 Опубликовано 21 марта, 2015 (изменено) · Жалоба ох... у меня голова уже опухла.. Вот здесь в конце есть ссылка на якобы рабочий проект для Eclipse. http://ctrl-v.biz/blog/7 Пытаюсь переделать под Keil. Все добавил, все прописал, все пути к include тоже вбил. Не компилится и все тут. Если кому не трудно, гляньте в аттаче... Изменено 22 марта, 2015 пользователем zheka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 22 марта, 2015 Опубликовано 22 марта, 2015 (изменено) · Жалоба Нашел что надо прописать. Компилится, линкуется. Но вываливается в Hard Fault.. Ставлю брейкпоинт на самую первую строку - брейкпоинт не срабатывает. В чем моежт быть дело? Файл, выложенный выше, обновил. ///////////////// Прошелся отладчиком пошагово : IMPORT __main LDR R0, =SystemInit BLX R0 LDR R0, =__main BX R0 ENDP доходит до BX R0 и вылетает в hard_fault Стартап я правда взял от примеров от ST для дискавери4, потому как в примере для Eclipse он как будто на другом языке написан. Изменено 22 марта, 2015 пользователем zheka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться