Модули камер с DCMI для STM32: обзор параллельных камер Arducam
Цифровой интерфейс камеры (DCMI) в STM32: что это и как он работает
На микроконтроллерах STM32 работают миллионы устройств, но до 2017 года поддержки DCMI в них не было. В то время подключать камеры к этим микроконтроллерам позволяли камеры Arducam с SPI. В 2017 году STMicroelectronics добавила DCMI в новые семейства STM32 — так устройства IoT получили машинное зрение официальным путём.
DCMI — сокращение от Digital Camera Memory Interface, термин STMicroelectronics. Проще говоря, DCMI — синхронная параллельная шина данных, через которую некоторые микроконтроллеры STM32 напрямую работают с КМОП-камерами разрядностью 8, 10, 12 или 14 бит. Это официальный способ встроить сенсор во множество устройств на STM32.
Возможности цифрового интерфейса камеры (DCMI)
- Настраиваемый параллельный интерфейс данных — до 14 линий данных (D13–D0).
- Два режима захвата: Snapshot — один кадр, Continuous grab — непрерывный поток кадров.
- Поддержка прогрессивного видео в 8-битном формате, YCbCr 4:2:2 и RGB565, а также сжатых данных JPEG без ограничений на входе.
- Обрезка и масштабирование принятого изображения.
- Режимы пониженного энергопотребления для разных состояний (Run, Sleep, Stop/Standby).
Распространённые интерфейсы камер
Интерфейс DVP. Digital Video Port (DVP) — параллельный интерфейс камеры. Обычно это шина данных на 8–16 бит, сигналы HSYNC и VSYNC для кадровой синхронизации и тактовый сигнал PCLK, выровненный по центру относительно данных на стороне приёмника. Камеры с DVP полностью совместимы с DCMI в STM32.
Интерфейс MIPI CSI-2. MIPI — Mobile Industry Processor Interface; CSI — последовательный интерфейс камеры из одной пары тактовых линий и 1–4 линий данных. Это распространённый простой высокоскоростной протокол, в первую очередь для передачи изображений и видео по схеме «точка — точка» между камерой и хостом. Камеры MIPI напрямую с DCMI в STM32 не совместимы, но Arducam умеет подключать их и к обычному DCMI. Чтобы подобрать решение MIPI → DCMI для STM32, напишите нам на quote@arducam-russia.ru.
Интерфейс LVDS. LVDS (Low-voltage differential signaling) — низковольтная дифференциальная передача сигналов. Она даёт очень высокие скорости — гигабиты в секунду — при очень низком энергопотреблении и часто встречается в камерах Sony. LVDS тоже состоит из одной пары тактовых линий и 1–4 линий данных. Как и MIPI, его не поддерживает DCMI в STM32 напрямую. Чтобы узнать, как подключить камеру LVDS к микроконтроллеру STM32, напишите нам на quote@arducam-russia.ru.
Как работает DCMI

- Синхронизатор DCMI управляет тем, как данные с модуля камеры поступают в экстрактор данных, буфер FIFO и 32-битный регистр данных.
- Экстрактор данных DCMI обрабатывает данные и упаковывает их в FIFO на 4 слова, откуда они затем попадают в 32-битный регистр.
- Каждый раз, когда 32-битный блок данных заполнен, система отправляет запрос DMA.
- DMA забирает данные из регистра и передаёт их в нужную область памяти.
- Как обрабатывать данные дальше, разработчик решает под задачи своего проекта.
Подробное описание возможностей DCMI — в руководстве по применению AN5020 от ST.
DCMI и подключение камер к STM32: два типа микроконтроллеров STM32

Хорошая новость: благодаря поддержке камер через DCMI часть плат STM32 пришла в компьютерное зрение. В подкрепление STMicroelectronics добавила в свои программные инструменты (STM32Cube) пакет функций FP-AI-VISION1 с готовыми примерами — распознаванием продуктов питания и обнаружением присутствия человека.
Но удачным решением для 32-разрядной платформы STM32 DCMI не назовёшь: он делит всё семейство из 1168 микроконтроллеров на две группы:
1. Микроконтроллеры STM32 с поддержкой DCMI
- серия F7
- серия F2
- часть серии F4
- серия L4
- серия H7
Все эти платы работают с DCMI, а на некоторых даже стоят сенсоры, готовые к разработке. Такие платы удобны для быстрого создания проектов с камерой, но стоят довольно дорого. Для плат без встроенной камеры нужен отдельный модуль камеры.
2. Микроконтроллеры STM32 без поддержки DCMI
- серия F1
- серия L1
- серия F0
- серия F3
- серия L0
- большинство плат серий F2 и F4
- серия U5
- серия L5
Эти платы вышли до появления DCMI, и интерфейса камеры у них нет.
Как подключить камеру к микроконтроллеру STM32 без DCMI

По данным Arducam, модули камер Arducam с SPI — лучшая альтернатива DCMI по двум причинам:
- Они добавляют поддержку камер платам STM32 без интерфейса DCMI.
- На микроконтроллерах STM32 с DCMI они хорошо дополняют штатный интерфейс, когда на одной плате нужно несколько камер.


- Arducam 5MP Plus — мини-модуль камеры OV5642 с SPI (шилд) для Arduino UNO, Mega2560 и Raspberry Pi Pico
- Arducam Mini 2MP Plus — модуль камеры OV2640 с SPI для Arduino UNO, Mega2560 и Raspberry Pi Pico

Подробнее о камерах Arducam с SPI — в статье «Камеры с SPI для плат STM32 без DCMI: Arducam Mini на 2 Мп и OV5642 на 5 Мп» (опубликована 5 июня 2021 года).
Параллельные модули камер Arducam с DCMI для отладочных плат STM32

Для старших плат STM32 с поддержкой DCMI Arducam выпускает большую линейку совместимых модулей камер на десятках разных сенсоров. Их можно доработать под требования любой задачи.
Поддерживаемые сенсоры:
- OV2640
- OV9655
- OV5640
- OV5642
- S5K5CAGA
- NT99141
- MT9D111
- OV3640
- OV3660
- MT9P111
- S5K4ECGX
Arducam также делает заказные камеры на любых сенсорах и с любыми объективами.

Подробнее о сенсоре OV2640 — в статье «OV2640: характеристики, даташиты, камеры, особенности и аналоги» (опубликована 16 декабря 2020 года).
Камеры Arducam для STM32: планы

На момент публикации Arducam не собиралась останавливаться на десятке камер для STM32. Компания планировала сосредоточиться на едином SDK для камер с API для расширенного управления камерой (экспозиция, усиление, частота кадров, разрешение, формат пикселей) и простой интеграцией любых параллельных модулей камер Arducam. Цель — упростить работу над проектами с камерами на любой серии STM32: подключить сенсор к плате, скачать SDK и сразу приступить к работе, не тратя время на проблемы совместимости.
В планах Arducam — целое семейство камер с DCMI с хорошо поддерживаемой средой разработки для множества задач IoT, которым пригодится встраиваемое машинное зрение.
Чтобы обсудить камеру для вашего проекта на STM32, напишите нам на quote@arducam-russia.ru.

