реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Как подключить MIPI CSI-2 камеру?, Перекачать картинку с модулей Omnivision, Sony IMX и т.п.
tmtlib
сообщение Dec 23 2016, 05:00
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 200
Регистрация: 30-10-10
Пользователь №: 60 531



Существует множество сенсоров, у которых имеется только MIPI интерфейс.
Какие есть пути их использования?
Неавно вычитал, что по MIPI с некоторых модулей можно перекачивать JPEG, это в некотором смысле может уменьшить требования к используемым чипам.
Меня давно интересует следующая идея: вычитать один Bayer кадр с такого сенсора и положить его в DDR память, либо вычитать JPEG по MIPI и сразу по USB отправить в какой-нибудь простенький ARM. Но ничего толком найти не удаётся.

1) FPGA
Какой самый минимальный дешевый чип позволит сделать мост CSI-parallel?
Я вижу рекламу новых чипов, но они дороже самих камер в десятки раз. Условно говоря сейчас 5 мегапикселей это 100 рублей.

2) Чипы USB camera controller
Огромное количество чипов с MIPI интерфейсом, но никакой документации, сложно достать
Вот маленький списочек:
Цитата
USB2.0 camera controllers:

sm3732 - USB 2.0 PC Camera Controller (QFN40) MIPI: unknown
au3830 - USB 2.0 WEB Camera Controller (LQFP,QFN) MIPI: unknown
AU3822U - USB 2.0 NB-Cam Controller MIPI: unknown
AU3826 - USB 2.0 NB-Cam Controller MIPI: yes
M5608T - USB 2.0 NB-Cam Controller MIPI: unknown
AU3841 - USB 2.0 NB-Cam Controller MIPI: unknown
SN9C292A - USB2.0 H.264 Video Encoding Camera Controller (65pin LGA) MIPI: yes
SN9C291B - USB2.0 H.264 Video Encoding Camera Controller MIPI: yes
SN9C270M - USB 2.0 High-Speed (HS) compatible PC Camera controller MIPI: yes
SN9C271M - USB 2.0 High-Speed (HS) compatible PC Camera controller MIPI: yes
SN9C281M - USB 2.0 High-Speed (HS) compatible PC Camera controller MIPI: yes
SN9C281A - USB 2.0 High-Speed (HS) compatible PC Camera controller MIPI: no
SN9C270A - USB 2.0 High-Speed (HS) compatible PC Camera controller MIPI: no
SN9C271A - USB 2.0 High-Speed (HS) compatible PC Camera controller MIPI: no
SN9C263 - USB 2.0 compatible PC Camera controller MIPI: no
SN98600 - SONIX SN98600 / 98601 / 98610 IP Camera SoC MIPI: yes
GL865A - USB 2.0 UVC/MJPG Camera Controller MIPI: yes
GL864A - USB 2.0 UVC Camera Controller MIPI: unknown
GL862EC - USB 2.0 PC Camera Controller MIPI: unknown


USB3.0 camera controllers (with MIPI interface):

RTS5825 - USB3.0 PC Camera Controller with Image Signal Processing and MJPEG Encoder
cyusb3064 - EZ-USB CX3 Programmable MIPI CSI-2 to USB 3.0 Camera Controller


IP camera SOC:

S3LM IP Camera SoC MIPI: yes
Hi3516A MIPI: yes
Hi3518 MIPI: no
GM8139 - High-Performance Solution for H.264 IP Camera Application MIPI: yes
GM8138/8138S - Cost-Effective Solution for H.264 IP Camera Application MIPI: yes
GM8136S/8135S - Economic H.264 IP Camera Application MIPI: yes

Mozart 330s Mozart 370s Mozart 385s Mozart 390s Mozart 395s - MIPI: unknown
R288C,R292C - H.264 Codec SoC with Dual Video Input Channel MIPI: yes
M388C,M392C - H.264 Encoder SoC with Integrated Fisheye Correction Function MIPI: yes

FH8810 - FH8810 high performance SoC for HD IPC - MIPI: yes
FH8830 - 2M/3M High Performance Camera SoC - MIPI: yes
FH8812 - High Performance SoC for IP Camera - MIPI: yes
FH8620 - Low-Power、High Performance Wireless Camera SoC
FH8610 - FH8610: Low Cost、High Performance Wireless Camera SoC
FH8550M - High Performance 1080P ISP for CCTV - MIPI: yes

Я смотрел даташиты на многие из этих чипов, и пришел к выводу, что если иметь доступ к их SDK (встроенной прошивке), то это очень интересное решение.
Не совсем понятно ограничение на разрешение видео для некоторых чипов, наверное встроенной памяти не хватит для перекодировки Bayer в MJPEG. Но если сенсор напрямую шлёт JPEG (типа Omnivision), то без проблем должно пролезть в USB. Вообще идеальный вариант был бы, только нужно знать конфигурационные регистры модуля, и его уже можно подключать к любой платформе с USB2.0 + UVC. Это можеть быть и Openwrt, и обычный ПК, и андроид.

3) Всякие ARM процессоры, например от Broadcom и Mediatek. Но их не купить толком и документации нету. Разве что Raspberry Pi.
Либо чипы очень дорогие, nvidia jetson и т.п..

Сообщение отредактировал tmtlib - Dec 23 2016, 05:03
Go to the top of the page
 
+Quote Post
Major
сообщение Dec 23 2016, 05:17
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 607
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 375



FPAG: Lattice MachXO3L-4300, на нем работает. Есть эвалюха с примерами от производителя. Цена от 4 уе за камень (там).
На MachXO3 делаю MIPI-CSI мост к Jetson.
Если взять 6900, то может и память DDR прицепиться сама. Дальше хоть по UART выкачивайте.

Cypress FX3 (USB3.0) - есть примеры, и уверен на все 100% что будет работать (использую FX3-GPIF для перекачки данных до 380 МБ/с).
Тут за голый камень от 20$

Дальше малины и другие платы с SoC у которых есть MIPI-CSI.

Go to the top of the page
 
+Quote Post
tmtlib
сообщение Dec 23 2016, 06:09
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 200
Регистрация: 30-10-10
Пользователь №: 60 531



А что за мост, что на выходе? Параллельный порт, USB?
Я пока искал чипы, ещё заметил что-то про MIPI/CSI2 у Intel Atom.

Видимо ничего проще Lattice не найти. Смотрю документацию: "The Lattice MIPI CSI2-to-CMOS Parallel Sensor Bridge reference design performs this conversion in the ultra-low density MachXO2™-1200HC FPGA."
Go to the top of the page
 
+Quote Post
Major
сообщение Dec 23 2016, 09:31
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 607
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 375



Цитата(tmtlib @ Dec 23 2016, 13:09) *
А что за мост, что на выходе? Параллельный порт, USB?
Я пока искал чипы, ещё заметил что-то про MIPI/CSI2 у Intel Atom.

Видимо ничего проще Lattice не найти. Смотрю документацию: "The Lattice MIPI CSI2-to-CMOS Parallel Sensor Bridge reference design performs this conversion in the ultra-low density MachXO2™-1200HC FPGA."


1. Атомов таких два или три, и будет дороже FX3 или малинки.
2. Я прикидываюсь камерой MIPI-CSI2, чтобы в Jetson загнать свои потоки данных от скоростных АЦП.

Для FPGA вам надо будет или память и/или интерфейс быстрый наружу (USB2/USB3/Ethernet100/1000).
Чобы быстро, я бы взял жетсон кит или кит на FX3 (все есть на столе).
С FX3 есть плюс, можно обойтись без памяти, перегоняя все сразу в комп по USB3.0.
По времени в 1 месяц можно уложиться. Есть пример в SDK и AP-note.
Если какмера гонит JGEG, может и USB2.0 хватить.

Если серия большая, то на MachXO3 подумать, самописное. В примерах есть и приемник MIPI и передатчик.

Go to the top of the page
 
+Quote Post
Alex11
сообщение Dec 24 2016, 22:24
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 014
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Еще можно и на Альтере сделать. На циклоне 3 у меня работает. И еще есть вариант с процессорами от TI. Там тоже есть некоторое количество их с CSI-2 интерфейсом.
Go to the top of the page
 
+Quote Post
_pv
сообщение Dec 25 2016, 08:41
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 195
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(Alex11 @ Dec 25 2016, 04:24) *
Еще можно и на Альтере сделать. На циклоне 3 у меня работает. И еще есть вариант с процессорами от TI. Там тоже есть некоторое количество их с CSI-2 интерфейсом.

а какая скорость lvds у третьего циклона?
а то латтис у machXO2 900Мбит обещает.
Go to the top of the page
 
+Quote Post
tmtlib
сообщение Dec 25 2016, 09:31
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 200
Регистрация: 30-10-10
Пользователь №: 60 531



Поискал разные fpga из ходовых и одновременно дешевых, где есть LVDS.

Я так понимаю XC6SLX9 Spartan-6 имеет lvds.
http://datasheet.octopart.com/XC6SLX9-2FTG...eet-8423772.pdf

И cyclone 4 ep1c3t144c8n в 144-pin корпусе.
EP1C3 devices in the 100-pin TQFP package do not support the LVDS I/O
standard.

У меня следующие вопросы.
Можно ли обойти трудности с MIPI таким образом:

1) включаем мобильник в режим снаятия видео, записываем часть потока по LVDS и как настраивается модуль камера по SPI.
Далее в своём устройстве попросту имитируем то, что делал мобильник. По минимуму, запись в регистры и т.п. Или всё равно придётся реализовывать этот MIPI, т.к. он каждый раз данные разлохматит по-разному, будет прыгать между low-power и high speed режимами и т.п.?

Я даже подумывал о таком варианте: модуль камеры с поданным питанием сначала подключен к мобильнику, там включается видео на запись, затем не отключая питания идёт перевтыкание mipi в FPGA отладочную плату, и там LVDS поток нарезается на байты и отправляется в память, интернет или USB.

2) зачем так много ячеек в FPGA на приём MIPI? Из-за анализа протокола обмена?
Я вообще представлял себе такую картину: в FPGA быстро сыплется MIPI по LVDS, а затем биты с минимальной обработкой (типа 8бит в 1 байт преобразовать, выбросить что-нибудь лишнее) сыплются в оперативную память, USB или ещё куда.

3) Я так понимаю LVDS можно принять и без специальных LVDS входов, особенно если расстояние по плате маленькое и скорость не очень высокая?
Какая там у ov5647 скорость я не знаю, может быть _pv знает =)

p.s. Но насколько я понимаю LCMXO2-1200HC это самый дешевый вариант, если документация не врет:
"The Lattice MIPI CSI2-to-CMOS Parallel Sensor Bridge reference design performs this conversion in the ultra-low density MachXO2™-1200HC FPGA."
Go to the top of the page
 
+Quote Post
_pv
сообщение Dec 25 2016, 11:11
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 195
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



подключиться в параллель к работающей камере не получится, скорости у fpga (без трансиверов) не хватит.
конфигурирование сенсора идёт через i2c, описание регистров в даташите.
из ресурсов плис там 70 регистров для 1 lane.
без lvds входов lvds принять не получится. 2592*1944*15fps*8бит = 605Мбит.

открыл бриф даташит на ov5647, и вдруг осознал, что перестал понимать как нынче такие сенсоры вообще работают:
ёмкость ячейки 4к электронов, это же отношение С/Ш всего 60.
Go to the top of the page
 
+Quote Post
tmtlib
сообщение Dec 25 2016, 15:48
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 200
Регистрация: 30-10-10
Пользователь №: 60 531



Я помню ты где-то говорил про передачу JPEG по mipi (идея была задействовать недокументированную низкую скорость обмена, отладочные команды для чтения буфера, если таковае имеются). И ещё я находил темы на зарубежных ресурсах, где люди по какой-то причине хотят считывать готовый JPEG по MIPI, и что-то там не стыкуется, но там проблемы в линуксах и драйверах UVC/V4L. Я достаточно отчетливо помню, что кто-то гнал JPEG по CSI, т.к. там была проблема как настроить этот CSI в процессоре на заранее неизвестный объём кадра JPEG.

605Мбит за секунду это понятно, но я что-то не понял какую минимальную частоту можно выставить в PLL (встроенной, у сенсора). Максимум заявлен около 1000 МГц, что явно многовато. И во что оборачивается пониженная частота работы PLL, кроме как низкого FPS. Например, затвор, что будет с ним. Например global shutter у ov5647. Будет ли опрос пикселей размазан по времени.

https://www.leopardimaging.com/uploads/LI-O...IPI-AF_SPEC.pdf
интересует PLL BYPASS. Будет ли MIPI работать на частоте кварца без умножения, если выставить PLL BYPASS?

Сообщение отредактировал tmtlib - Dec 25 2016, 16:00
Go to the top of the page
 
+Quote Post
_pv
сообщение Dec 25 2016, 17:03
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 195
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



в jpeg по-моему только ov5642 умеет, и документация у омнивижена отвратительная, я ниасилил.
была идея запустить только LP режим (который вообще 3.3в кмоп, а не lvds), или вообще через i2c попробовать jpeg хоть как-то вытащить, так как среди регистров там доступ к каким-то фифо был, но нормального описания кишков энкодера нет.
Go to the top of the page
 
+Quote Post
tmtlib
сообщение Dec 25 2016, 17:15
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 200
Регистрация: 30-10-10
Пользователь №: 60 531



Понятно, а что такое PLL BYPASS? Я что-то из блок-схем вообще не увидел где PLL соединён с MIPI CLOCK.

Вот, например:
OV2665 2 megapixel product brief
input clock frequency:
- PLL: 6~27 MHz
- PLL bypass mode: 6~54 MHz

Означает ли это, что если врубить PLL BYPASS, то mipi будет гнать всего-то жалкие 54 МГц (максимум, а минимум 6)?

Сообщение отредактировал tmtlib - Dec 25 2016, 17:28
Go to the top of the page
 
+Quote Post
_pv
сообщение Dec 25 2016, 22:14
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 195
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(tmtlib @ Dec 25 2016, 23:15) *
Понятно, а что такое PLL BYPASS? Я что-то из блок-схем вообще не увидел где PLL соединён с MIPI CLOCK.

PLL этот судя по всему на пиксельный клок, который до 54МГц, а MIPI потом сам на сколько надо (х8 или х10) умножает.

Go to the top of the page
 
+Quote Post
Alex11
сообщение Dec 26 2016, 16:46
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 014
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Cyclone 3 и 4 обещают скорость на приеме до 875 Мбит.
С камеры идет поток, который каждую строку переключается с low power на high speed, так что здесь без вариантов.
OV5647, насколько я вижу, не умеет сжимать на борту, так что там только полный поток. Если не нужно полное разрешение, то можно поток ужать. А куда Вы его потом девать будете? Он же нежатый только в USB3 полезет, да и то с трудом.
Go to the top of the page
 
+Quote Post
tmtlib
сообщение Dec 27 2016, 02:42
Сообщение #14


Местный
***

Группа: Участник
Сообщений: 200
Регистрация: 30-10-10
Пользователь №: 60 531



Меня интересует снятие одного несмазанного по времени кадра, выдрать единственный кадр из bayer или jpeg потока. Как я понимаю, против размазывания фото по времени (движущийся объект растягивается либо сжимается на фото) нужен global shutter или rolling shutter с очень высоким FPS. Модуль OV5647 заинтересовал доступностью и наличием global shutter. Но тут в интернете я какую-то противоречивую информацию вижу, что в OV5647 на самом деле rolling shutter, где-то на форуме raspberry pi. И что по мере вычитывания пикселей идёт засветка оставшихся пикселей, поэтому если читать медленно, то самые последние пиксели будут ярче и смазанные, и что-то про необходимость механического(!) затвора, который закроет матрицу во время считывания.

Сейчас возникли сомнения по принципу работы global shutter. Сомневаюсь, что в таком дешевом сенсоре есть frame buffer на несколько мегабайт, чтобы хранить все пиксели. Так что момент про засветку может быть правдой. Видимо global shutter-ом тут называют следующее: одновременно _обнулили_ все пиксели на матрице, а затем вычитали и послали по mipi. Если вычитывать долго, то у самых последних пикселей будет дольше время засветки, и если например махать чем-то перед камерой, то в месте последних пикселей будет больше смазывания (догадки).

Пока искал разные модули видел очень странные платы, например Altera MAX2 + какой-то сенсор на 14мегапикселей, может там параллельный интерфейс конечно.
Go to the top of the page
 
+Quote Post
Alex11
сообщение Dec 27 2016, 10:03
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 014
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



В DS на 5647 черным по белому написано:
4.10.1 FREX control
In FREX mode, whole frame pixels start integration at the same time, rather than integrating row by row. After the
user-defined exposure time (0x3B01, 0x3B04, 0x3B05), the shutter closes, preventing further integration and the image
begins to read out. After the readout finishes, the shutter opens again and the sensor resumes normal mode, waiting for
the next FREX request.
The OV5647 supports two modes of FREX (see figure 4-13):
mode 1: Frame exposure and shutter control requests come from the external system via the FREX pin. The sensor
will send a strobe output signal to control the flash light
mode 2: Frame exposure request comes from the external system via the SCCB register 0x3B08[0]. The sensor
will output two signals, shutter control signal through the FREX pin and strobe signal through the STROBE pin

Так что, это то, что Вам нужно. Если один кадр, то в FPGA спокойно примете, а дальше выдавайте с любой скоростью куда угодно. Не стоит только уменьшать скорость очень сильно, можно получить много шумов с матрицы.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th September 2017 - 10:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01597 секунд с 7
ELECTRONIX ©2004-2016