I converted this program from CircuitPython to MicroPython in order to save images to the Pico 2040.
Pin wiring
- sck=Pin(2)
- mosi=Pin(3)
- miso=Pin(4)
- cspin=Pin(5)
- sda=Pin(8)
- scl=Pin(9)
Here is an example code:
filename:micro_ov2640.py
from ov2640_reg import *
from machine import Pin,I2C,SPI
import time
class ov2640(object):
def __init__(self):
# chip select -- active low SPI
self.spi=SPI(id=0,baudrate=4000000,bits=8, sck=Pin(2), mosi=Pin(3), miso=Pin(4))
self.cspin = Pin(5, Pin.OUT, value=1)
# I2C
self.I2cAddress=0x30#SENSORADDR
self.i2c = I2C(0,scl=Pin(9), sda=Pin(8),freq=1000000)
print(self.i2c.scan())
#self.spi_write(b'\x07',b'\x80')
#self.spi_write(b'\x07',b'\x00')
def Camera_Detection(self):
self.wrSensorReg8_8(0xff,0x01)
id_h=self.rdSensorReg8_8(0x0a)
id_l=self.rdSensorReg8_8(0x0b)
print("id_h",id_h,"id_l",id_l)
def spi_Test(self):
self.spi_write(0x00,0x56)
value=self.spi_read(0x00)
if(value[0]==0x56):
print('SPI interface OK')
else:
print('SPI interface Error')
def spi_write(self,address,value):
maskbits = 0x80
buffer=bytearray(2)
buffer[0]=address | maskbits
buffer[1]=value
self.cspin(0)
self.spi.write(buffer)
self.cspin(1)
def spi_read_father(self,number,address):
maskbits = 0x7f
buffer=bytearray(1)
buffer[0]=address & maskbits
self.cspin(0)
self.spi.write(buffer)
val = self.spi.read(number,buffer[0])
self.cspin(1)
return val
def spi_read(self,address):
return self.spi_read_father(1,address)
def spi_reads(self,number,address):
return self.spi_read_father(number,address)
def iic_write(self, buffer):
self.i2c.writeto(self.I2cAddress,buffer)
def iic_read(self, buffer):
self.i2c.readfrom_into(self.I2cAddress,buffer)
def wrSensorReg8_8(self,address,val):
buffer=bytearray(2)
buffer[0]=address
buffer[1]=val
self.iic_write(buffer)
def rdSensorReg8_8(self,address):
buffer=bytearray(1)
buffer[0]=address
self.iic_write(buffer)
self.iic_read(buffer)
return buffer[0]
def wrSensorRegs8_8(self,reg_value):
for data in reg_value:
addr = data[0]
val = data[1]
if (addr == 0xff and val == 0xff):
return
self.wrSensorReg8_8(addr, val)
def Camera_Init(self):
self.wrSensorReg8_8(0xff,0x01)
self.wrSensorReg8_8(0x12,0x80)
time.sleep(0.1)
self.wrSensorRegs8_8(OV2640_JPEG_INIT);
self.wrSensorRegs8_8(OV2640_YUV422);
self.wrSensorRegs8_8(OV2640_JPEG);
self.wrSensorReg8_8(0xff,0x01)
self.wrSensorReg8_8(0x15,0x00)
self.wrSensorRegs8_8(OV2640_320x240_JPEG);
#OV2640_set_Light_Mode
self.wrSensorReg8_8(0xff,0x00)
self.wrSensorReg8_8(0xc7,0x40)
self.wrSensorReg8_8(0xcc,0x52)
self.wrSensorReg8_8(0xcd,0x41)
self.wrSensorReg8_8(0xce,0x66)
#OV2640_set_Color_Saturation 色度
self.wrSensorReg8_8(0xff, 0x00)
self.wrSensorReg8_8(0x7c, 0x00)
self.wrSensorReg8_8(0x7d, 0x02)
self.wrSensorReg8_8(0x7c, 0x03)
self.wrSensorReg8_8(0x7d, 0x28)
self.wrSensorReg8_8(0x7d, 0x28)
#OV2640_set_Brightness 亮度
self.wrSensorReg8_8(0xff, 0x00)
self.wrSensorReg8_8(0x7c, 0x00)
self.wrSensorReg8_8(0x7d, 0x04)
self.wrSensorReg8_8(0x7c, 0x09)
self.wrSensorReg8_8(0x7d, 0x00)
self.wrSensorReg8_8(0x7d, 0x00)
#OV2640_set_Contrast 對比
self.wrSensorReg8_8(0xff, 0x00)
self.wrSensorReg8_8(0x7c, 0x00)
self.wrSensorReg8_8(0x7d, 0x04)
self.wrSensorReg8_8(0x7c, 0x07)
self.wrSensorReg8_8(0x7d, 0x20)
self.wrSensorReg8_8(0x7d, 0x18)
self.wrSensorReg8_8(0x7d, 0x34)
self.wrSensorReg8_8(0x7d, 0x06)
#OV2640_set_Special_effects
self.wrSensorReg8_8(0xff, 0x00)
self.wrSensorReg8_8(0x7c, 0x00)
self.wrSensorReg8_8(0x7d, 0x00)
self.wrSensorReg8_8(0x7c, 0x05)
self.wrSensorReg8_8(0x7d, 0x80)
self.wrSensorReg8_8(0x7d, 0x80)
def read_fifo_length(self):
len1=self.spi_read(0x42)[0]
len2=self.spi_read(0x43)[0]
len3=self.spi_read(0x44)[0]
len3=len3 & 0x7f
lenght=((len3<<16)|(len2<<8)|(len1))& 0x07fffff
print(len1,len2,len3,lenght)
return lenght
def flush_fifo(self):
self.spi_write(0x04,0x01)
def clear_fifo_flag(self):
self.spi_write(0x04,0x01)
def start_capture(self):
self.spi_write(0x04,0x02)
#save to file
def appendbuf(self,fn, picbuf, howmany):
try:
f = open(fn, 'a')
f.write(str(picbuf))
f.close()
except OSError:
print("error writing file")
print("write %d bytes from buffer" % howmany)
def read_fifo_burst(self):
self.flush_fifo()
self.start_capture()
lenght=self.read_fifo_length()
buffer = self.spi_reads(lenght,0x3d)
print(buffer)
self.appendbuf("789.txt", buffer, lenght)
self.cspin(1)
self.clear_fifo_flag()
def test():
a =ov2640()
a.spi_Test()
a.Camera_Init()
a.clear_fifo_flag()
time.sleep(0.01)
a.read_fifo_length()
a.read_fifo_burst()
if __name__ == '__main__' :
test()
filename:ov2640_reg.py
OV2640_JPEG_INIT =[
[ 0xff, 0x00 ],
[ 0x2c, 0xff ],
[ 0x2e, 0xdf ],
[ 0xff, 0x01 ],
[ 0x3c, 0x32 ],
[ 0x11, 0x00 ],
[ 0x09, 0x02 ],
[ 0x04, 0x28 ],
[ 0x13, 0xe5 ],
[ 0x14, 0x48 ],
[ 0x2c, 0x0c ],
[ 0x33, 0x78 ],
[ 0x3a, 0x33 ],
[ 0x3b, 0xfB ],
[ 0x3e, 0x00 ],
[ 0x43, 0x11 ],
[ 0x16, 0x10 ],
[ 0x39, 0x92 ],
[ 0x35, 0xda ],
[ 0x22, 0x1a ],
[ 0x37, 0xc3 ],
[ 0x23, 0x00 ],
[ 0x34, 0xc0 ],
[ 0x36, 0x1a ],
[ 0x06, 0x88 ],
[ 0x07, 0xc0 ],
[ 0x0d, 0x87 ],
[ 0x0e, 0x41 ],
[ 0x4c, 0x00 ],
[ 0x48, 0x00 ],
[ 0x5B, 0x00 ],
[ 0x42, 0x03 ],
[ 0x4a, 0x81 ],
[ 0x21, 0x99 ],
[ 0x24, 0x40 ],
[ 0x25, 0x38 ],
[ 0x26, 0x82 ],
[ 0x5c, 0x00 ],
[ 0x63, 0x00 ],
[ 0x61, 0x70 ],
[ 0x62, 0x80 ],
[ 0x7c, 0x05 ],
[ 0x20, 0x80 ],
[ 0x28, 0x30 ],
[ 0x6c, 0x00 ],
[ 0x6d, 0x80 ],
[ 0x6e, 0x00 ],
[ 0x70, 0x02 ],
[ 0x71, 0x94 ],
[ 0x73, 0xc1 ],
[ 0x12, 0x40 ],
[ 0x17, 0x11 ],
[ 0x18, 0x43 ],
[ 0x19, 0x00 ],
[ 0x1a, 0x4b ],
[ 0x32, 0x09 ],
[ 0x37, 0xc0 ],
[ 0x4f, 0x60 ],
[ 0x50, 0xa8 ],
[ 0x6d, 0x00 ],
[ 0x3d, 0x38 ],
[ 0x46, 0x3f ],
[ 0x4f, 0x60 ],
[ 0x0c, 0x3c ],
[ 0xff, 0x00 ],
[ 0xe5, 0x7f ],
[ 0xf9, 0xc0 ],
[ 0x41, 0x24 ],
[ 0xe0, 0x14 ],
[ 0x76, 0xff ],
[ 0x33, 0xa0 ],
[ 0x42, 0x20 ],
[ 0x43, 0x18 ],
[ 0x4c, 0x00 ],
[ 0x87, 0xd5 ],
[ 0x88, 0x3f ],
[ 0xd7, 0x03 ],
[ 0xd9, 0x10 ],
[ 0xd3, 0x82 ],
[ 0xc8, 0x08 ],
[ 0xc9, 0x80 ],
[ 0x7c, 0x00 ],
[ 0x7d, 0x00 ],
[ 0x7c, 0x03 ],
[ 0x7d, 0x48 ],
[ 0x7d, 0x48 ],
[ 0x7c, 0x08 ],
[ 0x7d, 0x20 ],
[ 0x7d, 0x10 ],
[ 0x7d, 0x0e ],
[ 0x90, 0x00 ],
[ 0x91, 0x0e ],
[ 0x91, 0x1a ],
[ 0x91, 0x31 ],
[ 0x91, 0x5a ],
[ 0x91, 0x69 ],
[ 0x91, 0x75 ],
[ 0x91, 0x7e ],
[ 0x91, 0x88 ],
[ 0x91, 0x8f ],
[ 0x91, 0x96 ],
[ 0x91, 0xa3 ],
[ 0x91, 0xaf ],
[ 0x91, 0xc4 ],
[ 0x91, 0xd7 ],
[ 0x91, 0xe8 ],
[ 0x91, 0x20 ],
[ 0x92, 0x00 ],
[ 0x93, 0x06 ],
[ 0x93, 0xe3 ],
[ 0x93, 0x05 ],
[ 0x93, 0x05 ],
[ 0x93, 0x00 ],
[ 0x93, 0x04 ],
[ 0x93, 0x00 ],
[ 0x93, 0x00 ],
[ 0x93, 0x00 ],
[ 0x93, 0x00 ],
[ 0x93, 0x00 ],
[ 0x93, 0x00 ],
[ 0x93, 0x00 ],
[ 0x96, 0x00 ],
[ 0x97, 0x08 ],
[ 0x97, 0x19 ],
[ 0x97, 0x02 ],
[ 0x97, 0x0c ],
[ 0x97, 0x24 ],
[ 0x97, 0x30 ],
[ 0x97, 0x28 ],
[ 0x97, 0x26 ],
[ 0x97, 0x02 ],
[ 0x97, 0x98 ],
[ 0x97, 0x80 ],
[ 0x97, 0x00 ],
[ 0x97, 0x00 ],
[ 0xc3, 0xed ],
[ 0xa4, 0x00 ],
[ 0xa8, 0x00 ],
[ 0xc5, 0x11 ],
[ 0xc6, 0x51 ],
[ 0xbf, 0x80 ],
[ 0xc7, 0x10 ],
[ 0xb6, 0x66 ],
[ 0xb8, 0xA5 ],
[ 0xb7, 0x64 ],
[ 0xb9, 0x7C ],
[ 0xb3, 0xaf ],
[ 0xb4, 0x97 ],
[ 0xb5, 0xFF ],
[ 0xb0, 0xC5 ],
[ 0xb1, 0x94 ],
[ 0xb2, 0x0f ],
[ 0xc4, 0x5c ],
[ 0xc0, 0x64 ],
[ 0xc1, 0x4B ],
[ 0x8c, 0x00 ],
[ 0x86, 0x3D ],
[ 0x50, 0x00 ],
[ 0x51, 0xC8 ],
[ 0x52, 0x96 ],
[ 0x53, 0x00 ],
[ 0x54, 0x00 ],
[ 0x55, 0x00 ],
[ 0x5a, 0xC8 ],
[ 0x5b, 0x96 ],
[ 0x5c, 0x00 ],
[ 0xd3, 0x00 ],
[ 0xc3, 0xed ],
[ 0x7f, 0x00 ],
[ 0xda, 0x00 ],
[ 0xe5, 0x1f ],
[ 0xe1, 0x67 ],
[ 0xe0, 0x00 ],
[ 0xdd, 0x7f ],
[ 0x05, 0x00 ],
[ 0x12, 0x40 ],
[ 0xd3, 0x04 ],
[ 0xc0, 0x16 ],
[ 0xC1, 0x12 ],
[ 0x8c, 0x00 ],
[ 0x86, 0x3d ],
[ 0x50, 0x00 ],
[ 0x51, 0x2C ],
[ 0x52, 0x24 ],
[ 0x53, 0x00 ],
[ 0x54, 0x00 ],
[ 0x55, 0x00 ],
[ 0x5A, 0x2c ],
[ 0x5b, 0x24 ],
[ 0x5c, 0x00 ],
[ 0xff, 0xff ],
]
OV2640_YUV422=[
[ 0xFF, 0x00 ],
[ 0x05, 0x00 ],
[ 0xDA, 0x10 ],
[ 0xD7, 0x03 ],
[ 0xDF, 0x00 ],
[ 0x33, 0x80 ],
[ 0x3C, 0x40 ],
[ 0xe1, 0x77 ],
[ 0x00, 0x00 ],
[ 0xff, 0xff ],
]
OV2640_JPEG= [
[ 0xe0, 0x14 ],
[ 0xe1, 0x77 ],
[ 0xe5, 0x1f ],
[ 0xd7, 0x03 ],
[ 0xda, 0x10 ],
[ 0xe0, 0x00 ],
[ 0xFF, 0x01 ],
[ 0x04, 0x08 ],
[ 0xff, 0xff ],
]
OV2640_160x120_JPEG = [
[ 0xff, 0x01 ],
[ 0x12, 0x40 ],
[ 0x17, 0x11 ],
[ 0x18, 0x43 ],
[ 0x19, 0x00 ],
[ 0x1a, 0x4b ],
[ 0x32, 0x09 ],
[ 0x4f, 0xca ],
[ 0x50, 0xa8 ],
[ 0x5a, 0x23 ],
[ 0x6d, 0x00 ],
[ 0x39, 0x12 ],
[ 0x35, 0xda ],
[ 0x22, 0x1a ],
[ 0x37, 0xc3 ],
[ 0x23, 0x00 ],
[ 0x34, 0xc0 ],
[ 0x36, 0x1a ],
[ 0x06, 0x88 ],
[ 0x07, 0xc0 ],
[ 0x0d, 0x87 ],
[ 0x0e, 0x41 ],
[ 0x4c, 0x00 ],
[ 0xff, 0x00 ],
[ 0xe0, 0x04 ],
[ 0xc0, 0x64 ],
[ 0xc1, 0x4b ],
[ 0x86, 0x35 ],
[ 0x50, 0x92 ],
[ 0x51, 0xc8 ],
[ 0x52, 0x96 ],
[ 0x53, 0x00 ],
[ 0x54, 0x00 ],
[ 0x55, 0x00 ],
[ 0x57, 0x00 ],
[ 0x5a, 0x28 ],
[ 0x5b, 0x1e ],
[ 0x5c, 0x00 ],
[ 0xe0, 0x00 ],
[ 0xff, 0xff ],
]
OV2640_176x144_JPEG=[
[ 0xff, 0x01 ],
[ 0x12, 0x40 ],
[ 0x17, 0x11 ],
[ 0x18, 0x43 ],
[ 0x19, 0x00 ],
[ 0x1a, 0x4b ],
[ 0x32, 0x09 ],
[ 0x4f, 0xca ],
[ 0x50, 0xa8 ],
[ 0x5a, 0x23 ],
[ 0x6d, 0x00 ],
[ 0x39, 0x12 ],
[ 0x35, 0xda ],
[ 0x22, 0x1a ],
[ 0x37, 0xc3 ],
[ 0x23, 0x00 ],
[ 0x34, 0xc0 ],
[ 0x36, 0x1a ],
[ 0x06, 0x88 ],
[ 0x07, 0xc0 ],
[ 0x0d, 0x87 ],
[ 0x0e, 0x41 ],
[ 0x4c, 0x00 ],
[ 0xff, 0x00 ],
[ 0xe0, 0x04 ],
[ 0xc0, 0x64 ],
[ 0xc1, 0x4b ],
[ 0x86, 0x35 ],
[ 0x50, 0x92 ],
[ 0x51, 0xc8 ],
[ 0x52, 0x96 ],
[ 0x53, 0x00 ],
[ 0x54, 0x00 ],
[ 0x55, 0x00 ],
[ 0x57, 0x00 ],
[ 0x5a, 0x2c ],
[ 0x5b, 0x24 ],
[ 0x5c, 0x00 ],
[ 0xe0, 0x00 ],
[ 0xff, 0xff ],
]
OV2640_320x240_JPEG=[
[ 0xff, 0x01 ],
[ 0x12, 0x40 ],
[ 0x17, 0x11 ],
[ 0x18, 0x43 ],
[ 0x19, 0x00 ],
[ 0x1a, 0x4b ],
[ 0x32, 0x09 ],
[ 0x4f, 0xca ],
[ 0x50, 0xa8 ],
[ 0x5a, 0x23 ],
[ 0x6d, 0x00 ],
[ 0x39, 0x12 ],
[ 0x35, 0xda ],
[ 0x22, 0x1a ],
[ 0x37, 0xc3 ],
[ 0x23, 0x00 ],
[ 0x34, 0xc0 ],
[ 0x36, 0x1a ],
[ 0x06, 0x88 ],
[ 0x07, 0xc0 ],
[ 0x0d, 0x87 ],
[ 0x0e, 0x41 ],
[ 0x4c, 0x00 ],
[ 0xff, 0x00 ],
[ 0xe0, 0x04 ],
[ 0xc0, 0x64 ],
[ 0xc1, 0x4b ],
[ 0x86, 0x35 ],
[ 0x50, 0x89 ],
[ 0x51, 0xc8 ],
[ 0x52, 0x96 ],
[ 0x53, 0x00 ],
[ 0x54, 0x00 ],
[ 0x55, 0x00 ],
[ 0x57, 0x00 ],
[ 0x5a, 0x50 ],
[ 0x5b, 0x3c ],
[ 0x5c, 0x00 ],
[ 0xe0, 0x00 ],
[ 0xff, 0xff ],
]
OV2640_352x288_JPEG=[
[ 0xff, 0x01 ],
[ 0x12, 0x40 ],
[ 0x17, 0x11 ],
[ 0x18, 0x43 ],
[ 0x19, 0x00 ],
[ 0x1a, 0x4b ],
[ 0x32, 0x09 ],
[ 0x4f, 0xca ],
[ 0x50, 0xa8 ],
[ 0x5a, 0x23 ],
[ 0x6d, 0x00 ],
[ 0x39, 0x12 ],
[ 0x35, 0xda ],
[ 0x22, 0x1a ],
[ 0x37, 0xc3 ],
[ 0x23, 0x00 ],
[ 0x34, 0xc0 ],
[ 0x36, 0x1a ],
[ 0x06, 0x88 ],
[ 0x07, 0xc0 ],
[ 0x0d, 0x87 ],
[ 0x0e, 0x41 ],
[ 0x4c, 0x00 ],
[ 0xff, 0x00 ],
[ 0xe0, 0x04 ],
[ 0xc0, 0x64 ],
[ 0xc1, 0x4b ],
[ 0x86, 0x35 ],
[ 0x50, 0x89 ],
[ 0x51, 0xc8 ],
[ 0x52, 0x96 ],
[ 0x53, 0x00 ],
[ 0x54, 0x00 ],
[ 0x55, 0x00 ],
[ 0x57, 0x00 ],
[ 0x5a, 0x58 ],
[ 0x5b, 0x48 ],
[ 0x5c, 0x00 ],
[ 0xe0, 0x00 ],
[ 0xff, 0xff ],
]
OV2640_640x480_JPEG=[
[0xff, 0x01],
[0x11, 0x01],
[0x12, 0x00],
[0x17, 0x11],
[0x18, 0x75],
[0x32, 0x36],
[0x19, 0x01],
[0x1a, 0x97],
[0x03, 0x0f],
[0x37, 0x40],
[0x4f, 0xbb],
[0x50, 0x9c],
[0x5a, 0x57],
[0x6d, 0x80],
[0x3d, 0x34],
[0x39, 0x02],
[0x35, 0x88],
[0x22, 0x0a],
[0x37, 0x40],
[0x34, 0xa0],
[0x06, 0x02],
[0x0d, 0xb7],
[0x0e, 0x01],
[0xff, 0x00],
[0xe0, 0x04],
[0xc0, 0xc8],
[0xc1, 0x96],
[0x86, 0x3d],
[0x50, 0x89],
[0x51, 0x90],
[0x52, 0x2c],
[0x53, 0x00],
[0x54, 0x00],
[0x55, 0x88],
[0x57, 0x00],
[0x5a, 0xa0],
[0x5b, 0x78],
[0x5c, 0x00],
[0xd3, 0x04],
[0xe0, 0x00],
[0xff, 0xff],
]
OV2640_800x600_JPEG=[
[0xff, 0x01],
[0x11, 0x01],
[0x12, 0x00],
[0x17, 0x11],
[0x18, 0x75],
[0x32, 0x36],
[0x19, 0x01],
[0x1a, 0x97],
[0x03, 0x0f],
[0x37, 0x40],
[0x4f, 0xbb],
[0x50, 0x9c],
[0x5a, 0x57],
[0x6d, 0x80],
[0x3d, 0x34],
[0x39, 0x02],
[0x35, 0x88],
[0x22, 0x0a],
[0x37, 0x40],
[0x34, 0xa0],
[0x06, 0x02],
[0x0d, 0xb7],
[0x0e, 0x01],
[0xff, 0x00],
[0xe0, 0x04],
[0xc0, 0xc8],
[0xc1, 0x96],
[0x86, 0x35],
[0x50, 0x89],
[0x51, 0x90],
[0x52, 0x2c],
[0x53, 0x00],
[0x54, 0x00],
[0x55, 0x88],
[0x57, 0x00],
[0x5a, 0xc8],
[0x5b, 0x96],
[0x5c, 0x00],
[0xd3, 0x02],
[0xe0, 0x00],
[0xff, 0xff],
]
OV2640_1024x768_JPEG=[
[0xff, 0x01],
[0x11, 0x01],
[0x12, 0x00],
[0x17, 0x11],
[0x18, 0x75],
[0x32, 0x36],
[0x19, 0x01],
[0x1a, 0x97],
[0x03, 0x0f],
[0x37, 0x40],
[0x4f, 0xbb],
[0x50, 0x9c],
[0x5a, 0x57],
[0x6d, 0x80],
[0x3d, 0x34],
[0x39, 0x02],
[0x35, 0x88],
[0x22, 0x0a],
[0x37, 0x40],
[0x34, 0xa0],
[0x06, 0x02],
[0x0d, 0xb7],
[0x0e, 0x01],
[0xff, 0x00],
[0xc0, 0xC8],
[0xc1, 0x96],
[0x8c, 0x00],
[0x86, 0x3D],
[0x50, 0x00],
[0x51, 0x90],
[0x52, 0x2C],
[0x53, 0x00],
[0x54, 0x00],
[0x55, 0x88],
[0x5a, 0x00],
[0x5b, 0xC0],
[0x5c, 0x01],
[0xd3, 0x02],
[0xff, 0xff],
]
OV2640_1280x1024_JPEG=[
[0xff, 0x01],
[0x11, 0x01],
[0x12, 0x00],
[0x17, 0x11],
[0x18, 0x75],
[0x32, 0x36],
[0x19, 0x01],
[0x1a, 0x97],
[0x03, 0x0f],
[0x37, 0x40],
[0x4f, 0xbb],
[0x50, 0x9c],
[0x5a, 0x57],
[0x6d, 0x80],
[0x3d, 0x34],
[0x39, 0x02],
[0x35, 0x88],
[0x22, 0x0a],
[0x37, 0x40],
[0x34, 0xa0],
[0x06, 0x02],
[0x0d, 0xb7],
[0x0e, 0x01],
[0xff, 0x00],
[0xe0, 0x04],
[0xc0, 0xc8],
[0xc1, 0x96],
[0x86, 0x3d],
[0x50, 0x00],
[0x51, 0x90],
[0x52, 0x2c],
[0x53, 0x00],
[0x54, 0x00],
[0x55, 0x88],
[0x57, 0x00],
[0x5a, 0x40],
[0x5b, 0xf0],
[0x5c, 0x01],
[0xd3, 0x02],
[0xe0, 0x00],
[0xff, 0xff],
]
OV2640_1600x1200_JPEG=[
[0xff, 0x01],
[0x11, 0x01],
[0x12, 0x00],
[0x17, 0x11],
[0x18, 0x75],
[0x32, 0x36],
[0x19, 0x01],
[0x1a, 0x97],
[0x03, 0x0f],
[0x37, 0x40],
[0x4f, 0xbb],
[0x50, 0x9c],
[0x5a, 0x57],
[0x6d, 0x80],
[0x3d, 0x34],
[0x39, 0x02],
[0x35, 0x88],
[0x22, 0x0a],
[0x37, 0x40],
[0x34, 0xa0],
[0x06, 0x02],
[0x0d, 0xb7],
[0x0e, 0x01],
[0xff, 0x00],
[0xe0, 0x04],
[0xc0, 0xc8],
[0xc1, 0x96],
[0x86, 0x3d],
[0x50, 0x00],
[0x51, 0x90],
[0x52, 0x2c],
[0x53, 0x00],
[0x54, 0x00],
[0x55, 0x88],
[0x57, 0x00],
[0x5a, 0x90],
[0x5b, 0x2C],
[0x5c, 0x05],
[0xd3, 0x02],
[0xe0, 0x00],
[0xff, 0xff],
]
you could test this.