Перейти к содержанию
    

STM32F407 + камера OV2640

Здравствуйте!

Использую контроллер STM32F407, захват картинки по DCMI. Пытаюсь настроить камеру в разрешение 640х480. Кто-нибудь может поделится настройками камеры?

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


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

Здравствуйте! Использую контроллер STM32F407, захват картинки по DCMI. Пытаюсь настроить камеру в разрешение 640х480. Кто-нибудь может поделится настройками камеры?

 

Добрый день!

 

Вот: camera.zip , пробуйте. У меня контроллер STM32F427 с внешней оперативкой.

 

Максимально, что удалось с OV2640 получить, это 800х600 jpeg потоком и 1072х768 снапшот.

 

 

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


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

Добрый день!

 

Вот: camera.zip , пробуйте. У меня контроллер STM32F427 с внешней оперативкой.

 

Максимально, что удалось с OV2640 получить, это 800х600 jpeg потоком и 1072х768 снапшот.

 

Спасибо, сейчас посмотрю. А в чем была проблема в получении бОльших разрешений?

Не могли бы Вы скинуть еще код снятия кадра?

Изменено пользователем Влад Р.

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


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

Спасибо, сейчас посмотрю. А в чем была проблема в получении бОльших разрешений?

Не могли бы Вы скинуть еще код снятия кадра?

 

Проблемы не было, как не было и изображения :-)

При попытке установить разрешение больше чем 1024х768 просто не отдаёт камера ничего.

Правда, я работал только с режимом jpeg, возможно в RAW получится, но тут уже будут проблемы со скоростью перелопачивания потока,

меня снапшоты мало интересовали.

 

Получение кадра несложно:

-настраиваем DCMI для работы с DMA;

-запускаем получение снапшота;

 

Как это сделано можно посмотреть в примерах от ST, мне из проекта тяжело сейчас вытянуть только эту часть.

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


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

Получение кадра несложно:

-настраиваем DCMI для работы с DMA;

-запускаем получение снапшота;

 

Как это сделано можно посмотреть в примерах от ST, мне из проекта тяжело сейчас вытянуть только эту часть.

 

А можно только настройки DMA? Основной вопрос: какой установливать размер буфера? Вроде больше 65535 нельзя, а нужно.

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


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

А можно только настройки DMA? Основной вопрос: какой установливать размер буфера? Вроде больше 65535 нельзя, а нужно.

 

Добрый день!

 

Вот:

 


/* DCMI configuration *******************************************************/ 
DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_SnapShot;//DCMI_CaptureMode_Continuous
//DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_Continuous;
DCMI_InitStructure.DCMI_SynchroMode = DCMI_SynchroMode_Hardware;//DCMI_SynchroMode_Hardware
DCMI_InitStructure.DCMI_PCKPolarity = DCMI_PCKPolarity_Rising;//DCMI_PCKPolarity_Falling
DCMI_InitStructure.DCMI_VSPolarity = DCMI_VSPolarity_Low; //DCMI_VSPolarity_High
DCMI_InitStructure.DCMI_HSPolarity = DCMI_HSPolarity_Low; //DCMI_HSPolarity_High
DCMI_InitStructure.DCMI_CaptureRate = DCMI_CaptureRate_All_Frame;//DCMI_CaptureRate_All_Frame
DCMI_InitStructure.DCMI_ExtendedDataMode = DCMI_ExtendedDataMode_8b;

DCMI_Init(&DCMI_InitStructure);

DCMI_JPEGCmd(ENABLE);

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = DCMI_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
NVIC_Init(&NVIC_InitStructure); 

/* DCMI Interrupts config ***************************************************/
DCMI_ITConfig(DCMI_IT_FRAME, ENABLE);

/* Configures the DMA2 to transfer Data from DCMI to the memory ****************/
/* Enable DMA2 clock */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE);  

/* DMA2 Stream1 Configuration */  
DMA_DeInit(DMA2_Stream1);

DMA_InitStructure.DMA_Channel = DMA_Channel_1;  
DMA_InitStructure.DMA_PeripheralBaseAddr = DCMI_DR_ADDRESS;	
DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)Jbuff;	
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
DMA_InitStructure.DMA_BufferSize = 1024*8;  
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
DMA_InitStructure.DMA_Priority = DMA_Priority_VeryHigh;
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Enable;        
DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;
DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;

DMA_Init(DMA2_Stream1, &DMA_InitStructure); 

 

 

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


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

Доброго времени дня!

 

Разрешите еще пару вопросов. Если передавать данные в циклическом режиме по 8К слов, как задано в коде (если я все правильно понял), то после окончания передачи, данные начнут записываться по тому же адресу в памяти. Чтобы это предотвратить должна быть какая-то обработка в прерывании DMA, типа перезадать DMA_InitStructure.DMA_Memory0BaseAddr, так? И как, в случае циклической передачи отследить завершение передачи кадра? Счетчик переданных данных в прерывании DMA?

Изменено пользователем IgorKossak
бездумное цитирование

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


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

В режиме опроса регистров DCMI удалось снять картинку 640x480. Хочется DMA и за счет этого постараться еще увеличить разрешение. Кто-то может поделится полным проектом DCMI+DMA в идеале для формата RGB565 (2 байта на пиксель, 2 пикселя в DCMI_DR)

!!! нужно пердать БОЛЕЕ 65535 элементов по DMA !!!

Не знаю как корректно это сделать.

PS кадр сохраняю во внешнюю SRAM

Изменено пользователем Влад Р.

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


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

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

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

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

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

×
×
  • Создать...