OSD на STM32 - задел

delfer

Чаще всего, для OSD необходим отдельный детектор синхросигналов. На самом деле, для выделения синхросигналов достаточно скорости АЦП и вычислительной мощности STM32F103 (даже STM32F100 должно хватить).
Я занялся этим вопросом и набросал небольшой проект: github.com/delfer/pOSD
Так как синхросигналы имеют отрицательный потенциал (почти всегда), видео сигнал подается через делитель к Vcc, а резистор 75 Ом к земеле - только если камера не подключена ни к какому потребителю видео сигнала: raw.githubusercontent.com/delfer/…/README.md
После включения программа определяет уровень синхросигнала (достаточно долго перебирает), затем в глобальные переменные пишется:

  1. Формат сигнала (PAL/NTSC)
  2. Тип текущего кадра (четный/нечетный)
  3. Число строк в кадре
  4. Длина строки (в тиках таймера)
  5. Номер текущей строки
  6. По таймеру можно определить положение в текущей строке
    Теперь достаточно реализовать знакогенератор и дергать ножной (MOSI SPI) в подходящий момент. Таким образом получим OSD на одном чипе, ценой 100-200 рублей. Можно будет выводить напряжение, время, температуру со встроенного датчика. Высоту/крен/тангаж/ток и прочее, конечно, придется реализовывать дополнительными датчиками.
    Я же этот проект бросил в состоянии детектора синхросигналов, так как решил перейти на цифровые камеры.
    Надеюсь эта информация кому-то поможет.
Vovets

Цифровые камеры - это те, что кадр в виде оцифрованной/сжатой картинки передают? Какой протокол по воздуху используется? Если не сложно, киньте, пожалуйста, ссылку на какой-нибудь пример такого видео канала.

delfer

Цифровые только камера и наложение OSD. Передача же по аналоговому тракту, в качестве резервного канала - GPRS.
Передавать видео необходимо по аналоговым каналам, так как задержки минимальны, а сильные помехи все равно позволят продолжить управление. В то время как потеря базового кадра в цифровом видеопотоке приводит к потере изображения на несколько секунд.
Касательно ссылки - вот. А камера - любая с HDMI выходом, так же GoPro, например.

Vovets

Я правильно понимаю, что Вы собираетесь декодировать HDMI, накладывать OSD и опять кодировать уже в PAL/NTSC, который и передавать по радио?

delfer

Нет. Родная камера на клоне Raspberry Pi (odroid-w), интерфейс MIPI-CSI. Видео пишется на флешку в full hd, превью выводится на RCA. На превью накладывается оверлей с графикой или текстом.

Vovets

Круто! И как задержка получается?