Настройки регистра OV2640 для 640x480 VGAC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Настройки регистра OV2640 для 640x480 VGA

Сообщение Anonymous »

Я пытаюсь настроить камеру OV2640, используя регистры, приведенные ниже. К сожалению, я получаю 800x600, а не 640x480. Кроме того, я ожидаю 2 байта на пиксель в режиме YUV422, но я получаю 600 строк и 800 байтов на строку, которые не составляют 2 байта на пиксель.

Код: Выделить всё

const struct {
uint8_t reg;
uint8_t val;
} ov2640_init_register_values[] = {
// // ===== Reset and select DSP bank =====

///////////////////////////////////////////

{0xFF, 0x00}, // Select DSP
{0x2C, 0xFF}, // Reserved (PLL control)
{0x2E, 0xDF}, // Reserved (PLL control)
{0x00, 0x00},

//  Timing and output format
{0xFF, 0x01}, // Select Sensor
{0x3C, 0x32}, // DSP control
{0x11, 0x10}, // Clock prescaler -> divide input clock (user request)
{0x15, 0x32}, // Output format control -> HREF/VSYNC only (no PCLK on sync)
{0x00, 0x00},

// YUV422
{0xFF, 0x00},   //  DSP
{0xE0, 0x04},   //  reset DVP
{0xC2, 0x08},   //  enable DVP
{0xDA, 0x00},   //  mode YUV422
{0xD7, 0x01},   //  from default github
{0xE1, 0x67},   //  from default github
{0xE0, 0x00},   //  release reset
{0x00, 0x00},

/////////////////////////////////////////// ESP Source

// REGS TO SVGA
{0xFF, 0x01},   // Sensor
{0x12, 0x40},   // com 7 set SVGA mode
{0x03, 0x0A},   // SET COM1 to default SVGA Output
{0x32, 0x09},   // set reg32 to 0x09 default SVGA parameter
{0x17, 0x11},   //  HSTART
{0x18, 0x43},   //  HSTOP
{0x19, 0x00},   //  VSTART
{0x1A, 0x4B},   //  VSTOP
{0x00, 0x00},

{0xFF, 0x00},   // DSP
{0xE0, 0x04},   //  Reset DVP
{0xC0, 0x64},   //  Sensor resolution   Horizontal image size
{0xC1, 0x4B},   //  Sensor resolution   Vertical image size
{0x8C, 0x00},   //  Sensor resolution   SizeL - {HSIZE[11], HSIZE[2:0], VSIZE[2:0]}

{0x86, 0x20 | 0x1D},    //  ctrl2 enable DCW, SDE, UV_ADJ, UV_AVG & CMX
{0x50, 0x80},    //   CTRL I - LP_DP
{0x00, 0x00},

//  SET WINDOW SIZE
{0xFF, 0x00},   // DSP
{0X51, 0xC8},   // ESP example: HSIZE -> max_x = 200. 0x0A (160) same result
{0X52, 0x96},   // ESP example: VSIZE -> max_y = 150. 0x78 (120) same result
{0x53, 0x00},   //  XOFFL -> 0
{0x54, 0x00},   //  YOFFL -> 0
{0x55, 0x00},   //  VHYX  -> 0x00
{0x57, 0x00},   //  TEST

//  This part is not working for some reason...
{0x5A, 160},    //  OUTW (real / 4)
{0x5B, 120},    //  OUTH (real / 4)
{0x5C, 0x00},   //  [7:4] => zoom speed, [2] => OUTH[8], [1:0] => OUTW[9:8]
{0xD3, 0x02},
{0x00, 0x00},

{0xFF, 0xFF}, // End of table

};
< /code>
Я проверил, какие значения в конечном итоге были записаны на устройство, и это результат: < /p>
Reg 0x2C; value 0xFF; expected 0xFF!
Reg 0x2E; value 0xDF; expected 0xDF!
Reg 0x3C; value 0x32; expected 0x32!
Reg 0x11; value 0x10; expected 0x10!
Reg 0x15; value 0x32; expected 0x32!
Reg 0xE0; value 0x00; expected 0x04! -> fair because lastly in the list I reset 0xE0 to 0x00 (release the reset I guess?)
Reg 0xC2; value 0x08; expected 0x08!
Reg 0xDA; value 0x00; expected 0x00!
Reg 0xD7; value 0x03; expected 0x03!
Reg 0xE1; value 0x67; expected 0x67!
Reg 0xE0; value 0x00; expected 0x00!
Reg 0x12; value 0x40; expected 0x40!
Reg 0x03; value 0x0A; expected 0x0A!
Reg 0x32; value 0x09; expected 0x09!
Reg 0x17; value 0x11; expected 0x11!
Reg 0x18; value 0x43; expected 0x43!
Reg 0x19; value 0x00; expected 0x00!
Reg 0x1A; value 0x4B; expected 0x4B!
Reg 0xC0; value 0x64; expected 0x64!
Reg 0xC1; value 0x4B; expected 0x4B!
Reg 0x8C; value 0x00; expected 0x00!
Reg 0x86; value 0x3D; expected 0x3D!
Reg 0x50; value 0x80; expected 0x80!
Reg 0x51; value 0xA0; expected 0xA0!
Reg 0x52; value 0x78; expected 0x78!
Reg 0x53; value 0x00; expected 0x00!
Reg 0x54; value 0x00; expected 0x00!
Reg 0x55; value 0x00; expected 0x00!
Reg 0x57; value 0x00; expected 0x00!
Reg 0x5A; value 0xA0; expected 0xA0!
Reg 0x5B; value 0x78; expected 0x78!
Reg 0x5C; value 0x00; expected 0x00!
Reg 0xD3; value 0x82; expected 0x82!
Так что мне кажется хорошо.

Подробнее здесь: https://stackoverflow.com/questions/797 ... 40x480-vga
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»