Files
TAIXIN/sdk/lib/bus/iic/sensor/sensor_sp0718.c

488 lines
8.6 KiB
C
Raw Permalink Normal View History

#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_SP0718
//AE target
#define SP0718_P1_0xeb 0x7c//室外亮度
#define SP0718_P1_0xec 0x75//室内亮度
//HEQ
#define SP0718_P1_0x10 0x00//outdoor
#define SP0718_P1_0x14 0x18
#define SP0718_P1_0x11 0x00//nr
#define SP0718_P1_0x15 0x18
#define SP0718_P1_0x12 0x00//dummy
#define SP0718_P1_0x16 0x10
#define SP0718_P1_0x13 0x00//low
#define SP0718_P1_0x17 0x00
SENSOR_INIT_SECTION static const unsigned char SP0718InitTable[CMOS_INIT_LEN]=
{
0xfd,0x00,
0x1C,0x00,
0x31,0x10,
0x27,0xb3,//0xb3 //2x gain
0x1b,0x17,
0x26,0xaa,
0x37,0x02,
0x28,0x8f,
0x1a,0x73,
0x1e,0x1b,
0x21,0x06, //blackout voltage
0x22,0x2a, //colbias
0x0f,0x3f,
0x10,0x3e,
0x11,0x00,
0x12,0x01,
0x13,0x3f,
0x14,0x04,
0x15,0x30,
0x16,0x31,
0x17,0x01,
0x69,0x31,
0x6a,0x2a,
0x6b,0x33,
0x6c,0x1a,
0x6d,0x32,
0x6e,0x28,
0x6f,0x29,
0x70,0x34,
0x71,0x18,
0x36,0x00,//02 delete badframe
0xfd,0x01,
0x5d,0x51,//position
0xf2,0x19,
//Blacklevel
0x1f,0x10,
0x20,0x1f,
//pregain
0xfd,0x02,
0x00,0x88,
0x01,0x88,
//SI15_SP0718 24M 50Hz 15-8fps
#if 0
//ae setting
0xfd,0x00,
0x03,0x01,
0x04,0xce,
0x06,0x00,
0x09,0x02,
0x0a,0xc4,
0xfd,0x01,
0xef,0x4d,
0xf0,0x00,
0x02,0x0c,
0x03,0x01,
0x06,0x47,
0x07,0x00,
0x08,0x01,
0x09,0x00,
//Status
0xfd,0x02,
0xbe,0x9c,
0xbf,0x03,
0xd0,0x9c,
0xd1,0x03,
0xfd,0x01,
0x5b,0x03,
0x5c,0x9c,
#else //22fps
//ae setting
0xfd,0x00,
0x03,0x02,
0x04,0xa6,
0x06,0x00,
0x09,0x00,
0x0a,0xd4,
0xfd,0x01,
0xef,0x71,
0xf0,0x00,
0x02,0x04,
0x03,0x01,
0x06,0x6b,
0x07,0x00,
0x08,0x01,
0x09,0x00,
//Status
0xfd,0x02,
0xbe,0xc4,
0xbf,0x01,
0xd0,0xc4,
0xd1,0x01,
0xfd,0x01,
0x5b,0x01,
0x5c,0xc4,
#endif
//rpc
0xfd,0x01,
0xe0,0x40,////24//4c//48//4c//44//4c//3e//3c//3a//38//rpc_1base_max
0xe1,0x30,////24//3c//38//3c//36//3c//30//2e//2c//2a//rpc_2base_max
0xe2,0x2e,////24//34//30//34//2e//34//2a//28//26//26//rpc_3base_max
0xe3,0x2a,////24//2a//2e//2c//2e//2a//2e//26//24//22//rpc_4base_max
0xe4,0x2a,////24//2a//2e//2c//2e//2a//2e//26//24//22//rpc_5base_max
0xe5,0x28,////24//2c//2a//2c//28//2c//24//22//20//rpc_6base_max
0xe6,0x28,////24//2c//2a//2c//28//2c//24//22//20//rpc_7base_max
0xe7,0x26,////24//2a//28//2a//26//2a//22//20//20//1e//rpc_8base_max
0xe8,0x26,////24//2a//28//2a//26//2a//22//20//20//1e//rpc_9base_max
0xe9,0x26,////24//2a//28//2a//26//2a//22//20//20//1e//rpc_10base_max
0xea,0x26,////24//28//26//28//24//28//20//1f//1e//1d//rpc_11base_max
0xf3,0x26,////24//28//26//28//24//28//20//1f//1e//1d//rpc_12base_max
0xf4,0x26,////24//28//26//28//24//28//20//1f//1e//1d//rpc_13base_max
//ae gain &status
0xfd,0x01,
0x04,0xe0,//rpc_max_indr
0x05,0x26,//1e//rpc_min_indr
0x0a,0xa0,//rpc_max_outdr
0x0b,0x26,//rpc_min_outdr
0x5a,0x40,//dp rpc
0xfd,0x02,
0xbc,0xa0,//rpc_heq_low
0xbd,0x80,//rpc_heq_dummy
0xb8,0x80,//mean_normal_dummy
0xb9,0x90,//mean_dummy_normal
//ae target
0xfd,0x01,
0xeb,SP0718_P1_0xeb,//78
0xec,SP0718_P1_0xec,//78
0xed,0x0a,
0xee,0x10,
//lsc
0xfd,0x01,
0x26,0x30,
0x27,0x2c,
0x28,0x07,
0x29,0x08,
0x2a,0x40,
0x2b,0x03,
0x2c,0x00,
0x2d,0x00,
0xa1,0x24,
0xa2,0x27,
0xa3,0x27,
0xa4,0x2b,
0xa5,0x1c,
0xa6,0x1a,
0xa7,0x1a,
0xa8,0x1a,
0xa9,0x18,
0xaa,0x1c,
0xab,0x17,
0xac,0x17,
0xad,0x08,
0xae,0x08,
0xaf,0x08,
0xb0,0x00,
0xb1,0x00,
0xb2,0x00,
0xb3,0x00,
0xb4,0x00,
0xb5,0x02,
0xb6,0x06,
0xb7,0x00,
0xb8,0x00,
//DP
0xfd,0x01,
0x48,0x09,
0x49,0x99,
//awb
0xfd,0x01,
0x32,0x05,
0xfd,0x00,
0xe7,0x03,
0xfd,0x02,
0x26,0xc8,
0x27,0xc6,
0xfd,0x00,
0xe7,0x00,
0xfd,0x02,
0x1b,0x80,
0x1a,0x80,
0x18,0x26,
0x19,0x28,
0xfd,0x02,
0x2a,0x00,
0x2b,0x08,
0x28,0xef,//0xa0//f8
0x29,0x20,
//d65 90 e2 93
0x66,0x42,//0x59//0x60////0x58//4e//0x48
0x67,0x62,//0x74//0x70//0x78//6b//0x69
0x68,0xee,//0xd6//0xe3//0xd5//cb//0xaa
0x69,0x18,//0xf4//0xf3//0xf8//ed
0x6a,0xa6,//0xa5
//indoor 91
0x7c,0x3b,//0x45//30//41//0x2f//0x44
0x7d,0x5b,//0x70//60//55//0x4b//0x6f
0x7e,0x15,//0a//0xed
0x7f,0x39,//23//0x28
0x80,0xaa,//0xa6
//cwf 92
0x70,0x3e,//0x38//41//0x3b
0x71,0x59,//0x5b//5f//0x55
0x72,0x31,//0x30//22//0x28
0x73,0x4f,//0x54//44//0x45
0x74,0xaa,
//tl84 93
0x6b,0x1b,//0x18//11
0x6c,0x3a,//0x3c//25//0x2f
0x6d,0x3e,//0x3a//35
0x6e,0x59,//0x5c//46//0x52
0x6f,0xaa,
//f 94
0x61,0xea,//0x03//0x00//f4//0xed
0x62,0x03,//0x1a//0x25//0f//0f
0x63,0x6a,//0x62//0x60//52//0x5d
0x64,0x8a,//0x7d//0x85//70//0x75//0x8f
0x65,0x6a,//0xaa//6a
0x75,0x80,
0x76,0x20,
0x77,0x00,
0x24,0x25,
//针对室内调偏不过灯箱测试使用//针对人脸调偏
0x20,0xd8,
0x21,0xa3,//82//a8偏暗照度还有调偏
0x22,0xd0,//e3//bc
0x23,0x86,
//outdoor r\b range
0x78,0xc3,//d8
0x79,0xba,//82
0x7a,0xa6,//e3
0x7b,0x99,//86
//skin
0x08,0x15,//
0x09,0x04,//
0x0a,0x20,//
0x0b,0x12,//
0x0c,0x27,//
0x0d,0x06,//
0x0e,0x63,//
//wt th
0x3b,0x10,
//gw
0x31,0x60,
0x32,0x60,
0x33,0xc0,
0x35,0x6f,
// sharp
0xfd,0x02,
0xde,0x0f,
0xd2,0x02,//6//控制黑白边0-边粗f-变细
0xd3,0x06,
0xd4,0x06,
0xd5,0x06,
0xd7,0x20,//10//2x根据增益判断轮廓阈值
0xd8,0x30,//24//1A//4x
0xd9,0x38,//28//8x
0xda,0x38,//16x
0xdb,0x08,//
0xe8,0x20,//48//轮廓强度
0xe9,0x20,
0xea,0x20,
0xeb,0x10,
0xec,0x20,//60//80
0xed,0x20,//50//60
0xee,0x20,
0xef,0x10,
//平坦区域锐化力度
0xf3,0x50,
0xf4,0x10,
0xf5,0x10,
0xf6,0x10,
//dns
0xfd,0x01,
0x64,0x44,//沿方向边缘平滑力度 //0-最强8-最弱
0x65,0x22,
0x6d,0x08,//8//强平滑(平坦)区域平滑阈值
0x6e,0x10,//8
0x6f,0x20,
0x70,0x30,
0x71,0x08,//0d//弱平滑(非平坦)区域平滑阈值
0x72,0x12,//1b
0x73,0x1c,//20
0x74,0x24,
0x75,0x23,//[7:4]平坦区域强度,[3:0]非平坦区域强度0-最强8-最弱;
0x76,0x02,//46
0x77,0x02,//33
0x78,0x02,
0x81,0x10,//18//2x//根据增益判定区域阈值,低于这个做强平滑、大于这个做弱平滑;
0x82,0x20,//30//4x
0x83,0x30,//40//8x
0x84,0x48,//50//16x
0x85,0x0c,//12/8+reg0x81 第二阈值,在平坦和非平坦区域做连接
0xfd,0x02,
0xdc,0x0f,
//gamma
0xfd,0x01,
0x8b,0x00,//00//00
0x8c,0x0a,//0c//09
0x8d,0x16,//19//17
0x8e,0x1f,//25//24
0x8f,0x2a,//30//33
0x90,0x3c,//44//47
0x91,0x4e,//54//58
0x92,0x5f,//61//64
0x93,0x6c,//6d//70
0x94,0x82,//80//81
0x95,0x94,//92//8f
0x96,0xa6,//a1//9b
0x97,0xb2,//ad//a5
0x98,0xbf,//ba//b0
0x99,0xc9,//c4//ba
0x9a,0xd1,//cf//c4
0x9b,0xd8,//d7//ce
0x9c,0xe0,//e0//d7
0x9d,0xe8,//e8//e1
0x9e,0xef,//ef//ea
0x9f,0xf8,//f7//f5
0xa0,0xff,//ff//ff
//CCM
0xfd,0x02,
0x15,0xd0,//b>th
0x16,0x95,//r<th
//gc镜头照人脸偏黄
//!F
0xa0,0x80,//80
0xa1,0x00,//00
0xa2,0x00,//00
0xa3,0x00,//06
0xa4,0x8c,//8c
0xa5,0xf4,//ed
0xa6,0x0c,//0c
0xa7,0xf4,//f4
0xa8,0x80,//80
0xa9,0x00,//00
0xaa,0x30,//30
0xab,0x0c,//0c
//F
0xac,0x8c,
0xad,0xf4,
0xae,0x00,
0xaf,0xed,
0xb0,0x8c,
0xb1,0x06,
0xb2,0xf4,
0xb3,0xf4,
0xb4,0x99,
0xb5,0x0c,
0xb6,0x03,
0xb7,0x0f,
//sat u
0xfd,0x01,
0xd3,0x7a,//0x88//50
0xd4,0x7a,//0x88//50
0xd5,0x7a,//50
0xd6,0x70,//50
//sat v
0xd7,0x70,//0x88//50
0xd8,0x70,//0x88//50
0xd9,0x70,//50
0xda,0x70,//50
//auto_sat
0xdd,0x30,
0xde,0x10,
0xd2,0x01,//autosa_en
0xdf,0xff,//a0//y_mean_th
//uv_th
0xfd,0x01,
0xc2,0xaa,
0xc3,0xaa,
0xc4,0x66,
0xc5,0x66,
//heq
0xfd,0x01,
0x0f,0xff,
0x10,SP0718_P1_0x10, //out
0x14,SP0718_P1_0x14,
0x11,SP0718_P1_0x11, //nr
0x15,SP0718_P1_0x15,
0x12,SP0718_P1_0x12, //dummy
0x16,SP0718_P1_0x16,
0x13,SP0718_P1_0x13, //low
0x17,SP0718_P1_0x17,
0xfd,0x01,
0xcd,0x20,
0xce,0x1f,
0xcf,0x20,
0xd0,0x55,
//auto
0xfd,0x01,
0xfb,0x33,
//0x32,0x15,
0x33,0xff,
0x34,0xe7,
0xc6,0xa0,
0xc7,0xa0,
0xc8,0xa0,
0xc9,0xa0,
0x35,0x40,
0xff,0xff,
-1,-1};
SENSOR_OP_SECTION const _Sensor_Adpt_ sp0718_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 *)SP0718InitTable,
.rotate_adapt = {0},
.hvb_adapt = {0x80,0x0a,0x80,0x0a},
. mclk = 24000000,
.p_fun_adapt = {NULL,NULL,NULL},
.p_xc7016_adapt = {NULL},
};
const _Sensor_Ident_ sp0718_init=
{
0x71,0x42,0x43,0x01,0x01,0x02
};
const _Sensor_ISP_Init sp0718_isp_init =
{
.type = ISP_INPUT_DAT_SRC_DVP,
.pixel_h = 480,
.pixel_w = 640,
.bayer_patten = ISP_BAYER_FORMAT_GRBG,
.input_format = ISP_INPUT_DAT_FORMAT_YUV422,
};
#endif