Код: Выделить всё
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