Initial commit: TXW82x FPV v2.7.0.7-42229 SDK + project sources
This commit is contained in:
432
sdk/lib/bus/iic/sensor/sensor_ov7670.c
Normal file
432
sdk/lib/bus/iic/sensor/sensor_ov7670.c
Normal file
@@ -0,0 +1,432 @@
|
||||
#include "sys_config.h"
|
||||
#include "typesdef.h"
|
||||
#include "lib/video/dvp/cmos_sensor/csi.h"
|
||||
#include "tx_platform.h"
|
||||
#include "list.h"
|
||||
#include "dev.h"
|
||||
#include "hal/i2c.h"
|
||||
|
||||
#if DEV_SENSOR_OV7670
|
||||
|
||||
|
||||
SENSOR_INIT_SECTION static const unsigned char OV7670InitTable[CMOS_INIT_LEN]=
|
||||
{
|
||||
#if 1
|
||||
0x12,0x80,
|
||||
0x09,0x10,
|
||||
0xc1,0x7f,
|
||||
0x11,0x80,
|
||||
0x3a,0x0c,
|
||||
0x3d,0xc0,
|
||||
0x12,0x02,
|
||||
0x15,0x40,
|
||||
0x17,0x13,
|
||||
0x18,0x01,
|
||||
0x32,0xbf,
|
||||
0x19,0x02,
|
||||
0x1a,0x7a,
|
||||
0x03,0x0a,
|
||||
0x0c,0x00,
|
||||
0x3e,0x00,
|
||||
0x70,0x3a,
|
||||
0x71,0x35,
|
||||
0x72,0x11,
|
||||
0x73,0xf0,
|
||||
0xa2,0x02,
|
||||
0x7a,0x20,
|
||||
0x7b,0x03,
|
||||
0x7c,0x0a,
|
||||
0x7d,0x1a,
|
||||
0x7e,0x3f,
|
||||
0x7f,0x4e,
|
||||
0x80,0x5b,
|
||||
0x81,0x68,
|
||||
0x82,0x75,
|
||||
0x83,0x7f,
|
||||
0x84,0x89,
|
||||
0x85,0x9a,
|
||||
0x86,0xa6,
|
||||
0x87,0xbd,
|
||||
0x88,0xd3,
|
||||
0x89,0xe8,
|
||||
0x13,0xe0,
|
||||
0x00,0x00,
|
||||
0x10,0x00,
|
||||
0x0d,0x40,
|
||||
0x14,0x28,
|
||||
0xa5,0x02,
|
||||
0xab,0x02,
|
||||
0x24,0x68,
|
||||
0x25,0x58,
|
||||
0x26,0xc2,
|
||||
0x9f,0x78,
|
||||
0xa0,0x68,
|
||||
0xa1,0x03,
|
||||
0xa6,0xd8,
|
||||
0xa7,0xd8,
|
||||
0xa8,0xf0,
|
||||
0xa9,0x90,
|
||||
0xaa,0x14,
|
||||
0x13,0xe5,
|
||||
0x0e,0x61,
|
||||
0x0f,0x4b,
|
||||
0x16,0x02,
|
||||
0x1e,0x07,
|
||||
0x21,0x02,
|
||||
0x22,0x91,
|
||||
0x29,0x07,
|
||||
0x33,0x0b,
|
||||
0x35,0x0b,
|
||||
0x37,0x1d,
|
||||
0x38,0x71,
|
||||
0x39,0x2a,
|
||||
0x3c,0x78,
|
||||
0x4d,0x40,
|
||||
0x4e,0x20,
|
||||
0x69,0x00,
|
||||
0x6b,0x0a,
|
||||
0x74,0x10,
|
||||
0x8d,0x4f,
|
||||
0x8e,0x00,
|
||||
0x8f,0x00,
|
||||
0x90,0x00,
|
||||
0x91,0x00,
|
||||
0x96,0x00,
|
||||
0x9a,0x80,
|
||||
0xb0,0x84,
|
||||
0xb1,0x0c,
|
||||
0xb2,0x0e,
|
||||
0xb3,0x82,
|
||||
0xb8,0x0a,
|
||||
0x43,0x0a,
|
||||
0x44,0xf2,
|
||||
0x45,0x39,
|
||||
0x46,0x62,
|
||||
0x47,0x3d,
|
||||
0x48,0x55,
|
||||
0x59,0x83,
|
||||
0x5a,0x0d,
|
||||
0x5b,0xcd,
|
||||
0x5c,0x8c,
|
||||
0x5d,0x77,
|
||||
0x5e,0x16,
|
||||
0x6c,0x0a,
|
||||
0x6d,0x65,
|
||||
0x6e,0x11,
|
||||
0x6f,0x9e,
|
||||
0x6a,0x40,
|
||||
0x01,0x56,
|
||||
0x02,0x44,
|
||||
0x13,0xe7,
|
||||
0x4f,0x88,
|
||||
0x50,0x8b,
|
||||
0x51,0x04,
|
||||
0x52,0x11,
|
||||
0x53,0x8c,
|
||||
0x54,0x9d,
|
||||
0x55,0x00,
|
||||
0x56,0x40,
|
||||
0x57,0x80,
|
||||
0x58,0x9a,
|
||||
0x41,0x08,
|
||||
0x3f,0x00,
|
||||
0x75,0x04,
|
||||
0x76,0x60,
|
||||
0x4c,0x00,
|
||||
0x77,0x01,
|
||||
0x3d,0xc2,
|
||||
0x4b,0x09,
|
||||
0xc9,0x30,
|
||||
0x41,0x38,
|
||||
0x56,0x40,
|
||||
0x34,0x11,
|
||||
0x3b,0x12,
|
||||
0xa4,0x88,
|
||||
0x96,0x00,
|
||||
0x97,0x30,
|
||||
0x98,0x20,
|
||||
0x99,0x30,
|
||||
0x9a,0x84,
|
||||
0x9b,0x29,
|
||||
0x9c,0x03,
|
||||
0x9d,0x99,
|
||||
0x9e,0x7f,
|
||||
0x78,0x04,
|
||||
0x79,0x01,
|
||||
0xc8,0xf0,
|
||||
0x79,0x0f,
|
||||
0xc8,0x00,
|
||||
0x79,0x10,
|
||||
0xc8,0x7e,
|
||||
0x79,0x0a,
|
||||
0xc8,0x80,
|
||||
0x79,0x0b,
|
||||
0xc8,0x01,
|
||||
0x79,0x0c,
|
||||
0xc8,0x0f,
|
||||
0x79,0x0d,
|
||||
0xc8,0x20,
|
||||
0x79,0x09,
|
||||
0xc8,0x80,
|
||||
0x79,0x02,
|
||||
0xc8,0xc0,
|
||||
0x79,0x03,
|
||||
0xc8,0x40,
|
||||
0x79,0x05,
|
||||
0xc8,0x30,
|
||||
0x79,0x26,
|
||||
0x62,0x00,
|
||||
0x63,0x00,
|
||||
0x64,0x06,
|
||||
0x65,0x00,
|
||||
0x66,0x05,
|
||||
0x94,0x05,
|
||||
0x95,0x09,
|
||||
0x2a,0x10,
|
||||
0x2b,0xc2,
|
||||
0x15,0x02,
|
||||
0x3a,0x04,
|
||||
0x3d,0xc3,
|
||||
0x19,0x03,
|
||||
0x1a,0x7b,
|
||||
0x2a,0x00,
|
||||
0x2b,0x00,
|
||||
0x18,0x01,
|
||||
0x66,0x05,
|
||||
0x62,0x10,
|
||||
0x63,0x0b,
|
||||
0x65,0x07,
|
||||
0x64,0x0f,
|
||||
0x94,0x0e,
|
||||
0x95,0x10,
|
||||
0x4f,0x87,
|
||||
0x50,0x68,
|
||||
0x51,0x1e,
|
||||
0x52,0x15,
|
||||
0x53,0x7c,
|
||||
0x54,0x91,
|
||||
0x58,0x1e,
|
||||
0x41,0x38,
|
||||
0x76,0xe0,
|
||||
0x24,0x40,
|
||||
0x25,0x38,
|
||||
0x26,0x91,
|
||||
0x7a,0x09,
|
||||
0x7b,0x0c,
|
||||
0x7c,0x16,
|
||||
0x7d,0x28,
|
||||
0x7e,0x48,
|
||||
0x7f,0x57,
|
||||
0x80,0x64,
|
||||
0x81,0x71,
|
||||
0x82,0x7e,
|
||||
0x83,0x89,
|
||||
0x84,0x94,
|
||||
0x85,0xa8,
|
||||
0x86,0xba,
|
||||
0x87,0xd7,
|
||||
0x88,0xec,
|
||||
0x89,0xf9,
|
||||
0x09,0x00,
|
||||
-1,-1
|
||||
#else
|
||||
0x12, 0x80,
|
||||
//udelay(20000,
|
||||
0x11, 0x00,
|
||||
0x92, 0x66,
|
||||
0x93, 0x00,
|
||||
0x9d, 0x4c,
|
||||
0x9e, 0x3f,
|
||||
0x3b, 0x0a,
|
||||
0x13, 0xf0,
|
||||
0x10, 0x00,
|
||||
0x00, 0x00,
|
||||
// 0x00, 0xff, // modified by me
|
||||
// 0x07, 0x3f, // added by me
|
||||
0x01, 0x80,
|
||||
0x02, 0x80,
|
||||
0x13, 0xf5,
|
||||
//
|
||||
0x12, 0x00,
|
||||
0x04, 0x00,
|
||||
0x18, 0x01,
|
||||
0x17, 0x13,
|
||||
0x32, 0x92,
|
||||
0x19, 0x02,
|
||||
0x1a, 0x7a,
|
||||
0x03, 0x00,
|
||||
//
|
||||
0x0e, 0x84,
|
||||
0x0f, 0x62,
|
||||
0x15, 0x02,
|
||||
0x16, 0x02,
|
||||
0x1b, 0x01,
|
||||
0x1e, 0x01,
|
||||
0x29, 0x3c,
|
||||
0x33, 0x00,
|
||||
0x34, 0x07,
|
||||
0x35, 0x84,
|
||||
0x36, 0x00,
|
||||
0x38, 0x13,
|
||||
0x39, 0x43,
|
||||
0x3a, 0x00,
|
||||
0x3c, 0x6c,
|
||||
0x3d, 0x90,
|
||||
0x3f, 0x29,
|
||||
0x40, 0xc1,
|
||||
0x41, 0x20,
|
||||
0x6b, 0x0a,
|
||||
0xa1, 0xc8,
|
||||
//
|
||||
0x69, 0x80,
|
||||
0x43, 0xf0,
|
||||
0x44, 0x10,
|
||||
0x45, 0x78,
|
||||
0x46, 0xa8,
|
||||
0x47, 0x60,
|
||||
0x48, 0x80,
|
||||
0x59, 0xba,
|
||||
0x5a, 0x9a,
|
||||
0x5b, 0x22,
|
||||
0x5c, 0xb9,
|
||||
0x5d, 0x9b,
|
||||
0x5e, 0x10,
|
||||
0x5f, 0xe0,
|
||||
0x60, 0x85,
|
||||
0x61, 0x60,
|
||||
0x9f, 0x9d,
|
||||
0xa0, 0xa0,
|
||||
//
|
||||
0x4f, 0x66,
|
||||
0x50, 0x6b,
|
||||
0x51, 0x05,
|
||||
0x52, 0x19,
|
||||
0x53, 0x40,
|
||||
0x54, 0x59,
|
||||
0x55, 0x40,
|
||||
0x56, 0x40,
|
||||
0x57, 0x40,
|
||||
0x58, 0x0d,
|
||||
//
|
||||
0x8b, 0xcc,
|
||||
0x8c, 0xcc,
|
||||
0x8d, 0xcf,
|
||||
//
|
||||
0x6c, 0x40,
|
||||
0x6d, 0x30,
|
||||
0x6e, 0x4b,
|
||||
0x6f, 0x60,
|
||||
0x70, 0x70,
|
||||
0x71, 0x70,
|
||||
0x72, 0x70,
|
||||
0x73, 0x70,
|
||||
0x74, 0x60,
|
||||
0x75, 0x60,
|
||||
0x76, 0x50,
|
||||
0x77, 0x48,
|
||||
0x78, 0x3a,
|
||||
0x79, 0x2e,
|
||||
0x7a, 0x28,
|
||||
0x7b, 0x22,
|
||||
0x7c, 0x04,
|
||||
0x7d, 0x07,
|
||||
0x7e, 0x10,
|
||||
0x7f, 0x28,
|
||||
0x80, 0x36,
|
||||
0x81, 0x44,
|
||||
0x82, 0x52,
|
||||
0x83, 0x60,
|
||||
0x84, 0x6c,
|
||||
0x85, 0x78,
|
||||
0x86, 0x8c,
|
||||
0x87, 0x9e,
|
||||
0x88, 0xbb,
|
||||
0x89, 0xd2,
|
||||
0x8a, 0xe6,
|
||||
//
|
||||
0x14, 0x1a,
|
||||
0x24, 0x78,
|
||||
0x25, 0x6c,
|
||||
0x62, 0x00,
|
||||
0x63, 0x00,
|
||||
0x64, 0x18,
|
||||
0x65, 0x30,
|
||||
0x66, 0x05,
|
||||
0x94, 0x18,
|
||||
0x95, 0x1c,
|
||||
//udelay(8000,
|
||||
0x13, 0xf7,
|
||||
|
||||
|
||||
-1,-1,
|
||||
|
||||
#endif
|
||||
};
|
||||
|
||||
extern struct i2c_device *iic_test;
|
||||
|
||||
|
||||
static void OV7670_rotate(uint32 r)
|
||||
{
|
||||
unsigned char buf[2];
|
||||
buf[0] = 0x1e;
|
||||
buf[1] = (r<<4)|0x07;
|
||||
// sensor_iic_enable();
|
||||
// sensor_iic_info();
|
||||
|
||||
//i2c_sensor_write(iic_test,buf,1,1,0x42,0x43);
|
||||
//i2c_write(iic_test,(int8 *)&t[i][0],1,(int8 *)&t[i][1],1);
|
||||
i2c_write(iic_test,(int8 *)buf,1,(int8 *)&buf[1],1);
|
||||
// sensor_iic_diable();
|
||||
}
|
||||
|
||||
|
||||
|
||||
uint32 OV7670_hvblank(int8 dh,int8 dv)
|
||||
{
|
||||
uint32 i;
|
||||
#define HBLANK_BASE 0//0xb0UL//0x80UL//0xb0UL
|
||||
#define VBLANK_BASE 0//0x20UL//0x0AUL//0x20UL
|
||||
int32 h = (int32)HBLANK_BASE + dh; if(h < 0) h = 0;
|
||||
int32 v = (int32)VBLANK_BASE + dv; if(v < 0) v = 0;
|
||||
const uint8 t[][2] = {
|
||||
{0x2A,(h >> 8)<<4},//HB[11:8]
|
||||
{0x2B,h & 0xff},//HB[7:0]
|
||||
{0x2D,v & 0xff},//VB[11:8]
|
||||
{0x2E,v >> 8},//VB[7:0]
|
||||
};
|
||||
|
||||
for(i=0;i<4;i++)
|
||||
//i2c_sensor_write(iic_test,(u8 *)&t[i][0],1,1,0x42,0x43);
|
||||
i2c_write(iic_test,(int8 *)&t[i][0],1,(int8 *)&t[i][1],1);
|
||||
|
||||
return (h<<16)|v;
|
||||
}
|
||||
|
||||
SENSOR_OP_SECTION const _Sensor_Adpt_ ov7670_cmd =
|
||||
{
|
||||
.typ = 1, //YUV
|
||||
.pixelw = 640,
|
||||
.pixelh= 480,
|
||||
.hsyn = 1,
|
||||
.vsyn = 1,
|
||||
.rduline = 0,//
|
||||
.rawwide = 1,//10bit
|
||||
.colrarray = 2,//0:_RGRG_ 1:_GRGR_,2:_BGBG_,3:_GBGB_
|
||||
.init = (uint8 *)OV7670InitTable,
|
||||
.rotate_adapt = {0},
|
||||
.hvb_adapt = {0,0,0,0},
|
||||
. mclk = 4000000,
|
||||
.p_fun_adapt = {OV7670_rotate,OV7670_hvblank,NULL},
|
||||
.p_xc7016_adapt = {NULL},
|
||||
};
|
||||
|
||||
|
||||
const _Sensor_Ident_ ov7670_init=
|
||||
{
|
||||
0x76,0x42,0x43,0x01,0x01,0x0a
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user