Easyelectronics.ru

Электроника для всех
Текущее время: 26 май 2020, 00:04

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 41 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Камера OV2640 и STM32F401
СообщениеДобавлено: 01 июн 2015, 18:09 
Старожил

Зарегистрирован: 11 окт 2013, 01:46
Сообщения: 234
Ну никак не могу оислить я эту камеру (((( Откликнитесь, кто с ней работал. Вроде бы инфы всякой есть в инете, даташит имеется, все делаю, но картинка не получается ((( Где-то может с МК косяки делаю?

Что сделано:
Железо:
Модуль камеры вот такой
Show картинка

NUCLEO-401RE (камень STM32F401RE) думаю в представлении особо не нуждается.
Распиновка следующая:
Код:
3.3V и GND - понятно куда без вариантов
SIOC (I2C SCL) - PB8
SIOD (I2C SDA) - PB9
         VSYNC - PB10
         HREF  - PB14
          XCLK - PA8 (MCO1)
          PCLK - PA12 (TIM1_ETR)
         D2-D9 - PC0-PC7
           RET - +3V
          PWDN - GND

MCO1 тактируется от HSI/2 == 8MHz
Периферия от PLLCLK и все такое прочее, в общем APB1 == 42MHz, остальное 84MHz

Камера по I2C общается без запинок. Это видно и в дебагере, и по анализатору логическому тоже видны все посылки со всеми нужными акцептами.

На ноге PCLK так же видна тактовая частота камеры. Эту ногу я подвесил на PA12 и собственно от нее затактировал TIM1. Соответственно таймер считает без всяких делителей и прескалеров до 1 и по событию апдейта дергает DMA2 Stream5, который стягивает байт с GPIOC->IDR и укладывает его в память (инкремент memaddr)

Периферию конфигурирую так (I2C не стану описывать ибо работает и кушать не просит)
Show GPIO
Show TIM1 + DMA


В обработчике прерываний EXTI10-15 я просто слежу за состоянием VSYNC (начало/конец кадра) и HREF(начало/конец строки в кадре)
Соответственно по HREF Rising (пошла строка в кадре) запускаю DMA:
Код:
HAL_TIM_Base_Start_DMA_Mem2Mem( &htim1, (u32 *)&(GPIOC->IDR), (u32 *)ov2640BufPtr, camBUF_PIXEL_COUNT*2 );
camBUF_PIXEL_COUNT - тут задаю ширину строки (в пикселях) равную или меньше той, что выдает сейчас камера. Получается, что сколько бы пикселей в строке не было, все равно DMA отключится приняв нужное мне количество пикселей, а все что до конца строки осталось, будет проигнорировано.

ov2640BufPtr - адрес памяти, куда складываю очередную строку. Этот указатель модифицируется по HREF Falling (конец строки в кадре).
Show Важная заметка к функции HAL_TIM_Base_Start_DMA_Mem2Mem

На каждый пиксель приходится 2 байта. Смотрю анализатором - так и есть. Внутри одного HREF ровно 1600 PCLK Rising (800 пикселей в строке). Смотрю на VSYNC, все как положено - 600 HREF Rising (600 строк на кадр)

Теперь все это барахло пытаюсь визуализировать и получаю муть из сна наркомана... Набор цветных пятен, в которых очень и очень с трудом угадывается содержимое кадра (((( Судя по состоянию регистров камеры - SVGA 800x600 RGB565. Пытаюсь в JavaFX обработать этот массив данных. Алгоритм преобразования RGB565 -> RGB888 примерно такой (выкинул всякие &0xFF и прочее для читабельности)
Код:
// byte line[] - содержимое буфера из MCU
int PIXEL = (line[pixel++] & 0xFF) << 8) | line[pixel++];
int R5 = (PIXEL >> 11) & 0x1F;
int G6 = (PIXEL >>  5) & 0x3F;
int B5 = (PIXEL >>  0) & 0x1F;

int R8 = (R5 << 3) | (R5 >> 2);
int G8 = (G6 << 2) | (G6 >> 4);
int B8 = (B5 << 3) | (B5 >> 2);

pixelWriter.setColor(x, lineNumber, Color.rgb(R8,G8,B8));


Ну и напоследок приведу последовательность инициализации самой камеры. Она взята из официального SoftwareApp Notes:
Show ov2640 init registers
Порядок включения всей карусели на MCU такой:
Show Init sequence

Я скоро лоб себе об стену разобью (((( Посмотрите, может я что-то в инициализациях периферии MCU не догоняю? Или если кто-то уже боролся с такой камерой и STM32 без DCMI - пришлите плиз свой рабочий код. Я в гнетущем унынии и не вижу направлений дальнейшего движения.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 01 июн 2015, 19:45 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
Выдерните картинку напрямую из памяти и попробуйте посмотреть здесь: http://rawpixels.net/
Я там смотрел когда подключал ov7670. Можно разные форматы подобрать. А вообще я бы советовал тестировать камеру на дефолтных настройках иначе из-за любой настройки регистра можно поймать глюки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 01 июн 2015, 20:35 
Старожил

Зарегистрирован: 11 окт 2013, 01:46
Сообщения: 234
Спасибо за ссылочку, но не помогло (((
Похоже это какая-то сугубо железная проблема. Со стороны MCU. Я грешу на связку TIM1-DMA. НЕ уверен я в правильности их настроек и не уверен, что они или же GPIOC успевают за дрыганьем камеры. Там сейчас получается 8MHz частота. Если на это дело взводить прерывание, то MCU сразу в коматоз впадает.

Пробую получить картинку с ColorBar test pattern. Этот тест должен по идее выдать что-то примерно вот такое:
Изображение

А у меня выходит вот такая фигня:
Изображение

Все эти пятнышки и точечки игриво разбросанные как-то наводят на мысли о том, что кодировка тут вовсе не при чем, тут скорее всего именно изначально неправильный поток байтов.

alexsam писал(а):
А вообще я бы советовал тестировать камеру на дефолтных настройках иначе из-за любой настройки регистра можно поймать глюки.

Так ведь дефолтнее не бывает. С подачи питания устанавливаются регистры согласно офф.документации. Если ничего не дергать, то после включения камера молчит.


Вложения:
InDid.gif
InDid.gif [ 20.95 Кб | Просмотров: 22421 ]
MustBe.gif
MustBe.gif [ 6.08 Кб | Просмотров: 22421 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 01 июн 2015, 21:06 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
Картинка наводит на мысли что у вас плохой контакт на какой-то ноге. А если длинные провода то не мешало бы подтягуть ноги к дефолтным значениям резисторами.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 01 июн 2015, 21:13 
Старожил

Зарегистрирован: 11 окт 2013, 01:46
Сообщения: 234
Хмммм... В эту сторону как-то и не подумал. Проводочки по 10см. Попробую все PC0-PC7 подтянуть к земле. 10K хватит ведь?

Кстати! 2640 и 7670 они ведь практически близнецы. Я правильно понимаю, что PCLK Rising сигнализирует о том, что байт данных готов к прочтению???? А то как-то сомнение закралось в меня. Точно ли Rising, может наоборот и я хватаю погоду в Африке, а вовсе и не байт данных.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 01 июн 2015, 21:22 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
Посмотрите даташит. Там может быть и так и эдак. В зависимости от регистров. И так же нужно посмотреть что-там по дефолту у других пинов. Там точно не все к земле, что-то к питанию. Номинал лучше 4.7К максимум, а вообще осциллографом нужно смотреть, у вас же еще анализатор подключен, он добавляет емкости линии.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 01 июн 2015, 21:42 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
Hamper писал(а):
Я правильно понимаю, что PCLK Rising сигнализирует о том, что байт данных готов к прочтению???? А то как-то сомнение закралось в меня.

Опять же, как в настройках. У 7670 по дефолту да. Судя по вашей картинке у вас все ок с этим.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 01 июн 2015, 21:54 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
У меня PCLK и HREF подтянуты к земле, VSYNCK к питанию, D0-7 уже не помню, но я платку разводил под это, там были джампера чтоб переключить подтяжку с питания на землю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 01 июн 2015, 22:11 
Старожил

Зарегистрирован: 11 окт 2013, 01:46
Сообщения: 234
В общем надо сейчас выспаться и на свежую голову еще раз раскурить HardwareApp Notes. Хотя насколько я помню, ничего там про подтяжки не сказано. Только про PWDN (active HIGH) и RET (active LOW). Но я и так их засадил - на землю и на питание соответственно.

Но вот какая интересность - только что дернул за регистр CTRL0 (0xC2 в банке 0). Дефолтовое состояние у него только биты YUV422 и YUV_EN. Мне это всегда не нравилось и наконец то я созрел обнулить эти биты и выставить в единицу биты RGB_EN и RAW_EN. Ухтыть! В красном канале появилась четкая картинка!!!! В остальных каналах по-прежнему муть. Для текущего проекта мне и одного канала хватит ))), но надо таки добить окончательно эту китайскую сволочь! Завтра... А сейчас спааать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 02 июн 2015, 15:01 
Заглядывает иногда

Зарегистрирован: 22 янв 2014, 11:26
Сообщения: 161
Уважаемый, судя по картинкам - не успеваешь хватать пикселы. Попробуй поиграться с делителем частоты PCLK.write_SCCB(0xff, 0x01); write_SCCB(0x11, 0x00); //тут меняем делитель PCLK например на 0x04


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 02 июн 2015, 18:01 
Старожил
Аватара пользователя

Зарегистрирован: 14 дек 2011, 01:53
Сообщения: 523
Попробуйте без дма захватывать состояние порта


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 02 июн 2015, 19:31 
Старожил

Зарегистрирован: 11 окт 2013, 01:46
Сообщения: 234
Делить частоту пробовал - банан! До 500KHz затормозил PCLK и все равно картинка такая же.
Kitano8 писал(а):
Попробуйте без дма захватывать состояние порта

Как это? Просто погоду в Африке читать? Так читается... На GPIOC->IDR постоянно что-то происходит. Читать ведь надо именно когда у PCLK восходящий фронт случился и именно внутри HSYNC-HIGH. Именно тогда байт сформирован.
Кстати пробовал по нисходящему фронту ловить байты (1.15 COM10 Bit[4] PCLK edge selection)- однофигственно.

В общем соберу сейчас волю в потный кулачок и навтыкаю подтяжек в линию данных... Ну и заодно прикручу SD-карточку, чтобы всю картинку хоронить. А то сейчас памяти хватает только на кусочек 200x200 пикселей. Есть еще мысль попробовать хватать на таймере Input Capture на каком нибудь его канале, а не как сейчас тактировать весь таймер от PCLK. Ну и заодно HSYNC таким же образом подвесить вместо прерывания. Пусть HSYNC делает вкл/выкл таймера, который за PCLK смотрит....

Вот такие вот планы на ночь...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 02 июн 2015, 22:03 
Старожил
Аватара пользователя

Зарегистрирован: 14 дек 2011, 01:53
Сообщения: 523
Пардон, у вас же клок с камеры (
тогда только DCMI ИМХО


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 02 июн 2015, 22:21 
Старожил

Зарегистрирован: 11 окт 2013, 01:46
Сообщения: 234
А нэту DCMI (((( Лоханулся я крупно. Хотел взять 411-ю нуклео, но в магазе, где брал камеру, предложили 401-ю на 300 руб. дешевле. Дело было даже не в этой копеечной экономии, а в том, что мне в тот день страшно в лом было ехать через пол-москвы за 411-й платкой. Вот собственно лень моя добавила мне головняка на ровном месте (((((
Надо кстати глянуть на схемку нуклео - есть у меня очучение, что можно 401-й камень выпаять и тупо на его место воткнуть 411-й и будет мне щассте ))))


Ну а пока что эксперимент с подтяжками успешно провалился - не помогает эта припарка. Пока махал паяльником, подумал о том, что золотое правило электроно-блудильщика - не верь китайцу!!!! Как-то мне показалось, что маркировка на модуле может не соответствовать реальности. Ну типа тупо попутали и не так буковки на плате написали. Надо будет копнуть в эту сторону.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 03 июн 2015, 01:08 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
А сделайте 2 картинки с неподвижной камеры и приложите плиз.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 03 июн 2015, 09:56 
Старожил

Зарегистрирован: 11 окт 2013, 01:46
Сообщения: 234
SVGA 800 x 600 | RGB_EN | RAW_EN | RGB565 | HB First
Выхватил кусок всей картинки 200 x 200 pixel. Это получается левый нижний угол кадра. Кадр положен на бок (повернут на 90 CW)

Это то, что я своей программкой вижу (слева направо: все каналы, R, G, B). Если что, так там белый слоник с поднятым носом.
Вложение:
testSnap.jpg
testSnap.jpg [ 137.68 Кб | Просмотров: 19398 ]


Здесь файлики с сырыми данными. Это программка 7yuv так увидела. Она почему то переставила местами R и B каналы, но это не важно ибо картинка точно такая же, как у меня получается.

https://www.dropbox.com/sh/bpx30shtn6la ... 6w7_a?dl=0


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 03 июн 2015, 10:12 
Старожил

Зарегистрирован: 11 окт 2013, 01:46
Сообщения: 234
Прошу пардона! Программка сохранила файлики не по каналам, а просто исходный файл продублировала.

Ради интереса прижал палец к дырочке камеры и сделал снимок. Казалось бы должны увидеть негра темной ночью, а видим....

Вложение:
testSnapBlack.jpg
testSnapBlack.jpg [ 126.93 Кб | Просмотров: 19393 ]


Закинул сырые данные туда же на дропбокс.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 03 июн 2015, 12:14 
Заглядывает иногда

Зарегистрирован: 22 янв 2014, 11:26
Сообщения: 161
Вот про негра темной ночью не соглашусь, именно так камера и будет реагировать на палец. И терзают меня смутные сомнения что все верно считывается. Просто камера в YCbCr отдает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 03 июн 2015, 13:07 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
Да, у вас битый канал цвета какой-то.
И не понятно почему картинка не пропорциональная, а сплюснутая. Возможно из-а этого где-то появляются неверные биты.
Вот что в сером получается.
Картинка в полосочку, значит где-то проскакивают неверные биты.


Вложения:
elefant.png
elefant.png [ 26.89 Кб | Просмотров: 19355 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 03 июн 2015, 13:10 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
Попробуйте включить RGB формат. Там будет более понятно с каким каналом косяк


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 04 июн 2015, 08:38 
Старожил

Зарегистрирован: 11 окт 2013, 01:46
Сообщения: 234
Вчера от безнадеги тупо ушел в творчески-игровой запой ))))

Режим RGB я вроде бы и выставляю регистрами, но видать как-то не очень качественно и сейчас начинаю понимать, что таки да - скорее всего картинка в YCbCr. Вот с этого сегодня и начну.

Страшно бесит тот факт, что в офф.документации описана последовательность установки регистров, в которой большинство из них не документировано. ((((


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 04 июн 2015, 12:21 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
Hamper писал(а):
Но вот какая интересность - только что дернул за регистр CTRL0 (0xC2 в банке 0). Дефолтовое состояние у него только биты YUV422 и YUV_EN.

А что в регистре 0xDA? Там должно быть 0x08 - RGB565 формат


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 04 июн 2015, 14:04 
Старожил

Зарегистрирован: 11 окт 2013, 01:46
Сообщения: 234
{ 0, 0xda, 0x08 }
Расшифровка этой депеши говорит следующее:
Код:
0000 1000
Y8 disable for DVP
JPEG disabled (Non-compressed)
DVP output format - RGB565
HREF is same as sensor
High byte first


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 11 июн 2015, 17:24 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
У вас что-то получилось? Поделитесь опытом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Камера OV2640 и STM32F401
СообщениеДобавлено: 11 июн 2015, 19:46 
Старожил

Зарегистрирован: 11 окт 2013, 01:46
Сообщения: 234
Пока только grayscale ((((
Сейчас заказчику выдам эту лапшу и можно будет продолжить изыскания. Обязательно отпишусь!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 41 ]  На страницу 1, 2  След.


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: BARS_, Eddy_Em


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB