Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
pro100dasha
7 лет назад

В гостях у Саши или как получить свою первую картинку от камеры VC0706

Привет, мои дорогие друзья!
Вчера я была у Саши и мы продолжили знакомство с камерой VC0706.


Сегодня я расскажу как взаимодействовать с камерой через последовательное соединение (UART).

Введение

В камере VC0706 есть буфер - FBUF куда помещается два кадра (изображения): текущий и следующий. Периодически данные с CMOS сенсора записываются в текущий кадр, предварительно копируя их в следующий. То что нам нужно - это читать один из кадров. Для этого нужно проделать следующие шаги:

  1. Остановить обновление кадра в FBUF с помощью команды FBUF_CTRL.
  2. Прочитать размер изображения, которое хранится в буфере, с помощью команды GET_FBUF_LEN
  3. Получить данные из буфера с помощью команды READ_FBUF.
  4. Возобновить обновление кадра в FBUF с помощью команды FBUF_CTRL.

Знакомство с командами

FBUF_CTRL
Описание: управление буфером (FBUF)
Формат команды: 0x56+serial number+0x36+0x01+control flag(1byte)
где control flag принимает значения:

  • 0: остановить текущий кадр;
  • 1: остановить следующий кадр;
  • 2: возобновить обновление кадров;
  • 3: step frame (не уверена, но думаю, сдвинуть "кадр текущий" <- "следующий кадр").

Возвращаемый ответ:
OK: 0x76+serial number+0x36+0x00+0x00
Error: 0x76+serial number+0x36+0x03+0x00
Примеры команд:

  • 0x56+0x00+0x36+0x01+0x00 остановить текущий кадр;
  • 0x56+0x00+0x36+0x01+0x01 остановить следующий кадр;
  • 0x56+0x00+0x36+0x01+0x02 возобновить обновление кадров;
  • 0x56+0x00+0x36+0x01+0x03 step frame.

GET_FBUF_LEN
Описание: возвращает размер изображения в байтах
Формат команды: 0x56+serial number+0x34+0x01+FBUF type(1 byte)
где FBUF type принимает значения:

  • 0: текущий кадр;
  • 1: следующий кадр;

Возвращаемый ответ:
OK: 0x76+serial number+0x34+0x00+0x04+FBUF data-lengths(4bytes)
Error: 0x76+serial number+0x34+0x03+0x00
Примеры команд:

  • 0x56+0x00+0x34+0x01+0x00 получить размер текущего кадра;
  • 0x56+0x00+0x34+0x01+0x01 получить размер следующего кадра;

Как правило, команда используется перед чтением FBUF.

READ_FBUF
Описание: возвращает изображение из буфера(FBUF)
Формат команды: 0x56+serial number+0x32+0x0C+FBUF type(1byte)+control mode(1 byte)+starting address(4bytes)+data-length(4 bytes)+delay(2 bytes)
где FBUF type принимает значения:

  • 0: текущий кадр;
  • 1: следующий кадр;

Control mode режим передачи данных изображения:

  • Bit[0]
    • 0: передача данных по MCU;
    • 1: передача данных по DMA;
  • Bit[1,2]: 2'b11
  • Bit[3]: 1'b11

Starting address: адрес в FBUF, хранящий кадр.
Data-length:количество байт для чтения должно быть кратным 4.
Delay: время задержки между командой и данными, единица измерения 0,01 милисекунд.

Возвращаемый ответ:
OK: 0x76+serial number+0x32+0x00+0x00 кадр 0x76+serial number+0x32+0x00+0x00
Error: 0x76+serial number+0x32+error code+0x01
Примеры команд:
0x56+0x00+0x32+0x0C+0x00+0x0F+0x00+0x00+0x00+0x10+0x00+0x00+0x02+0x00+0x10+0
x00, где:
Starting address - 0x0100, Control mode - DMA. Data-length - 0x0200, Delay - 40,96 милисекунды.
Перед выполнением этой команды необходимо остановить обновление буфера, иначе произойдет сбой.
Рекомендуется использовать DMA режим, т.к у этого режима более высокая скорость передачи данных, чем у MCU.

Результирующий список команд

Шаг 1. Остановить обновление кадра: 56 00 36 01 00
Шаг 2. Получить размер изображения: 56 00 34 01 00
Ответ: 76 00 34 00 04FF FF FF FF, где FF FF FF FF - размер кадра (изображения)
Шаг 3. Получить изображение : 56 00 32 0C 00 0A00 00 00 00FF FF FF FF10 00
Ответ: 76 00 32 00 00FF D8 ...Image data...FF D976 00 32 00 00
Шаг 4. Возобновить обновление кадра:56 00 36 01 03

В следующей статье я опишу как на практике получить картинку.

3
69.293 GOLOS
На Golos с August 2017
Комментарии (6)
Сортировать по:
Сначала старые