Easyelectronics.ru

Электроника для всех
Текущее время: 22 авг 2019, 08:25

Часовой пояс: 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 Кб | Просмотров: 21555 ]
MustBe.gif
MustBe.gif [ 6.08 Кб | Просмотров: 21555 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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
Сообщения: 520
Попробуйте без дма захватывать состояние порта


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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
Сообщения: 520
Пардон, у вас же клок с камеры (
тогда только 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 Кб | Просмотров: 18532 ]


Здесь файлики с сырыми данными. Это программка 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 Кб | Просмотров: 18527 ]


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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 Кб | Просмотров: 18489 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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 часов


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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

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