📄 chp_sensor_po3030k.c
字号:
0x86,0xb6,0x89,0x00,0xad,0x3f,0xae,0x24,0xb3,0x68,0xb4,0x03,0xb8,0x10,0xb9,0x07,0xba,0xcc,0xbb,0x1f,0xbc,0x30,0xbf,0x02,0x8e,0x42,0x8f,0x95,0x90,0x8d,0x91,0x89,0x92,0x3a,0x93,0x90,0x94,0x84,0x95,0x89,0x96,0x2d,//gamma0xd8,0x80,0x76,0x00,0x77,0x08,0x78,0x10,0x79,0x18,0x7a,0x20,0x7b,0x30,0x7c,0x40,0x7d,0x60,0x7e,0x80,0x7f,0xa0,0x80,0xc0,0x81,0xe0,0xd8,0xa0,0x76,0x00,0x77,0x08,0x78,0x10,0x79,0x18,0x7a,0x20,0x7b,0x30,0x7c,0x40,0x7d,0x60,0x7e,0x80,0x7f,0xa0,0x80,0xc0,0x81,0xe0,0xd8,0xc0,0x76,0x00,0x77,0x08,0x78,0x10,0x79,0x18,0x7a,0x20,0x7b,0x30,0x7c,0x40,0x7d,0x60,0x7e,0x80,0x7f,0xa0,0x80,0xc0,0x81,0xe0,//0x46,0x8f,// 50HZ/60HZ flicker auto detection//add by caopeng 2006.11.140x49,0x85,0x4A,0x55,0x46,0x40,0x20,0x44,0x5c,0x66,0x97,0x25,0x98,0x25,//add by caopeng 2006.11.140xc5,0x80,0xc6,0x80,0x9b,0x08,0x5b,0x00,0x5c,0x6F,0x5d,0x04,0xb3,0x70,0xb9,0x03,0xba,0xe6,0xbb,0x07,0xbc,0xcc,*/};const CHP_U8 g_po3030k_mod_day[] = { 0xb9,0x03, 0xba,0xe6, 0xbb,0x07, 0xbc,0xcc,};const CHP_U8 g_po3030k_mod_night[] = { 0xb9,0x07, 0xba,0xcc, 0xbb,0x17, 0xbc,0x64,}; const CHP_U8 g_po3030k_rotat_normal[] = { 0x1e, 0x06, };const CHP_U8 g_po3030k_rotat_mirror[] = { 0x1e, 0x86, };const CHP_U8 g_po3030k_rotat_flip[] = { 0x1e, 0x46, //0x1e, 0xc6, };const CHP_U8 g_po3030k_rotat_180[] = { //0x1e, 0xc6, 0x1e, 0x86, };const CHP_U8 g_po3030k_bright_0[] = { 0x9b,0x60 //0x9b,0x10 //changed by nxc 2006-12-19};const CHP_U8 g_po3030k_bright_1[] = { 0x9b,0x40};const CHP_U8 g_po3030k_bright_2[] = { 0x9b,0x10 //0x9b,0x60 //changed by nxc 2006-12-19};const CHP_U8 g_po3030k_bright_3[] = { 0x9b,0x98};const CHP_U8 g_po3030k_bright_4[] = { 0x9b,0xa0};const CHP_U8 g_po3030k_bright_5[] ={ 0x9b,0xc0};const CHP_U8 g_po3030k_bright_6[] ={ 0x9b,0xf0};const CHP_U8 g_po3030k_contrast_0[] ={ 0x9c,0x16};const CHP_U8 g_po3030k_contrast_1[]= { 0x9c,0x46};const CHP_U8 g_po3030k_contrast_2[] ={ 0x9c,0x76};const CHP_U8 g_po3030k_contrast_3[] = { 0x9c,0x96};const CHP_U8 g_po3030k_contrast_4[] = { 0x9c,0xa6};const CHP_U8 g_po3030k_contrast_5[] = { 0x9c,0xc6};const CHP_U8 g_po3030k_contrast_6[] = { 0x9c,0xe6};CHP_RTN_T chp_po3030k_power_on(void){ CHP_RTN_T rtn = CHP_RTN_SUCCESS; CHP_U16 val; IOU_OUT(IOU_SENSOR_PWR_CTRL, 0x01); //PWDN IOU_OUT(IOU_SW_RESET_POLARITY, 0xa); //RESET IOU_IN(IOU_SENSOR_CLK_MODE_SET, val); val = val |0x10; //bit4 = 1 IOU_OUT(IOU_SENSOR_CLK_MODE_SET, val); //MCLK open return rtn;}CHP_RTN_T chp_po3030k_power_down(void){ CHP_RTN_T rtn = CHP_RTN_SUCCESS; CHP_U16 val; IOU_OUT(IOU_SENSOR_PWR_CTRL, 0x00); //PWDN IOU_OUT(IOU_SW_RESET_POLARITY, 0xa); //RESET IOU_IN(IOU_SENSOR_CLK_MODE_SET, val); val = val &0xef; //bit4 = 0 IOU_OUT(IOU_SENSOR_CLK_MODE_SET, val); //MCLK close return rtn;}static void chp_swap_positon(CHP_U16 * p_first, CHP_U16 * p_second){ CHP_U16 temp; temp = * p_first; *p_first = * p_second; *p_second = temp;}/*====================================================chp_po3030k_get_slaveidDESCRIPTION Get the slaveid of po3030k sensor INPUT PARAMETER None OUTPUT PARAMETER None RETURN VALUE slave id =====================================================*/CHP_U32 chp_po3030k_get_slaveid(void){ return 0x66;//0xdc;}#if 0CHP_U8 chp_po3030k_i2c_single_raed(CHP_U8 address){ CHP_I2C_CFG_IMEDIATE_T i2c_immediate; CHP_U8 com_data[2]; CHP_U16 * p_data = (CHP_U16 * )com_data; i2c_immediate.data_width = 2; i2c_immediate.slave_add = (CHP_U8)chp_sensor_get_slaveid(); i2c_immediate.data_size = 2; i2c_immediate.p_data = com_data; com_data[0] = address; com_data[1] = 0x00; chp_i2c_read(&i2c_immediate); return( p_data[0] & 0xff);}CHP_U8 chp_po3030k_i2c_single_write(CHP_U8 address , CHP_U8 value){ CHP_I2C_CFG_IMEDIATE_T i2c_immediate; CHP_U8 com_data[2]; CHP_U16 * p_data = (CHP_U16 * )com_data; i2c_immediate.data_width = 2; i2c_immediate.slave_add = (CHP_U8)chp_sensor_get_slaveid(); i2c_immediate.data_size = 2; i2c_immediate.p_data = com_data; com_data[0] = address; com_data[1] = value; chp_i2c_write(&i2c_immediate); return( p_data[0] & 0xff);}#endif/*====================================================chp_po3030k_i2c_para_writeDESCRIPTION Write the parament to sensor use the i2c bus INPUT PARAMETER the parament of sensor register setting OUTPUT PARAMETER None RETURN VALUE Success: CHP_RTN_SUCCESS Fail: =====================================================*/CHP_RTN_T chp_po3030k_i2c_para_write(CHP_U8* p_para, CHP_U32 p_para_size){ CHP_RTN_T rnt = CHP_RTN_SUCCESS; CHP_I2C_CFG_IMEDIATE_T g_po3030k_i2c_imediate_para; g_po3030k_i2c_imediate_para.p_data =(CHP_U8*) p_para; g_po3030k_i2c_imediate_para.data_size =p_para_size; g_po3030k_i2c_imediate_para.slave_add = chp_po3030k_get_slaveid(); g_po3030k_i2c_imediate_para.data_width = 2; if(g_po3030k_i2c_imediate_para.p_data) { rnt = chp_i2c_write(&g_po3030k_i2c_imediate_para); CHP_IF_ERROR_RTN(rnt); } return rnt;}/*====================================================chp_po3030k_jpeg_para_setDESCRIPTION po3030k sensor changes capture parameters INPUT PARAMETER CHP_JPG_PARA_T * p_capture_para : the point of the capture parameters OUTPUT PARAMETERNone RETURN VALUE Success: CHP_RTN_SUCCESS Fail: other value. =====================================================*/CHP_RTN_T chp_po3030k_jpeg_para_set(CHP_JPG_PARA_T * p_capture_para){ chp_memcpy((void * )(&g_chp_jpeg_cfg), (const void * )(p_capture_para), sizeof(CHP_JPG_PARA_T)); return chp_jpg_cfg(&g_chp_jpeg_cfg); }/*====================================================chp_po3030k_prev_para_setDESCRIPTION po3030k sensor changes preview parameters INPUT PARAMETER CHP_PREVIEW_PARA_T * p_preview_para : the point of the preview parameters OUTPUT PARAMETER None RETURN VALUE Success: CHP_RTN_SUCCESS Fail: other value. =====================================================*/CHP_RTN_T chp_po3030k_prev_para_set(CHP_PREVIEW_PARA_T * p_preview_para){ chp_memcpy((void * )(&g_chp_preview_cfg), (const void * )(p_preview_para), sizeof(CHP_PREVIEW_PARA_T)); return chp_preview_cfg(&g_chp_preview_cfg);}/*====================================================chp_po3030k_set_frameDESCRIPTION po3030k sensor changes framing format INPUT PARAMETER CHP_CMR_FRAME_T frame : framing format OUTPUT PARAMETER None RETURN VALUE Success: CHP_RTN_SUCCESS Fail: other value. =====================================================*/CHP_RTN_T chp_po3030k_set_frame(CHP_CMR_FRAME_T frame){ CHP_RTN_T rnt = CHP_RTN_SET_NOT_SUPPORT; switch(frame) { case CHP_FRAME_INIT : case CHP_FRAME_640X480 : IOU_OUT(IOU_SENSOR_IF_CLK_DIV, 0x01); //MCLK= DCLK rnt = chp_po3030k_i2c_para_write( (CHP_U8*)&g_po3030k_init , sizeof(g_po3030k_init)); g_chp_sensor_cfg.frame_width = 640; g_chp_sensor_cfg.frame_height = 480; rnt = chp_sensor_cfg(&g_chp_sensor_cfg); CHP_IF_ERROR_RTN(rnt); break; default : break; } return rnt;}CHP_RTN_T chp_po3030k_set_frame_capture(CHP_CMR_FRAME_T frame){ CHP_RTN_T rnt = CHP_RTN_SET_NOT_SUPPORT; switch(frame) { case CHP_FRAME_INIT : case CHP_FRAME_640X480 : IOU_OUT(IOU_SENSOR_IF_CLK_DIV, 0x01); //MCLK= DCLK rnt = chp_po3030k_i2c_para_write( (CHP_U8*)&g_po3030k_capture , sizeof(g_po3030k_capture)); g_chp_sensor_cfg.frame_width = 640; g_chp_sensor_cfg.frame_height = 480; rnt = chp_sensor_cfg(&g_chp_sensor_cfg); CHP_IF_ERROR_RTN(rnt); break; default : break; } return rnt;}/*====================================================chp_po3030k_set_effectDESCRIPTION po3030k sensor set effect INPUT PARAMETER CHP_CMR_EFFECT_T effect : effect OUTPUT PARAMETER None RETURN VALUE Success: CHP_RTN_SUCCESS Fail: other value. =====================================================*/ CHP_RTN_T chp_po3030k_set_effect(CHP_CMR_EFFECT_T effect){ CHP_YUV_T yuv; switch(effect){ case CHP_EFF_NORMAL: yuv = 0; break; case CHP_EFF_WARM: yuv = 0x0a0d0c08; break; case CHP_EFF_REVERSE: yuv = 0x1; break; case CHP_EFF_MOON: yuv = 0x011207d8; break; case CHP_EFF_COOL: yuv = 0x0251a7a8; break; case CHP_EFF_ANTIQUE: yuv = 0x0508ea08; //yuv = 0x050e8a08; break; case CHP_EFF_GRAY: yuv = 0x00100808; break; default: return CHP_RTN_FAIL;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -