dron-r

Stm32F4 И Аналоговая Камера

16 сообщений в этой теме

dron-r    13

Добрый день.

Хочу научиться подключать аналоговую видеокамеру к STM32F4 (дискавери).

У меня есть такая камера: 690TVL Ultra WDR Pixim SEAWOLF HD CCTV Mini Camera 2.8mm Lens OSD. У нее 3 выхода: +, -, сигнал.

Как можно ее подключить к STM32? В дальнейшем хочу к картинке примешать текстовые данные (OSD).

Кто соединял камеры, подскажите что смотреть/читать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mail_robot    1 424

я не соединял, но покуривал вопрос. Камеру с аналоговым выходом будет сложновато подключить. Вообще камеры это не для STM-ок. Нужен как минимум фрэймбуфер, чтобы данные обрабатывать и все это еще и на довольно высоких скоростях. Это уже область применения ПЛИС, а не МК. Для утилитарных задач типа отловить по строкам чтото еще пойдет, а для полноценной покадровой (черезкадровой) обработки видео даже четырехсотки будет маловато. Поэтому забил на камеры

хз, возможно курил не тут траву. Поэтому мое мнение не база

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
andryxa    229

Для наложения текста на видео, камеру к STM подключать не обязательно, достаточно выделить горизонтальные и вертикальные синхроимпульсы из видеосигнала и подать их на микроконтроллер, в котором будет генерироваться текст. Сгенерированный текст подмешивается к сигналу видео и вы получаете видео с текстом или графикой. Для выделения синхроимпульсов можно воспользоваться микросхемой LM1881.

Изменено пользователем andryxa

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
UTSource

Найдите миллионы труднодоступных

электронных компонентов

mail_robot    1 424

такое дело весьма даже красиво выглядит, если речь идет только об OSD без какого либо анализа видеопотока

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
o_l_e_g    1 642

Подмешивать в видеосигнал, умели и медленные 8-разрядные ЦПУ, вспомните телевизоры 4-го поколения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mail_robot    1 424

ну собсна если речь идет о генерации изображения, то это умели еще спектрумы ) Не совсем правда процессором, но с его участием. Генерация кадра и чтение с камеры это кардинально разные задачи по производительности

Изменено пользователем mail_robot

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
КЭС    1 143

Кто соединял камеры, подскажите что смотреть/читать...

Я делал на основе этого градусник. Это не STM, но для понимания, думаю сойдет. Сразу оговорюсь: если решите повторить, синхроимпульсы выделяйте отдельно (LM1881), в исходном виде схема нестабильна.

Прошу прощения за качество скриншота - делал через TeamViewer.

post-163091-0-34538000-1455292989_thumb.jpg

ПС. Градусник в центре, т.к. раньше был другой регистратор, там в кадре свободно было. Переписывать лень - надо на чердак лезть за МК :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
КЭС    1 143

Температура от ds18B20 - там по исходнику понятно, куда цеплять и про LM1881 есть коммент. Извиняюсь за кривость кода - дела давние :) Сразу скажу: прерывания приходится отключать, поэтому изо иногда подергивается. Надо было на LM335 делать или подобных - тупо напряжение мерить, да не было тогда... Да и не серьезно все это, так, по-играться :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
artos5    290

Понял, спасибо . Попробую расковырять код . А ПИКа хватает для ОСД? Ему не тяжело на 25МГц работать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
КЭС    1 143

По даташиту вроде 20 МГц потолок (не помню), но работает. По хорошему, надо бы еще в два-три раза поднять (на изо хорошо просматривается разрыв между соседними пикселами по горизонтали). Про вертикаль вообще молчу: счет строк ведется подряд после кадр. синхроимпульса, что при чересстрочной развертке (а именно такая используется в ТВ) приводит к прорисовке OSD через строку. Все это хорошо видно на моем скриншоте. Но это задача не для этого мк. Еще раз повторю: это не более чем игрушка.

ПС. Если надумаешь повторить, видеосигнал подавай через резистор несколько десятков Ом. Так, как показано на схеме из ссылки, может не заработать, если Rвнутр. источника видео достаточно мало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Похожие публикации

    • Автор: Aven
      Находимся в поиске программиста на длительный проект.
      Что есть: плата на основе STM32F103 + SIM808 (используется GSM, GPS, Bluetooth) + GPIO
      Задача - заставить все это работать с сервером (сервер пишется).
      Подробности при личном общении.
      Желательно Ростов-на-Дону или Ростовская область.
      Связь через ЛС или почту Rough_ne(a)mail.ru.
       
    • Автор: RDL_Rider
      Требуются разработчики электроники, знающие программирование STM32 или программисты STM32, знающие электронику, возможно студенты.
      Требования: желание развиваться в данном направлении, наличие собственных проектов на stm32.
      Возможно официальное оформление или договор подряда.
      Возможна удалённая работа, но всё равно актуально только для минчан, или для людей, 
      которые в случае чего в течение нескольких часов могут быть в Минске.
      Связь через ЛС.
    • Гость Максим
      Автор: Гость Максим
      Всем светлым и умным головам привет!

      Никак не могу найти информацию о данном прерывании TIM1_BRK_UP_TRG_COM.
      Вопрос 1: Что это за стек или система прерываний? 
      Вопрос 2: Когда будет вызываться обработчик прерывания TIM1_BRK_UP_TRG_COM_IRQHandler, если также есть обработчик прерывания TIM1_CC_IRQHandler?
      Вопрос 3: период переполнения таймера равен 100 мкс. Сколько раз будет вызываться обработчик прерывания TIM1_BRK_UP_TRG_COM_IRQHandler до обработчика прерывания TIM1_CC_IRQHandler? По логике вещей, предполагаю, что 100 раз?
      Заранее благодарен!

      Всем радости))
    • Автор: lamer19
      Здравствуйте, хочу изучить семейство Cortex. Начал изучение программирования микроконтроллеров с AVR Attiny2313, Atmega8. Программки писал по самоучителю Белова. Писал простенькие программки чтобы светодиодом при помощи кнопки моргать, бегущие огни, прерывания по таймеру и т.п. Но в моем городе востребованы микроконтроллеры Cortex. В результате нашел вакансию:
      Требования:
      • Профильное образование;
      • Уверенное знание C, опыт разработки от 1-ого года;
      • Опыт разработки ПО для микроконтроллеров STM32 (ARM CORTEX M) в среде KEIL на языках С и ассемблера.
      • Опыт работы с интерфейсами передачи данных: Ethernet, UART, I2C, SPI, USB.
      • Умение читать принципиальные схемы;
      • Умение пользоваться для отладки осциллографом, JTAG-интерфейсом;
      • Опыт работы с SVN, Git 
      Отсюда - подскажите литературу где описывается теория, т.е. строение МК, память, регистры и т.д. Также практические примеры использования JTAG, Ethernet, UART, I2C, SPI, USB. Ну и какие железки использовать. В алиэкспресс нашёл: отладочная плата (https://ru.aliexpress.com/item/Free-shipping-100-Original-STM32-Discovery-Board-Stm32f4discovery-Stm32f4-kit-Cortex-m4-STM32-Development-Board-St/32655207218.html?ws_ab_test=searchweb0_0,searchweb201602_2_10152_5722813_10151_10065_10344_10068_10342_5722613_10343_5722913_10340_10341_10543_10698_5711413_10696_10084_10083_5722713_10618_10307_10301_5711213_10059_308_100031_10103_5711513_10624_10623_10622_10621_10620_5722513_5711313_10125,searchweb201603_25,ppcSwitch_5&algo_expid=6bb60057-1829-4c3a-bfcf-64b27a13a331-29&algo_pvid=6bb60057-1829-4c3a-bfcf-64b27a13a331&priceBeautifyAB=0), программатор (https://ru.aliexpress.com/item/1pcs-New-ST-LINK-V2-ST-LINK-V2-CN-ST-LINK-STLINK-Emulator-Download-Manager-STM8/32725864986.html?spm=a2g0v.10010108.1000014.3.2e3e252eARrNY5&traffic_analysisId=recommend_3035_null_null_null&scm=1007.13338.98644.000000000000000&pvid=be1ab406-7b1c-4874-82ab-5ccf70631523&tpp=1). В общем помогите кто чем может.
       
    • Автор: aske12345
      Здравствуйте! Прошу помощи ! Столкнулся со следующей проблемой пытаюсь подключить к контроллеру по spi память FRAM FM25CL64 ,компилятор keil , пытаюсь записать одно число и его же считать, а осциллографом вижу, что считывается не то, что записывал. Пытался в разные ячейки памяти разные числа - считываются разные числа, но не те. Пишу 0x2F считывается 0x1С,  пишу 0xFF считывается 0xFE, пишу 0x99 считывается 0x20 - ерунда какая то. 
      Куски кода привел ниже:

      int main(void) {          SystemCoreClockUpdate();     SysTick_Config(SystemCoreClock/1000);//1ms     LEDs_ini();     Button_ini();     SPI3_FRAM_ini();         delay_ms(50);     //проверим FRAM начало запись 1 байта        CS_FRAM_ON();//        while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY)== SET){};        SPI_I2S_SendData(SPI3, 0x06);//Set Write Enable Latch 6        while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_TXE)== RESET){};        while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY)== SET){};//ждем пока запишется        CS_FRAM_OFF();        delay_us(3);    //на самом деле задержка выходит около 500нс                CS_FRAM_ON();         while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY)== SET){};     SPI_I2S_SendData(SPI3, 0x02);// Write              while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_TXE)== RESET){};         while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY)== SET){};//ждем пока запишется     SPI_I2S_SendData(SPI3, 0x10);// 13 битный адрес         while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_TXE)== RESET){};         while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY)== SET){};//ждем пока запишется         SPI_I2S_SendData(SPI3, 0x00);// 13 битный адрес         while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_TXE)== RESET){};         while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY)== SET){};//ждем пока запишется     SPI_I2S_SendData(SPI3, 0x2F);// данные          while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_TXE)== RESET){};         while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY)== SET){};//ждем пока запишется              CS_FRAM_OFF();         delay_us(3);//на самом деле задержка выходит около 500нс         //проверим FRAM конец запись  1 байта         //проверим FRAM начало чтение 1 байта         CS_FRAM_ON();//         while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY)== SET){};     SPI_I2S_SendData(SPI3, 0x03);// Read              while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_TXE)== RESET){};         while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY)== SET){};//ждем пока запишется     SPI_I2S_SendData(SPI3, 0x10);// 13 битный адрес         while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_TXE)== RESET){};         while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY)== SET){};//ждем пока запишется         SPI_I2S_SendData(SPI3, 0x00);// 13 битный адрес         while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_TXE)== RESET){};         while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY)== SET){};//ждем пока запишется     SPI_I2S_SendData(SPI3, 0x00);// пишем 0 для считывания         while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_TXE)== RESET){};         while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY)== SET){};//ждем пока запишется         CS_FRAM_OFF(); //проверим FRAM конец чтение 1 байта              //LED1_OFF;          while(1)     {
      настройки spi:

      SPI_Init_user3.SPI_Direction = SPI_Direction_2Lines_FullDuplex;     SPI_Init_user3.SPI_Mode = SPI_Mode_Master;     SPI_Init_user3.SPI_DataSize = SPI_DataSize_8b;     SPI_Init_user3.SPI_CPOL = SPI_CPOL_High;//SPI_CPOL_Low     SPI_Init_user3.SPI_CPHA = SPI_CPHA_2Edge;     SPI_Init_user3.SPI_NSS = SPI_NSS_Soft;     SPI_Init_user3.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;//4     SPI_Init_user3.SPI_FirstBit = SPI_FirstBit_MSB;         SPI_Init_user3.SPI_CRCPolynomial = 7;          SPI_Init(SPI3, &SPI_Init_user3);
      контакты вроде все пересмотрел, думал провода может длинноваты,  клок spi настраивал на разную частоту уменьшал до 1МГц - не влияет,  пробовал делать паузу между командой WREN и командой записи 15мс, а записью и считыванием 20мс, всё то же самое не помогло..
      приложил осциллограммы:
      Осциллограмма всех посылок  WREN, WITE, READ  (тактовый сигнал ch1 и miso FRAM ch2) (синий луч отношения к делу не имеет)
      Осциллограмма  команды WREN (тактовый сигнал ch1 и miso FRAM ch2)(синий луч отношения к делу не имеет)
      Осциллограмма  команды WITE (тактовый сигнал ch1 и miso FRAM ch2)
      Осциллограмма  считанного значения записывал 0x2F, считал 0x1C (тактовый сигнал ch1 и mosi FRAM ch2)
       




  • Сообщения

    • Программа нужна сейчас. Вам бы сначала научится отвечать по теме а затем писать на форум

    • Настольные часы ещё гудят..
      Настольные часы свидетели и судьи
      Когда ты их чинил они слагали гимны
      Гудя тебе в кривые деталЯ Тогда ты не сумел ничо понять
      Паяльником махал как дурень по вселенной
      Пока ты не впаял  большой кандёр
      Он ёмкостью убрал звук гула обалденный Припев:
      Кнопки возможно загудят опять
      И WD-40 гул не остановит
      Но буду их чинить настойчиво и верно
      Пока идут настольные часы
       
      Когда ты приносил моток припоя
      То думал что замрут все звуки несомненно
      В помойку отнести тогда их не сумел ты
      Как не сумел и починить тогда
    • Если автору интересно, то я бы посоветовал проверить схему на коммутационные искажения, свойственные его (да и всех)  схемному построению. Метод обхода/снижения рассматривался в Радио, так что сие лечимо. (но не исправимо) Как посмотреть - подключите к усилителю нагрузку (положим, "резистор"), но "земляной" вывод нагрузки подключите не к земле, а к выходу любого другого мощного усилителя. Ну, и подайте на него (другой усилитель) достаточно высокий уровень сигнала, с разными частотами (и разной формой). Т.е. на основной усилитель сигналов не подается, то он обязан удерживать на своем выходе 0. Но это он "должен", но не обязан. ))
    • — Это, сэр Генри, эксперт, который поможет нам избавиться от зловещей собаки Баскервилей, — говорит Бэрримор своему хозяину. Сэр Генри с удивлением и даже опаской смотрит на заросшего бородой двухметрового верзилу.
      — Я несколько иначе представлял вас, мистер Шерлок Холмс!
      — Сэр, это не мистер Холмс, это мистер Герасим из России. 
    • Вам бы сначала с грамматикой разобраться, а потом уже МК программиртвать.
    • КТ805 =n-p-n... Смущает эта цепь,ведь на эмиттере напряжение должно меняться    
    • На twirpx.com есть
      А по поводу rar - попробуйте скачать последнюю версию программы или открыть с помощью 7-zip