К содержимому
  1. Главная
  2. Документация
  3. Промышленные USB-камеры
  4. Плата-адаптер Arducam MIPI для USB3.0 Camera Shield

Плата-адаптер Arducam MIPI для USB3.0 Camera Shield

Документация Arducam · перевод arducam-russia.ru

Общие сведения

Плата-адаптер Arducam MIPI для USB3 Camera Shield (UC-628 Rev.B) работает вместе с платой Arducam USB3.0 Camera Shield (UC-425 Rev.C) и позволяет принимать по USB 3.0 данные с камер MIPI.

Плата-адаптер Arducam MIPI для USB3 Camera Shield
Плата-адаптер Arducam MIPI для USB3 Camera Shield (UC-628)

Плата-адаптер Arducam MIPI для USB3.0 Camera Shield (UC-628 Rev.B)

Плата Arducam USB3.0 Camera Shield (UC-425)

Плата Arducam USB3.0 Camera Shield (UC-425 Rev.C)

Например, если подключить камеру OV9281 к плате-адаптеру MIPI и USB3.0 Camera Shield, получится такой комплект:

Оценочный комплект USB-камеры OV9281 1 Мп с глобальным затвором

Связка из платы-адаптера MIPI (UC-628) и USB3.0 Camera Shield (UC-425) работает с разными камерами и с разными режимами одной камеры. Для этого в программе на ПК загружают разные конфигурационные файлы.

Загрузка конфигурационного файла в программе на ПК (1)
Загрузка конфигурационного файла в программе на ПК (2)

Конфигурационные файлы для платы-адаптера MIPI (UC-628) лежат на GitHub в репозитории ArduCAM_USB_Camera_Shield, в папке Config/USB3.0_UC-425_Rev.C+UC-628_Rev.B.

Папка с конфигурационными файлами для UC-628

Как устроен конфигурационный файл

Разберём содержимое конфигурационного файла на примере ниже — так вам будет проще изменить его под свои задачи.

Конфигурационный файл OV5647_MIPI_2Lane_RAW8_8b_2592 × 1944_8fps.cfg

Комментарии

Строки, которые начинаются с «;» и «//», — комментарии.

Большой комментарий в начале конфигурационного файла описывает режим отображения, адрес камеры и другие способы настройки.

Комментарий в начале конфигурационного файла

Иногда после настройки регистра камеры добавляют комментарий с назначением регистра.

Комментарий после настройки регистра камеры

Режим отображения и адрес камеры

Раздел, который начинается со строки [camera parameter], задаёт режим отображения и адрес камеры.

Раздел настроек камеры в конфигурационном файле

① CFG_MODE

Параметр CFG_MODE в конфигурационном файле
Параметр CFG_MODE в программе на ПК (1)
Параметр CFG_MODE в программе на ПК (2)

CFG_MODE = 0: параметры можно менять в интерфейсе программы на ПК.

CFG_MODE = 1: параметры нельзя менять в интерфейсе программы на ПК.

② TYPE

Параметр TYPE в конфигурационном файле
Параметр TYPE в программе на ПК

TYPE обозначает модель камеры — для удобства просмотра.

Модель камеры из параметра TYPE в программе на ПК
ПримечаниеTYPE — просто комментарий: ошибка в нём ни на что не влияет.

③ SIZE

Параметр SIZE в конфигурационном файле
Параметр SIZE в программе на ПК (1)
Параметр SIZE в программе на ПК (2)

Если SIZE не совпадает с фактическим разрешением на выходе камеры, программа выдаст ошибку Bad frame received.

Сообщение об ошибке в программе на ПК

Чтобы в реальном времени видеть разрешение камеры MIPI, которое определяет CPLD, выберите Tools → Data Info.

Пункт меню для просмотра сведений MIPI
Разрешение камеры MIPI в окне сведений

④ BIT_WIDTH

Параметр BIT_WIDTH в конфигурационном файле
Параметр BIT_WIDTH в программе на ПК (1)
Параметр BIT_WIDTH в программе на ПК (2)

Примечание:

  • Режим MIPI RAW8: камера выдаёт 8 бит, BIT_WIDTH = 8 бит.
  • Режим MIPI RAW10: камера выдаёт 10 бит. Программа на ПК пока не умеет разбирать RAW10, поэтому CPLD отбрасывает два младших бита и передаёт данные в 8-битном виде. BIT_WIDTH тоже равен 8 бит.
  • Режим MIPI RAW12: на входе 12 бит. Программа на ПК пока не умеет разбирать RAW12, поэтому CPLD отбрасывает четыре младших бита и передаёт данные в 8-битном виде. BIT_WIDTH тоже равен 8 бит.

⑤ FORMAT

Параметр FORMAT в конфигурационном файле
Параметр FORMAT в программе на ПК (1)
Параметр FORMAT в программе на ПК (2)

FORMAT = 0, 2 задаёт порядок GB — один из четырёх вариантов расположения цветов в RAW. Порядок можно также переключить в правом нижнем углу программы на ПК после загрузки конфигурационного файла.

Переключение порядка цветов RAW в программе на ПК

⑥ I2C_MODE и I2C_ADDR

Параметры I2C_MODE и I2C_ADDR в конфигурационном файле
Параметры I2C_MODE и I2C_ADDR в программе на ПК (1)
Параметры I2C_MODE и I2C_ADDR в программе на ПК (2)

I2C_MODE = 2 означает, что камера работает по I2C с 16-битным адресом и 8-битными данными. I2C_ADDR = 0 × 6C — адрес сенсора на шине равен 0 × 6C.

Режим I2C и адрес сенсора смотрите в документации на сенсор или в других справочных материалах.

Режим I2C и адрес в документации на сенсор (1)
Режим I2C и адрес в документации на сенсор (2)

Настройка USB-прошивки и CPLD

Разделы настройки USB и CPLD в конфигурационном файле (1)
Разделы настройки USB и CPLD в конфигурационном файле (2)

[register parameter]: набор параметров регистров для режимов USB 2.0 и USB 3.0. [register parameter][dev2]: набор для режима USB 2.0. [register parameter][dev3][inf2]: набор для режима USB 3.0 при подключении к интерфейсу USB 2.0. [register parameter][dev3][inf3]: набор для режима USB 3.0 при подключении к интерфейсу USB 3.0.

Если USB3.0 Camera Shield подключена к порту USB 3.0, действуют обе секции — [register parameter] и [register parameter][dev3][inf3]. Более поздние настройки перезаписывают более ранние в порядке записи и загрузки.

Настройка USB-прошивки

Настройка USB-прошивки в конфигурационном файле
VRCMD = 0xF6, 0x0000, 0x0000, 3, 0x03, 0x04, 0x0C
VRCMD = 0xF3, 0x0000, 0x0000, 0
VRCMD = 0xF9, 0x0001, 0x0000, 0 // 0x0001 is 16 bits; 0x0004 is 32 bits

Эти строки задают настройки прошивки USB 3.0, обычно их менять не нужно.

Настройка CPLD

На плате-адаптере MIPI для USB3.0 Camera Shield (UC-628) установлена CPLD, которая обрабатывает данные камеры.

CPLD на плате-адаптере MIPI

Функции CPLD задаются настройкой регистров.

Настройка регистров CPLD в конфигурационном файле

CPLD работает с 8-битными адресами и 8-битными данными.

① Число линий MIPI и формат RAW

VRCMD = 0xD7, 0x4600, 0x0C00, 1, 0x81
Регистр 0 × 0C: число линий MIPI и формат RAW
  • Интерфейс MIPI может работать с 1, 2 или 4 линиями.
  • Поддерживаются три формата RAW: RAW8, RAW10 и RAW12 (другие форматы RAW пока не поддерживаются).
Число линийФормат RAWЗначение 0 × 0C
1RAW80 × 80
2RAW80 × 81
4RAW80 × 82
1RAW100 × 90
2RAW100 × 91
4RAW100 × 92
1RAW120xA0
2RAW120xA1
4RAW120xA2
ПримечаниеЕсли число линий и формат RAW заданы неверно, CPLD не сможет разобрать данные MIPI и программа на ПК не выведет изображение.

② Опорное значение разрешения MIPI

VRCMD = 0xD7, 0x4600, 0x0D00, 1, 0x0A
VRCMD = 0xD7, 0x4600, 0x0E00, 1, 0x20
VRCMD = 0xD7, 0x4600, 0x0F00, 1, 0x07
VRCMD = 0xD7, 0x4600, 0x1000, 1, 0x98
Регистры 0 × 0D–0 × 10: опорное значение разрешения MIPI

Регистры 0 × 0D–0 × 10 задают опорное значение разрешения. Они учитываются, только если включена проверка WordCount для разрешения MIPI (bit[2] регистра 0 × 11).

  • Если в 0 × 11 записано 0 × 03, проверка WordCount выключена и значения 0 × 0D–0 × 10 можно не задавать.
  • Если в 0 × 11 записано 0 × 07, значения 0 × 0D–0 × 0E должны быть верными, иначе CPLD не сможет выделить HREF и программа на ПК не выведет изображение.

③ Проверка данных MIPI

VRCMD = 0xD7, 0x4600, 0x1100, 1, 0x07

Регистр 0 × 11 включает несколько видов проверки данных MIPI (DataID, WordCount, ECC).

Любой пакет MIPI — и короткий (начало и конец кадра), и длинный (строка данных) — содержит поля DataID, WordCount и ECC.

Структура короткого пакета MIPI
Структура длинного пакета MIPI

DataID состоит из VC (виртуальный канал) и DT (DataType, тип данных).

Состав поля DataID: VC и DT

VC обычно не используется; из типов данных DT чаще всего встречаются RAW8 и RAW10.

Коды типов данных DT для форматов RAW
Регистр 0 × 11: настройка проверки данных MIPI
ПримечаниеЕсли проверка данных MIPI не настроена или настроена неверно, данные MIPI могут разбираться с ошибками и изображение не появится.
Назначение битов регистра 0 × 11
  • bit[1] включает проверку DataType. При значении 1 разбираются только данные MIPI в форматах RAW8 (DataType = 0 × 2A), RAW10 (DataType = 0 × 2B) и RAW12 (DataType = 0 × 2C).
  • bit[2] включает проверку WordCount. При значении 1 данные MIPI разбираются, только если WordCount совпадает со значением в 0 × 0D–0 × 0E.
  • bit[5:4] задают порядок вычисления ECC. ECC вычисляется по трём байтам — DI, WC_H и WC_I, и при разном порядке значения ECC получаются разными.

У большинства камер этот порядок настраивается; по умолчанию обычно используется DI, WC_I, WC_H.

Порядок вычисления ECC в документации на сенсор

Общие рекомендации:

  • Для 2 и 4 линий достаточно включить проверки ECC и DataType, проверку WordCount можно не включать. То есть в регистр 0 × 11 записывается 0 × 03, а регистры 0 × 0D–0 × 10 можно не задавать.
VRCMD = 0xD7, 0x4600, 0x1100, 1, 0x03
  • Для 1 линии нужно включить проверку WordCount, иначе разбор данных может быть нестабильным. То есть в регистр 0 × 11 записывается 0 × 07, а регистры 0 × 0D–0 × 10 нужно задать по фактическому разрешению. Если разрешение задано неверно, CPLD не сможет выделить HREF и программа на ПК не выведет изображение.

Например, настройка OV7251 для 1 линии и RAW8:

Настройка CPLD для OV7251: 1 линия, RAW8

Настройка камеры

Раздел настройки камеры в конфигурационном файле (1)
Раздел настройки камеры в конфигурационном файле (2)
Раздел настройки камеры в конфигурационном файле (3)

[register parameter]: набор параметров регистров для режимов USB 2.0 и USB 3.0. [register parameter][dev2]: набор для режима USB 2.0. [register parameter][dev3][inf2]: набор для режима USB 3.0 при подключении к интерфейсу USB 2.0. [register parameter][dev3][inf3]: набор для режима USB 3.0 при подключении к интерфейсу USB 3.0.

Если USB3.0 Camera Shield подключена к порту USB 3.0, действуют обе секции — [register parameter] и [register parameter][dev3][inf3]. Более поздние настройки перезаписывают более ранние в порядке записи и загрузки.

В некоторых конфигурационных файлах есть большой раздел из строк, которые начинаются с «VRCMD =». Он настраивает старые платы-адаптеры MIPI (UC-489 Rev.C). Его оставляют для совместимости старых и новых моделей, но на новую плату-адаптер MIPI (UC-628) он не действует.

Раздел VRCMD для старой платы-адаптера MIPI

Например:

  • REG = 0x3035, 0x11 — 16-битный адрес и 8-битные данные.
  • Сначала правильно задайте I2C_MODE и I2C_ADDR в начале конфигурационного файла.
Строки REG с настройкой регистров камеры

Конкретные настройки камеры берите из даташита. Чаще всего настраивают регистры PLL, VTS/HTS, экспозиции, усиления, режима RAW и т. д.

Регистры камеры в даташите (1)
Регистры камеры в даташите (2)
Регистры камеры в даташите (3)
Регистры камеры в даташите (4)

Примеры правки

Ниже — несколько примеров того, как править конфигурационный файл.

Переход с RAW8 на RAW10

Возьмём для примера файл OV5647_MIPI_2Lane_RAW8_8b_2592x1944_8fps.cfg и переделаем его под режим «2 линии, RAW10, 2592 × 1944»: число линий и разрешение остаются прежними, меняется только формат RAW.

Сначала скопируйте файл OV5647_MIPI_2Lane_RAW8_8b_2592x1944_8fps.cfg.

Копирование конфигурационного файла

Затем переименуйте копию.

Переименованная копия конфигурационного файла

Откройте её в текстовом редакторе (например, Notepad++).

Камера и разрешение не меняются, поэтому раздел [Camera parameter] править не нужно.

Раздел настроек камеры без изменений

В настройках CPLD измените значение регистра 0 × 0C с 0 × 81 на 0 × 91.

Значение регистра 0 × 0C изменено на 0 × 91
Число линийФормат RAWЗначение 0 × 0C
1RAW80 × 80
2RAW80 × 81
4RAW80 × 82
1RAW100 × 90
2RAW100 × 91
4RAW100 × 92
1RAW120xA0
2RAW120xA1
4RAW120xA2

Найдите в документации на камеру регистр, который задаёт формат RAW.

Регистр 0 × 3034 в документации на OV5647

Формат RAW задаёт регистр 0 × 3034. Значение по умолчанию 0 × 1A означает RAW10, значение 0 × 18 — RAW8.

Найдите 0 × 3034 в конфигурационном файле. Он встречается в двух местах, действует последнее.

Регистр 0 × 3034 в конфигурационном файле

Текущее значение 0 × 3034 — 0 × 18, замените его на 0 × 1A.

Сохраните изменённый файл.

Нажмите refresh — в выпадающем списке появится только что созданный файл.

Новый конфигурационный файл в выпадающем списке

Нажмите по очереди load → open → play — появится нормальное изображение.

Изображение с камеры в режиме RAW10

Выберите Tools → Data Info.

Пункт меню для просмотра сведений MIPI
Окно сведений MIPI с DataType 0 × 2B

CPLD определила DataType 0 × 2B — значит, данные действительно в формате RAW10.

Таблица кодов DataType для форматов RAW
ПримечаниеЧто учесть при смене формата RAW:
  1. Если после перехода с RAW8 на RAW10 программа на ПК выдаёт ошибку badframe, возможно, объём данных в строке вырос в 1,25 раза, а HTS слишком мал. Увеличьте HTS, чтобы получить изображение. При переходе с RAW10 на RAW8 HTS менять не нужно.
  2. У некоторых камер при смене формата RAW нужно изменить и регистры PLL.
  3. Программа на ПК пока не умеет разбирать RAW10, поэтому CPLD на USB2.0 Camera Shield Rev.E отбрасывает два младших бита и передаёт данные в 8-битном виде. Поэтому BIT_WIDTH задаётся равным 8 бит; для RAW12 — тоже 8 бит.

Как определить формат RAW и разрешение

Ниже показано, как исправить конфигурационный файл, если число линий известно, а формат RAW и точное разрешение — нет. Предполагается, что камера выдаёт данные нормально и под вопросом только настройка USB2 Camera Shield.

Снова возьмём для примера файл OV5647_MIPI_2Lane_RAW8_8b_2592x1944_8fps.cfg.

Сначала скопируйте файл OV5647_MIPI_2Lane_RAW8_8b_2592x1944_8fps.cfg и дальше работайте с копией.

Копия конфигурационного файла

Откройте её в текстовом редакторе (например, Notepad++).

Для примера намеренно укажем неверный SIZE: 2500,1900 вместо 2592,1944.

Неверное значение SIZE в конфигурационном файле

Так же намеренно ошибёмся в регистре 0 × 0C: изменим 0 × 81 на 0 × 91.

Неверное значение регистра 0 × 0C

Программа на ПК загружает этот файл и выдаёт ошибку Bad frame received.

Сообщение об ошибке после загрузки файла

Сведения о данных MIPI тоже неверные.

Неверные сведения о данных MIPI

Теперь измените значение регистра 0 × 11 с 0 × 07 (или 0 × 03) на 0 × 01.

Значение регистра 0 × 11 изменено на 0 × 01

Сохраните файл, загрузите его заново и снова откройте окно Data Info.

Сведения о данных MIPI после изменения регистра 0 × 11

0 × 2A означает RAW8, разрешение — 2592 × 1944.

Таблица кодов DataType для форматов RAW

Теперь исправьте конфигурационный файл:

  • верните SIZE = 2592,1944;
  • запишите в 0 × 11 значение 0 × 03;
  • запишите в 0 × 0C значение 0 × 81.

Изображение выводится нормально.

ПримечаниеЕсли камера выдаёт RAW10, то после записи 0 × 01 в регистр 0 × 11 значение Col в окне Data Info — уже не число столбцов, а длина строки в байтах (WordCount). Например, на рисунке ниже — результат для конфигурации RAW10 после записи 0 × 01 в 0 × 11. Значение 0 × 2B означает RAW10, а объём данных RAW10 в 1,25 раза больше, чем RAW8, поэтому число столбцов — 3240 / 1,25 = 2592. Другой путь: сначала исправьте 0 × 11 и 0 × 0C (0 × 11 = 0 × 03, 0 × 0C = 0 × 91), затем посмотрите сведения в окне Data Info — Col и Row теперь будут точными — и в конце исправьте SIZE.
Сведения о данных MIPI для конфигурации RAW10 при 0 × 11 = 0 × 01
Значение Col для RAW10 в окне сведений MIPI

Запросить цену

Укажите количество — пришлём коммерческое предложение.