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

Коллеги, хочу передавать изображения с камеры 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?

 

В общем, подскажите, что мне нужно для решения задачи?

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


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

В общем, подскажите, что мне нужно для решения задачи?

Проще всего переделать CDC на BULK.

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


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

Проще всего переделать CDC на BULK.

Максимум 980кБайт/сек на USB-FS.

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


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

Максимум 980кБайт/сек на USB-FS.

Зачем ФС? ХС надо. О скорости я недавно отчитывался.

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


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

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 там скорости повыше

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


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

А для решения задачи вам надо еще драйвер на стороне Windows, есть встроенный HID и практически встроенный CDC. Остальные драйверы надо писать самому, и потому обмен через другие интерфейсы вам создаст дополнительных проблем.

 

Так-то есть еще usb video class, по которому работают камеры в винде, он стандартный, но на стороне мк реализовать сложнее.

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


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

Так-то есть еще usb video class,

это видать что-то новое появилось... правда я так давно этим USB последний раз занимался, что оно может быть вполне и старое:)

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


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

Установил я virtual comport driver версия 1.4, скачал с самого сайта ST.

Все установилось без проблем.

Но появляющийся com-порт со значком ошибки - для устройства не установлены драйверы. Хотя номер порту присваивается.

При попытке вручную что-то сделать выдается сообщение "Неправильная секция установки службы в этом ini файле"

 

Прошивку качал отсюда http://ctrl-v.biz/blog/7

 

Что я делаю не так? Ini файл прикладываю

Изменено пользователем zheka

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


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

Много бубнов разбил, но установил все-таки этот драйвер.

Объясните мне феномен - как ни переключаю скорость COM-порта в Terminal - данные идут правильные и на высокой скорости. Это как?

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


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

Объясните мне феномен - как ни переключаю скорость COM-порта в Terminal - данные идут правильные и на высокой скорости. Это как?

Так и есть. В USB данные будут ходить с той скоростью, сколько USB позволит.

То, что вы устанавливаете, это фактически настройки для реального COM порта, который может торчать с другой стороны USB. Они уходят отдельными командами и могут быть использованы, если нужно. Например можно сделать конвертер USB-COM и по переданным параметрам устанавливать нужную скорость UART.

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


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

ох... у меня голова уже опухла..

Вот здесь в конце есть ссылка на якобы рабочий проект для Eclipse. http://ctrl-v.biz/blog/7

Пытаюсь переделать под Keil. Все добавил, все прописал, все пути к include тоже вбил. Не компилится и все тут.

Если кому не трудно, гляньте в аттаче...

Изменено пользователем zheka

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


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

Нашел что надо прописать.

Компилится, линкуется. Но вываливается в Hard Fault..

Ставлю брейкпоинт на самую первую строку - брейкпоинт не срабатывает.

В чем моежт быть дело?

Файл, выложенный выше, обновил.

/////////////////

 

Прошелся отладчиком пошагово :

        IMPORT  __main

                 LDR     R0, =SystemInit
                 BLX     R0
                 LDR     R0, =__main
                 BX      R0
                 ENDP

 

доходит до BX R0 и вылетает в hard_fault

Стартап я правда взял от примеров от ST для дискавери4, потому как в примере для Eclipse он как будто на другом языке написан.

Изменено пользователем zheka

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


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

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

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

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

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

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

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

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

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

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