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 поддерживает оба варианта — внешнюю и встроенную синхронизацию.
Источники
- 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 или кодами, встроенными в поток
- STMicroelectronics. RM0385: STM32F75xxx and STM32F74xxx advanced Arm-based 32-bit MCUs. Reference manual, Rev 9 — гл. 17 Digital camera interface (DCMI) в STM32F74x/F75x
Нашли ошибку?
Смотрите также
- DMAПрямой доступ к памяти без участия ядра
- Двойной буфер DMAРежим DMA с двумя адресами памяти, которые меняются местами в конце каждой передачи
- Формат пикселяRGB444, RGB565, RGB666: биты на точку, команда 3Ah, размер кадра
- LTDC (контроллер LCD-TFT)Аппаратный вывод кадра на RGB-панель в STM32: слои, форматы, развёртка
- DMA2D (Chrom-ART Accelerator)DMA для заливки, копирования, преобразования формата и смешивания изображений
- STM32H7Cortex-M7 от 280 до 600 МГц, двухъядерные H745/H747 — линейки, память, загрузка и распиновки
- STM32F7Cortex-M7 до 216 МГц: F72x/F73x, F74x/F75x, F76x/F77x — линейки, память, загрузка и распиновки