341 lines
7.4 KiB
C
341 lines
7.4 KiB
C
#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_BF3720
|
||
|
||
|
||
|
||
|
||
SENSOR_INIT_SECTION static const unsigned char BF3720InitTable[CMOS_INIT_LEN]=
|
||
{
|
||
|
||
|
||
// FAE provided config
|
||
0x12, 0x80,//84
|
||
//0x12 , 0x03,//00
|
||
0x15, 0x03, // vsync high, hsync high
|
||
0x3a, 0x00, // UYVY
|
||
//0x09 , 0x10,//01??11
|
||
0x1b, 0x6e, //2F PLL
|
||
0x13, 0x80,//70 COM8[1]??0x13??=1??b0о?????????????????
|
||
//????????????????????0x01??blue gain????
|
||
//0x02??red gain???????????????
|
||
0x8c, 0x00, //
|
||
0x8d, 0x04,
|
||
0x87, 0x2a, //FF gloabl gain
|
||
0x13, 0x87,//07 COM8[1]??0x13??=1??b0о?????????????????
|
||
//????????????????????0x01??blue gain????
|
||
//0x02??red gain???????????????
|
||
0xbb, 0x20, // reserved
|
||
0x2f, 0x10, //
|
||
0x27, 0xc1, // reserved
|
||
0x16, 0x80, // reserved
|
||
0xe1, 0x98, // reserved
|
||
0xe4, 0x0f, // reserved
|
||
0xe3, 0x04, // reserved
|
||
0xec, 0xa8, // reserved
|
||
0x20, 0x40, // reserved
|
||
0xeb, 0xd5, // reserved
|
||
0xd2, 0x19, // gain diff ?
|
||
0x33, 0x80, // lens shading
|
||
0x34, 0x28, // lens shading
|
||
0x35, 0x34, // lens shading
|
||
0x65, 0x32, // lens shading
|
||
0x66, 0x30, // lens shading
|
||
0xf1, 0x00, // module by pass
|
||
0x24, 0x69,//82 AE_TAR1 ??A??????????
|
||
0x97, 0x69,//78 AE_TAR2 A????????????
|
||
//0x55??BRIGHT bit[7]?????λ????bit[7]?0????????????
|
||
//??bit[7]?1????????????
|
||
0x25, 0x88, // ae loc ?
|
||
// 0x81, 0xff, //
|
||
// 0x94, 0x82, //22 glb??
|
||
|
||
0x82, 0x2a, //22 glb??
|
||
0x83, 0x3a, //49 glb??
|
||
0x84, 0x38, //32 glb??
|
||
0x85, 0x41, //5E glb??
|
||
0x86, 0x90, //A0 glb??
|
||
0x8a, 0x9c, //C3 A6 50 hz banding filter
|
||
// 0x8b, 0x9c, //BB 60 hz banding filter
|
||
0x39, 0x0f, //CF ee
|
||
0x98, 0x12, //02 windows select, weight select
|
||
0x3f, 0x48,//90??28??????1????7????0????ü?????????1[6:0]????????
|
||
//1:???????????????
|
||
0x90, 0x30,//30 20 INT_TIM_TH ???е???????????????
|
||
0x91, 0x20,//20 1c OFFSET_TH1 ??????int-tim<int-tim-th??
|
||
//?????1+?????th1*x/4?????????????????
|
||
0x2d, 0x40,//40 60 Y_AVER_TH Y_Aver??????????????е????????????
|
||
0x2e, 0x38,//38 24 OFFSET_TH2 ??????Y_AVER<Y_AVER_TH,
|
||
//?????1-?????th2*x/4????????????????????
|
||
|
||
//gamma ????????
|
||
0x40, 0x58, // gamma
|
||
0x41, 0x54, // gamma
|
||
0x42, 0x4e, // gamma
|
||
0x43, 0x44, // gamma
|
||
0x44, 0x3e, // gamma
|
||
0x45, 0x39, // gamma
|
||
0x46, 0x35, // gamma
|
||
0x47, 0x31, // gamma
|
||
0x48, 0x2e, // gamma
|
||
0x49, 0x2b, // gamma
|
||
0x4b, 0x29, // gamma
|
||
0x4c, 0x27, // gamma
|
||
0x4e, 0x23, // gamma
|
||
0x4f, 0x20, // gamma
|
||
0x50, 0x1f, // gamma
|
||
// 0x3f, 0x80,//??? [7:6]??11?????g????gamma??
|
||
#if 0
|
||
//gamma default
|
||
0x40, 0x88,
|
||
0x41, 0x70,
|
||
0x42, 0x5f,
|
||
0x43, 0x50,
|
||
0x44, 0x46,
|
||
0x45, 0x40,
|
||
0x46, 0x3a,
|
||
0x47, 0x36,
|
||
0x48, 0x32,
|
||
0x49, 0x2f,
|
||
0x4b, 0x2c,
|
||
0x4c, 0x29,
|
||
0x4e, 0x25,
|
||
0x4f, 0x22,
|
||
0x50, 0x1f,
|
||
|
||
//gamma ?????????????
|
||
0x40, 0x98,
|
||
0x41, 0x88,
|
||
0x42, 0x6e,
|
||
0x43, 0x59,
|
||
0x44, 0x4d,
|
||
0x45, 0x45,
|
||
0x46, 0x3e,
|
||
0x47, 0x39,
|
||
0x48, 0x35,
|
||
0x49, 0x31,
|
||
0x4b, 0x2e,
|
||
0x4c, 0x2b,
|
||
0x4e, 0x26,
|
||
0x4f, 0x23,
|
||
0x50, 0x20,
|
||
|
||
//gamma low noise
|
||
0x40, 0x68,
|
||
0x41, 0x60,
|
||
0x42, 0x54,
|
||
0x43, 0x46,
|
||
0x44, 0x3e,
|
||
0x45, 0x39,
|
||
0x46, 0x35,
|
||
0x47, 0x31,
|
||
0x48, 0x2e,
|
||
0x49, 0x2b,
|
||
0x4b, 0x29,
|
||
0x4c, 0x27,
|
||
0x4e, 0x24,
|
||
0x4f, 0x22,
|
||
0x50, 0x20,
|
||
0x3f, 0x28,//??? [7:6]??11?????g????gamma??
|
||
//10???????????g????gamma???????????????
|
||
#endif
|
||
|
||
0xd4, 0x0a,
|
||
0x51, 0x0a,
|
||
0x52, 0x18,
|
||
0x53, 0x0e,
|
||
0x54, 0x17,
|
||
0x57, 0x95,
|
||
0x58, 0x7d,
|
||
0x59, 0x62,
|
||
0x5a, 0x83,
|
||
0x5b, 0x21,
|
||
0x5d, 0x95,
|
||
0xd3, 0x00,
|
||
|
||
#if 0
|
||
//CC??A?? CCM ????
|
||
0xd4, 0x0a,
|
||
0x51, 0x0a,
|
||
0x52, 0x18,
|
||
0x53, 0x0e,
|
||
0x54, 0x17,
|
||
0x57, 0x95,
|
||
0x58, 0x7d,
|
||
0x59, 0x62,
|
||
0x5a, 0x83,
|
||
0x5b, 0x21,
|
||
0x5d, 0x95,
|
||
0xd3, 0x00,
|
||
|
||
//CC??A?? CCM ????
|
||
0xd4, 0x0a,
|
||
0x51, 0x19,
|
||
0x52, 0x24,
|
||
0x53, 0x0b,
|
||
0x54, 0x12,
|
||
0x57, 0x77,
|
||
0x58, 0x65,
|
||
0x59, 0x45,
|
||
0x5a, 0x5e,
|
||
0x5b, 0x19,
|
||
0x5d, 0x95,
|
||
0xd3, 0x00,
|
||
|
||
|
||
//CC??A?? CCM ??????
|
||
0xd4, 0x0a,
|
||
0x51, 0x05,
|
||
0x52, 0x16,
|
||
0x53, 0x11,
|
||
0x54, 0x15,
|
||
0x57, 0x8f,
|
||
0x58, 0x7a,
|
||
0x59, 0x48,
|
||
0x5a, 0x88,
|
||
0x5b, 0x3f,
|
||
0x5d, 0x95,
|
||
0xd3, 0x00,
|
||
//0x55, 0x50, // cc Brightness control:
|
||
0x56, 0x38, // cc Y Coefficient for Contrast
|
||
#endif
|
||
|
||
//a??CCM
|
||
0xd4, 0x4a, // FRAM_NUM_THD ?
|
||
0x51, 0x0f, // cc
|
||
0x52, 0x35, // cc
|
||
0x53, 0x26, // cc
|
||
0x54, 0x17, // cc
|
||
// 0x55, 0x19, // cc Brightness control:
|
||
// 0x56, 0x3c, // cc Y Coefficient for Contrast
|
||
0x57, 0x86, // cc
|
||
0x58, 0x9d, // cc
|
||
0x59, 0x5b, // cc
|
||
0x5a, 0x8d, // cc
|
||
0x5b, 0x32, // cc
|
||
0x5d, 0x9d, // cc
|
||
0xd3, 0x00, // reserved
|
||
|
||
|
||
|
||
//??A?????
|
||
0x3b, 0x00, // COEF_SELSAT_COEF_SEL
|
||
0xb1, 0xd0, // Saturation
|
||
0xb2, 0xb8, // Saturation
|
||
0x3b, 0x01, // COEF_SELSAT_COEF_SEL
|
||
0xb1, 0xd0, //c0 0xb1??????????????????????0x80????????????
|
||
//?????????0x80?????????????????????????
|
||
//?????0xff???????С??0x80?????С????????????
|
||
0xb2, 0xb8, //a0?????????????????????0x80????????????
|
||
//?????????0x80????????????????
|
||
//?????0xff???????С??0x80?????С????????????
|
||
0xb0, 0xd4, //d4 Saturation ??????????6:0 ?????????? df??ff
|
||
0xb3, 0x86, //86 Saturation ??????????84,8f??ff??f6??f4
|
||
0x70, 0x87, //81 ????λ????????????????????1????????????
|
||
//??????0?????????????
|
||
0x72, 0xa2, //72 62
|
||
//[7:6]???????????????????????????????????????????????
|
||
//[5:4]?????????????????????????????????????????????
|
||
0x7a, 0x41,//33 45 ???????
|
||
//[7:4]??????????????????????С??????????????
|
||
//?С?????????????????????
|
||
//[3:0]???????????????С???????С??????????????
|
||
//??????????????????????
|
||
0x78, 0x33, //33 0x78[0]????????????λ????????1?????????????????????0??????????????
|
||
0x5c, 0x00, // Saturation
|
||
0xa2, 0x0c, // B Gain λ[5:0]?????????????
|
||
0xa3, 0x27, // B Gain λ[5:0]?????????????
|
||
0xa4, 0x09, // R Gain λ[5:0]??????????????
|
||
0xa5, 0x30, // R Gain λ[5:0]??????????????
|
||
0xa7, 0x97, // Base B Gain [7]?????????? λ[4:0]??????B????
|
||
0xa8, 0x19, //15 Base R Gain [7]??????????? λ[4:0]??????R????
|
||
0xa9, 0x52, // 57 5a AWB?????CB
|
||
0xaa, 0x52, // 54 AWB?????CR
|
||
0xab, 0x18, // 12 AWB?????CBCR
|
||
0xac, 0x30, // 3c AWB?????Y_??
|
||
0xad, 0xf0, // AWB?????Y_??
|
||
0xae, 0x33, //57 λ[7:4]??????f?????????? λ[3:0]??????f?????????
|
||
0xd0, 0x00, // Reserved
|
||
0xd1, 0x91, // 00??93
|
||
// 0x6a, 0x02,
|
||
0x23, 0x36, //33 ???????[2:0]?? [2:0]???????????У???????gain[2:0]??
|
||
//[6:4]??????????У???????gain[2:0]??
|
||
0xee, 0x30, // 4c??88
|
||
0x91, 0x9c, // be used for auto offset adjust.
|
||
0x78, 0x73, // IntCtr?
|
||
0x7c, 0x48, // Reserved
|
||
0xd9, 0xb6, // Gain
|
||
|
||
0x89, 0x2d, // 720p fps //min 15fps
|
||
0x8a, 0x9c, // 720p fps
|
||
0x8b, 0x3e, // 720p fps
|
||
|
||
0x4a, 0x70,//40
|
||
#if 1 //1280X720
|
||
0x17, 0x00, //14 16 22 HSTART high 8bit
|
||
0x18, 0x64, //8C B6 182 HSTOP high 8bit
|
||
0x19, 0x00, //0B 1E 30 VSTART high 8bit
|
||
0x1a, 0x4C, //4E 78 26VSTOP high 8bit
|
||
#else//960X536
|
||
0x17, 0x14,
|
||
0x18, 0x8C,
|
||
0x03, 0x22,
|
||
0x19, 0x0B,
|
||
0x1a, 0x4e,
|
||
#endif
|
||
// 0x03, 0x00, // Bit[6:4]: VREF end low 3 bits Bit[2:0]: VREF start low 3 bits
|
||
// 0x32, 0x00, // Bit[6:4]: HREF end low 3 bits Bit[2:0]: HREF start low 3 bits
|
||
// 0x12, 0x00,
|
||
// 0x4a, 0x30,
|
||
// 0x11, 0x01,
|
||
|
||
0x1f, 0x10,
|
||
0x22, 0x10,
|
||
0x26, 0x10,
|
||
|
||
0x56, 0x38,
|
||
|
||
0x09, 0x10, //10// output drive capability
|
||
0x1e, 0x30, // Mirror/Vflip Enable
|
||
|
||
|
||
|
||
-1,-1};
|
||
|
||
|
||
|
||
SENSOR_OP_SECTION const _Sensor_Adpt_ bf3720_cmd =
|
||
{
|
||
.typ = 1, //YUV
|
||
.pixelw = 800,
|
||
.pixelh= 608,
|
||
.hsyn = 1,
|
||
.vsyn = 1,
|
||
.rduline = 0,//
|
||
.rawwide = 1,//10bit
|
||
.colrarray = 2,//0:_RGRG_ 1:_GRGR_,2:_BGBG_,3:_GBGB_
|
||
.init = (uint8 *)BF3720InitTable,
|
||
.rotate_adapt = {0},
|
||
.hvb_adapt = {0x80,0x0a,0x80,0x0a},
|
||
. mclk = 24000000,
|
||
.p_fun_adapt = {NULL,NULL,NULL},
|
||
.p_xc7016_adapt = {NULL},
|
||
};
|
||
|
||
const _Sensor_Ident_ bf3720_init=
|
||
{
|
||
0x20,0xDC,0xDD,0x01,0x01,0xFD
|
||
};
|
||
|
||
|
||
#endif
|
||
|
||
|
||
|