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

Как подключить MIPI CSI-2 камеру?

Существует множество сенсоров, у которых имеется только 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

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


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

FPAG: Lattice MachXO3L-4300, на нем работает. Есть эвалюха с примерами от производителя. Цена от 4 уе за камень (там).

На MachXO3 делаю MIPI-CSI мост к Jetson.

Если взять 6900, то может и память DDR прицепиться сама. Дальше хоть по UART выкачивайте.

 

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

Тут за голый камень от 20$

 

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

 

 

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


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

А что за мост, что на выходе? Параллельный порт, 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."

 

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


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

А что за мост, что на выходе? Параллельный порт, 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 и передатчик.

 

 

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


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

Еще можно и на Альтере сделать. На циклоне 3 у меня работает. И еще есть вариант с процессорами от TI. Там тоже есть некоторое количество их с CSI-2 интерфейсом.

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


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

Еще можно и на Альтере сделать. На циклоне 3 у меня работает. И еще есть вариант с процессорами от TI. Там тоже есть некоторое количество их с CSI-2 интерфейсом.

а какая скорость lvds у третьего циклона?

а то латтис у machXO2 900Мбит обещает.

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


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

Поискал разные 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."

 

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


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

подключиться в параллель к работающей камере не получится, скорости у fpga (без трансиверов) не хватит.

конфигурирование сенсора идёт через i2c, описание регистров в даташите.

из ресурсов плис там 70 регистров для 1 lane.

без lvds входов lvds принять не получится. 2592*1944*15fps*8бит = 605Мбит.

 

открыл бриф даташит на ov5647, и вдруг осознал, что перестал понимать как нынче такие сенсоры вообще работают:

ёмкость ячейки 4к электронов, это же отношение С/Ш всего 60.

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


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

Я помню ты где-то говорил про передачу 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

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


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

в jpeg по-моему только ov5642 умеет, и документация у омнивижена отвратительная, я ниасилил.

была идея запустить только LP режим (который вообще 3.3в кмоп, а не lvds), или вообще через i2c попробовать jpeg хоть как-то вытащить, так как среди регистров там доступ к каким-то фифо был, но нормального описания кишков энкодера нет.

 

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


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

Понятно, а что такое 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

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


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

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

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

 

 

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


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

Cyclone 3 и 4 обещают скорость на приеме до 875 Мбит.

С камеры идет поток, который каждую строку переключается с low power на high speed, так что здесь без вариантов.

OV5647, насколько я вижу, не умеет сжимать на борту, так что там только полный поток. Если не нужно полное разрешение, то можно поток ужать. А куда Вы его потом девать будете? Он же нежатый только в USB3 полезет, да и то с трудом.

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


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

Меня интересует снятие одного несмазанного по времени кадра, выдрать единственный кадр из 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мегапикселей, может там параллельный интерфейс конечно.

 

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


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

В 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 спокойно примете, а дальше выдавайте с любой скоростью куда угодно. Не стоит только уменьшать скорость очень сильно, можно получить много шумов с матрицы.

 

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


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

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

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

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

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

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

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

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

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

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