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

DCMI (digital camera interface)

Многие модули CMOS-камер отдают изображение по параллельной шине: восемь и больше линий данных, такт пикселя и сигналы синхронизации строки и кадра. В STM32F7 и H7 для такой шины есть отдельный блок — DCMI.

Обновлено Редакция GAW

DCMI (digital camera interface) — синхронный параллельный интерфейс STM32 для модулей CMOS-камер. По RM0433 (разд. 31.1) он принимает быстрый поток данных от камеры с шиной 8, 10, 12 или 14 бит и поддерживает форматы YCbCr 4:2:2, RGB565 и сжатые данные JPEG.

Сигналы

СигналНазначение
DCMI_D[13:0]данные пикселя, используются 8–14 линий
DCMI_PIXCLKтакт пикселя, полярность программируется
DCMI_HSYNCсинхронизация строки
DCMI_VSYNCсинхронизация кадра

Синхронизация бывает внешней — по HSYNC и VSYNC — или встроенной, кодами в самом потоке данных.

Возможности (разд. 31.2)

  • непрерывный захват видео и однократный снимок (snapshot);
  • обрезка кадра (crop) — захват только нужного окна;
  • форматы: монохромное или сырое Bayer-видео 8–14 бит, YCbCr 4:2:2, RGB565, JPEG (бит JPEG в DCMI_CR).

Роль DMA

DCMI только упаковывает пиксели в 32-битный регистр DCMI_DR, а буфер изображения ведёт DMA, не сам интерфейс (разд. 31.3). Поэтому захват кадра — это настройка канала DMA на нужный объём памяти. Для видео удобен двойной буфер: DMA пишет следующий кадр, пока программа обрабатывает предыдущий.

Готовый кадр можно преобразовать и вывести на экран: формат пикселя меняет DMA2D, выдаёт на дисплей LTDC. DCMI есть в STM32F7 (RM0385, гл. 17) и STM32H7.

Частые вопросы

Как подключить модуль камеры с параллельной шиной к STM32?

Через DCMI, если он есть у микроконтроллера, — например, у STM32F7 или STM32H7. Восемь линий данных модуля подключают к DCMI_D0–D7, такт пикселя — к DCMI_PIXCLK, сигналы строки и кадра — к DCMI_HSYNC и DCMI_VSYNC, а саму камеру настраивают по её управляющей шине. Кадр складывается в память через DMA. Для захвата JPEG в DCMI есть отдельный режим.

Почему DCMI работает только вместе с DMA?

Сам DCMI лишь упаковывает пиксели в 32-битный регистр данных. По RM0433 буфером изображения управляет DMA, а не интерфейс: поток с камеры идёт на частоте такта пикселя, и процессор не успел бы забирать каждое слово. Для непрерывного видео удобен двойной буфер: пока DMA пишет один кадр, программа обрабатывает другой.

Что такое встроенная синхронизация DCMI?

Режим, в котором начало и конец строки и кадра обозначают не отдельные линии HSYNC и VSYNC, а специальные коды внутри потока данных. Так экономят два вывода, но камера должна уметь их выдавать. DCMI поддерживает оба варианта — внешнюю и встроенную синхронизацию.

Источники

  1. STMicroelectronics. RM0433: STM32H742, STM32H743/753 and STM32H750 Value line advanced Arm-based 32-bit MCUs. Reference manual, Rev 9 — разд. 31.1: DCMI — синхронный параллельный интерфейс для быстрого потока данных от внешнего 8-, 10-, 12- или 14-битного модуля CMOS-камеры; форматы YCbCr 4:2:2 и RGB565 (прогрессивное видео) и сжатые данные JPEG; разд. 31.2: синхронизация строк и кадров встроенная или внешняя; непрерывный и однократный (snapshot) режимы; обрезка (crop); 8/10/12/14-битное прогрессивное видео — монохромное или сырой Bayer; разд. 31.3: до 14 линий данных DCMI_D[13:0] и линия такта пикселя DCMI_PIXCLK с программируемой полярностью; данные упаковываются в 32-битный регистр DCMI_DR и передаются каналом DMA общего назначения; буфер изображения ведёт DMA, а не интерфейс; приём JPEG — бит JPEG в DCMI_CR; синхронизация — по линиям DCMI_HSYNC и DCMI_VSYNC или кодами, встроенными в поток
  2. STMicroelectronics. RM0385: STM32F75xxx and STM32F74xxx advanced Arm-based 32-bit MCUs. Reference manual, Rev 9 — гл. 17 Digital camera interface (DCMI) в STM32F74x/F75x

Нашли ошибку?