Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ARM + 4.3" LCD + OV7660 CMOS Cam
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Ivan Kuznetzov
Интересует подобная связка. Надо просто с камеры изображение гнать на LCD где-то с 10-15fps (видео-зеркало-заднего-вида) с возможностью по SCCB(I2C) интерфейсу CMOS камеры подстраивать яркость, цветность, изображение в негативе делать.

Дисплей MI0240(ILI9320) c 16-и битной шиной оказался маловат (3.2") хотя и достаточно шустер в режиме 16-битной шины

Вопросы собственно такие:
1) Какой порекомендуете дисплей брать (надо не менее 4.2") и с какой шиной ?
2) Какой МК брать для разжовывания этого всего (я склоняюсь пока к STM32F107 какому-нибудь, и ног много и 70 мегагерц все-таки)
3) Модуль CMOS OV7660 мне нравится, но законченных камерок с оптикой я на этом чипе я не встречал (может кто тоже чего подскажет или ткнет носом?)

P.S.
Вообще копаясь в инете не нашел чтобы с STM32 сопрягали дисплеи с разрешением более 320х240...
scifi
Цитата(Ivan Kuznetzov @ Jul 27 2010, 22:48) *
Вообще копаясь в инете не нашел чтобы с STM32 сопрягали дисплеи с разрешением более 320х240...

Мы давно работаем с дисплеями 480x272. Ставим графический контроллер S1D13A05. Сейчас как будто появился S1D13781, но пока купить его трудно. Обязательно нужен микроконтроллер с внешней шиной (у STM32 она называется FSMC).
KRS
А сколько такие дисплеи стоят?
Не проще ли поставить что то типа LPC2478.
Да и вообще NXPшные ARM гораздо быстрее. LPC17xx вообще до 100 Mhz да и флешовый ускоритель у них правильный...
zksystem
Цитата(Ivan Kuznetzov @ Jul 27 2010, 22:48) *
Интересует подобная связка. Надо просто с камеры изображение гнать на LCD где-то с 10-15fps (видео-зеркало-заднего-вида) с возможностью по SCCB(I2C) интерфейсу CMOS камеры подстраивать яркость, цветность, изображение в негативе делать.

Дисплей MI0240(ILI9320) c 16-и битной шиной оказался маловат (3.2") хотя и достаточно шустер в режиме 16-битной шины

Вопросы собственно такие:
1) Какой порекомендуете дисплей брать (надо не менее 4.2") и с какой шиной ?
2) Какой МК брать для разжовывания этого всего (я склоняюсь пока к STM32F107 какому-нибудь, и ног много и 70 мегагерц все-таки)
3) Модуль CMOS OV7660 мне нравится, но законченных камерок с оптикой я на этом чипе я не встречал (может кто тоже чего подскажет или ткнет носом?)

P.S.
Вообще копаясь в инете не нашел чтобы с STM32 сопрягали дисплеи с разрешением более 320х240...

посмотрите сайт starterkit.ru, там есть и платы с LCD и платы с контроллерами к которым они соединяются. Там же из схем к платам можно много почерпнуть.
wanderer
Цитата(Ivan Kuznetzov @ Jul 27 2010, 21:48) *
Интересует подобная связка. Надо просто с камеры изображение гнать на LCD где-то с 10-15fps (видео-зеркало-заднего-вида) с возможностью по SCCB(I2C) интерфейсу CMOS камеры подстраивать яркость, цветность, изображение в негативе делать.
P.S.
Вообще копаясь в инете не нашел чтобы с STM32 сопрягали дисплеи с разрешением более 320х240...

Китайцы предлагают вот такой остроумный вариант http://www.egochina.net.cn/e-shop/ebay/dat...9328_ov7670.rar правда немного с другой камерой.
Ivan Kuznetzov
Цитата(wanderer @ Aug 5 2010, 16:39) *
Китайцы предлагают вот такой остроумный вариант http://www.egochina.net.cn/e-shop/ebay/dat...9328_ov7670.rar правда немного с другой камерой.


спасибо, видел такое, только там дисплей маловат...

посоветуйте, может есть в природе "большие" (от 4") дисплеи на ili932x и 16 битной шине?
proba
лучще посмотрите SH7262 от ренесас, все в одном чипе. в качестве камеры исползовал MT9V032, лензы от Sunex.
Клим
Если только как зеркало заднего вида, то может, имеет смысл использовать аналоговую камеру ?
Есть в природе готовые модули дисплеев, которые понимают PAL/NTSC видео-сигнал.
goodwin
Кетайский нафигатор (4.3", вынь ЦЕ ) за 3700 целковых и камера заднего вида к нему за 800 выйдут намного дешевле, чем осуществлять собственные телодвижения... А то и камера+ЖКИ монитор заднего вида могут сгодиться...

Ivan Kuznetzov
Цитата(goodwin @ Aug 6 2010, 22:59) *
Кетайский нафигатор (4.3", вынь ЦЕ ) за 3700 целковых и камера заднего вида к нему за 800 выйдут намного дешевле, чем осуществлять собственные телодвижения... А то и камера+ЖКИ монитор заднего вида могут сгодиться...

эхх.. все бы ничего, но необходимы еще и эффекты типа высококонтрастное изображение/негатив-позитив/возможность регулировки цветности/гаммы. Все это есть в цмос камерках, особенно понравилась омни-вижн. Также склоняюсь в сторону TCM8240MD от тошибы, получил ее тут недавно. Мож кто поделится кодом инициализации для неё?

Цитата(proba @ Aug 6 2010, 05:21) *
лучще посмотрите SH7262 от ренесас, все в одном чипе. в качестве камеры исползовал MT9V032, лензы от Sunex.


1) проц весьма интересен, 144МГц - эт сурьезно
а. но походу у него нету внутренней флеши - готовый приерчик бы - чтобы было за что зацепиться как это все оживлять
б. какая к нему среда разработки нужна, хотелось бы что-нибудь типа иара wink.gif

2) камера MT9V032 понравилась,
а. особенно то, что питается едиными 3.3 родными вольтами
б. в стерео объединяется ))
в. кода инициализации пока не нашол, к сожалению ((
г. как с доставаемостью самой камеры и оптики и где вообще эту оптику для таких чип-камер брать?
proba
1.a. флеш деиствително нет, но и аналогичных процессорах арм9 тоже нет, можно боотит с сериал флеш.
1.b компилеры- ренесасовскии хев, иар, фрееваре кпит.
2. камерами такое дело что и омни и аптина (микрон) только по нда выдают даташит.
мт9v032 в принципе и без доп инит картинку выдает.
разницы между мт9v032 и 022 почти нет, об последнем инфы гораздо болще, напр http://www.analog.com/static/imported-file..._258r262006.pdf
ClockworkOrange
OV7660,
MT9V032,
TCM8240MD..

- а где Вы вообще достаёте в России подобные сенсоры? (и линзы к ним)
Ivan Kuznetzov
Цитата(proba @ Aug 6 2010, 07:21) *
лучще посмотрите SH7262 от ренесас, все в одном чипе. в качестве камеры исползовал MT9V032, лензы от Sunex.

Извините, а можно поподробней, где можно опитку Sunex достать у нас?

Цитата(ClockworkOrange @ Sep 17 2010, 13:53) *
OV7660,
MT9V032,
TCM8240MD..

- а где Вы вообще достаёте в России подобные сенсоры? (и линзы к ним)


через оф диллера, промэлектронику
Ivan Kuznetzov
Есть проект с камерой OV7670 -> AL422B FIFO -> ILI9325 LCD 8bit. Каждый байт с камеры стробируется PCLK сигналом. Два байта = 1 пиксел в формате RGB565.
До настоящего момента я использовал дисп, который может работать в 8и битном режиме, на контроллере ILI9325, сейчас хочу использовать SSD1963, который не может работать по шине 8 бит в режиме RGB565, но может работать в режиме 16 бит RGB565.
Вопрос, что поставить между камерой и диспом, чтобы две 8и битовые посылки преобразовать в 16 бит слово? Может какую-нибудь жесткую логику чтоли...
Ivan Kuznetzov
как вариант предложили 8 битный регистр, но как тогда лучше поделить PCLK ?
=SSN=
Цитата(Ivan Kuznetzov @ Dec 20 2010, 08:00) *
Вопрос, что поставить между камерой и диспом, чтобы две 8и битовые посылки преобразовать в 16 бит слово? Может какую-нибудь жесткую логику что-ли...

OMAP3530. rolleyes.gif
Ivan Kuznetzov
Всем привет! Помогите с проблемой, пожалуйста! Собрал схему "видеоглазка" на базе (STM32) + (ALTERA EPM3032) + (SSD1963 LCD) +(MT9V111)

1) Контроллер: STM32
2) Дисплей на SSD1963, подключен к STM32 через FSMC и работает отлично! (картинки из флеш грузит)
3) По прерыванию от кадрового импульса, STM32 задает "окошко" в LCD и посылает команду на запись, затем переводит шину FSMC контроллера STM32 в Z состояние (конфигурирую как обычные GPIO на INPUT_FLOATING)
4) Выставляю пин OE в высокое состояние, тем самым подключая ПЛИСину к дисплею
5) ПЛИСина начинает прокачивать RGB565 поток с камеры распределяя его на 16 бит шину дисплея и дергая ножкой WR
6) И так до следующего VSYNC

Дак вот, когда ПЛИС не подключена к шине - все идет нормально - на дисплее "окошко" с помехами - типа данных нет.
Подключаю линии [7..0] с ПЛИС к шине диспа - после пары кадров происходит сбой, дисп заливается белым цветом, по-видимому дисп ловит какую-то помеху.
Подключаю линии [15..8] с ПЛИС к общей шине - на диспе появляется картинка с искаженными цветами и геометрией

Проблема в том, что с альтеры по-видимому идет помеха по линиям D[7..0]...

Прилагаю свою чудо-схему и код:

Прерывание по VSYNC:
Код
void EXTI4_IRQHandler(void) // Обработчик прерывания по VSYNC
{    
    
     if(EXTI_GetITStatus(EXTI_Line4) != RESET)
     {
      
        GPIO_ResetBits(GPIOC, GPIO_Pin_0);              // 1) Запрещам ПЛИСину по входу OE
            
        LCD_TO_STM32();                     // 2) GPIO STM32 на FSMC           
        
        LcdSetArea(0,0,479,271);                     //Задаем окно LCD GRAM
        
            WriteCommand(0x2C);                 // разрешение на запись GRAM
      
        LCD_TO_CPLD();                      // 3) GPIO STM32 в Z-состояние
        
            GPIO_SetBits(GPIOC, GPIO_Pin_0);             // 4) Подключаем ПЛИС к LCD входом OE
      
       EXTI_ClearITPendingBit(EXTI_Line4);
     }
  
}


Конфигурация порта STM32 для работы с ПЛИС:
Код
void LCD_TO_CPLD(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  
  /* SRAM Data lines configuration */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_8 | GPIO_Pin_9 |
                                GPIO_Pin_10 | GPIO_Pin_14 | GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |
                                GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |
                                GPIO_Pin_15;
  GPIO_Init(GPIOE, &GPIO_InitStructure);
  
  /* SRAM Address lines configuration */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 |
                                GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_12 | GPIO_Pin_13 |
                                GPIO_Pin_14 | GPIO_Pin_15;
  GPIO_Init(GPIOF, &GPIO_InitStructure);
  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 |
                                GPIO_Pin_4 | GPIO_Pin_5;
  GPIO_Init(GPIOG, &GPIO_InitStructure);
    
  /* NOE and NWE configuration */  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
    
  /* NE3 configuration */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  GPIO_Init(GPIOG, &GPIO_InitStructure);
  
  /* NBL0, NBL1 configuration */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
  GPIO_Init(GPIOE, &GPIO_InitStructure);
  
  //--------------  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_11 | GPIO_Pin_12; // RD# pin to HIGH
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
  
   GPIO_ResetBits(GPIOD,GPIO_Pin_12); //CS low
  
  GPIO_SetBits(GPIOD,GPIO_Pin_4);   //RD high
  GPIO_SetBits(GPIOD,GPIO_Pin_11); //RS to data


Ноги на FSMC STM32:
Код
void LCD_TO_STM32(void)
{
   GPIO_InitTypeDef GPIO_InitStructure;
  /* SRAM Data lines configuration */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_8 | GPIO_Pin_9 |
                                GPIO_Pin_10 | GPIO_Pin_14 | GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |
                                GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |
                                GPIO_Pin_15;
  GPIO_Init(GPIOE, &GPIO_InitStructure);
  
  /* SRAM Address lines configuration */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 |
                                GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_12 | GPIO_Pin_13 |
                                GPIO_Pin_14 | GPIO_Pin_15;
  GPIO_Init(GPIOF, &GPIO_InitStructure);
  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 |
                                GPIO_Pin_4 | GPIO_Pin_5;
  GPIO_Init(GPIOG, &GPIO_InitStructure);
  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
  
  /* NOE and NWE configuration */  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 |GPIO_Pin_5;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
  
  /* NE3 configuration */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  GPIO_Init(GPIOG, &GPIO_InitStructure);
  
  /* NBL0, NBL1 configuration */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
  GPIO_Init(GPIOE, &GPIO_InitStructure);
}
Ivan Kuznetzov
фото всего девайса, может дело в проводах? biggrin.gif
Ivan Kuznetzov
Может проблема в том что MAX3000 это LVTTL?
Alla_student
Цитата(Ivan Kuznetzov @ Feb 8 2011, 19:29) *
Может проблема в том что MAX3000 это LVTTL?


Возможно у вас проблема с метастабильностью плисины, т.е. ПЛИС не синхронизирована с тактовой частотой и процессором.
ведущий_специалист
stm32f207 и овцы целы и волки сыты. В наличие к примеру в компэле. Сама сложит RGB565 в регистр и по дма отправит куда скажешь. Ядро при этом обращать внимание на это не будет, так как все аппаратно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.