Всем емббед привет! =) Понадобилось мне тут изучить принцип работы МК с CMOS матрицами, решил использовать связку камера OV7670 (камера подключена по DCMI) + STM32F4DISCOWERY + MicroSD (SDIO+DMA). Все это дело работает как фотик, жму на кнопку и типо должно сфотографировать, фотогравирует в буффер размером 176*144 байта (какраз влазит в ОЗУ дискавери =)) ), потом создаем на флешке файл bmp, и туда все сохраняем! Но беда в том что внятного изображения я так и не получил, всего лишь разные вариации шума, в зависимости от настроек камеры. Собственно что уже получилось, получилось общаться с регистрами камеры по интерфейсу SCCB (аналог I2C), также получилось писать данные в файл, но пишет как по мне медленно, открытие и запись 50Кбайт длится 1.2 сек. Не понятен для меня вопрос как эффективней всего забирать изображение с камеры. Вот как делаю сейчас.
Код: Выделить всё
//while((DCMI_GetFlagStatus(DCMI_FLAG_VSYNC)) == RESET);
for (i = 0; i < 25344; i+=2) {
while ((DCMI_GetFlagStatus(DCMI_FLAG_FNE)) == RESET);
uint16_t tmp = (DCMI->DR);
img[1][i] = (tmp);
img[0][i] = (tmp)>>8;
tmp = (DCMI->DR)>>16;
img[1][i+1] = (tmp);
img[0][i+1] = (tmp)>>8;
}
Видел гдето вариант настройки DMA где сам по себе заполняется массив для фотографии.
Может ктото работал с интерфейсом DCMI или с камерой OV7670. Помогите разобратся =) Могу поделится исходниками.