×

Внимание

Форум находится в режиме только для чтения.

STM32F40x и DCMI

12 года 6 мес. назад #2858 от ivan
ivan создал тему: STM32F40x и DCMI
Родился тут вопросец. Есть у STM32 DCMI интерфейса режим Embedded Syncronisation. Это когда спец. цифровые комбинации, выводимые камерой на шину данных, воспринимаются процессором как сигналы кадровой и строчной развертки (вместо отдельных портов HSYNC и VSYNC). Дак вот как эту фитчу настроить в проце? Камеру настроил, она точно выводит эти сигналы.
И еще, примерчик бы - перегон из DCMI в SD карту - возможно?
12 года 6 мес. назад #2872 от Денис Ягов
Денис Ягов ответил в теме Re: STM32F40x и DCMI
Иван, привет.

Надо для начала определиться с режимом камеры.
есть 2 варианта:
1. коды сигналов : начало кадра, конец кадра, начало строки, конец строки
2.  коды сигналов : начало строки, конец строки, начало межкадрового периода, конец межкадрового периода

По первому типу подключения:
формат команды выглядит так: 0xFF0000XY, где  FF0000 - преамбула, XY - код события (смотреть документацию на камеру)

По второму типу подключения:
всё тоже самое, только команды другие.

Все команды  XY - находятся в регистре "DCMI embedded synchronization code register (DCMI_ESCR)"
как раз 32 бита по 8 на каждый код.

Ещё тонкий момент: этот режим работает только на 8-ми битной шине с захватом. (бит DCMI_CR->CM = 1)

Ещё тонкий момент:
Есть регистр маски. Можно выбрать биты которые сравнивать при распознавании команды. "DCMI embedded synchronization unmask register (DCMI_ESUR)" - в аккурат 32 бита.


Это было для тех кто любит регистры.

Библиотечная функция:
void DCMI_SetEmbeddedSynchroCodes  ( DCMI_CodesInitTypeDef *  DCMI_CodesInitStruct )
где

DCMI_CodesInitTypeDef Struct Reference
Data Fields
uint8_t  DCMI_FrameStartCode
uint8_t  DCMI_LineStartCode
uint8_t  DCMI_LineEndCode
uint8_t  DCMI_FrameEndCode

(посмотрел код функции - просто закидывает регистры, регистры маски не трогает)

В функции DCMI_Init - указать, что синхронизация по шине данных. Ширина данных 8 бит. режим захвата.
12 года 6 мес. назад #2884 от ivan
ivan ответил в теме Re: STM32F40x и DCMI
Денис, спасибо за поддержку! Убедился что со стороны МК я все делаю правильно, значит дело в камере.
11 года 1 мес. назад #4802 от Dimaxa
Dimaxa ответил в теме Re: STM32F40x и DCMI
Здравствуйте! 
Купил плату F4Discovery, с дисплеем и камерой, не получается заставить получать видео с камеры при синхронизации кодом, а не ножками камеры. Код идущий с платой работает, в настройках камеры переделываю по адресу 0x0F команду с 0х40 на 0х46, вывод камерой кодов синхронизации. В настройках DCMI указываю тип синхронизации Embedded, и дополнительно указываю команды строк и кадра в таком порядке
DCMI_CodesInitStruct.DCMI_FrameStartCode=0x19;
DCMI_CodesInitStruct.DCMI_LineStartCode=0x17;
DCMI_CodesInitStruct.DCMI_LineEndCode=0x18;
DCMI_CodesInitStruct.DCMI_FrameEndCode=0x1A;

больше ничего в родном коде не менял, камера или плата не работают, на экране ничего нету, не подскажите мою ошибку?
11 года 1 мес. назад - 11 года 1 мес. назад #4803 от Денис Ягов
Денис Ягов ответил в теме Re: STM32F40x и DCMI
Насколько вы уверены, что камера посылает по шине данных такую синхронизацию?

Т.е. контроллер то может и воспринимает всё правильно, только камера это не выдаёт.

Читать мануал на CMOS сенсор. Конкретно: в каком месте находится "бит, который заставит камеру генерить синхронизирующие данные и их вид".

Настройка CMOS сенсора производится через I2C (как правило именно этот интерфейс настроечный).


Платы расширения - китайские, могут реально другие видеосенсоры стоять.
:)
11 года 1 мес. назад #4804 от Dimaxa
Dimaxa ответил в теме Re: STM32F40x и DCMI
Я меня разрешение выдаваемое камерой, по умолчанию программы, она выдаёт 320х240, я менял это разрешение на 176х132 (на память), всё работает, менял формат картинки, то есть RGB565 по умолчанию менял на другой, менял зеркальность изображения, поэтому не сомневаюсь в соответствии сенсора указанному в даташит, сенсор OV9655. Программный код шел с платой на диске, но он аппаратный, а мне надо программный. В даташит указано что по адресу 0х0F по умолчанию записан код 0х046, это программная синхронизация, в коде с платой стоит 0х40, по тому же самому даташит это соответствует аппаратной синхронизации. И ещё, если только изменить этот регистр в сенсоре и больше в коде ничего не трогать, то есть оставить режим аппаратной синхронизации, после прошивки в картинке на дисплее пропадает синхронизация, но видно что изображение в реале идёт, так как меняется рисунок полос при движении перед камерой.

А в описанных мною процедурах всё правильно сделано? Я ничего не упустил или не сделал лишнего? Вы сами пробовали так делать?
Время создания страницы: 0.040 секунд
Работает на Kunena форум