声明:资料来自公司同事整理
1.X15-ov7670(back)&&ov7690(front)前后切换会死掉,id读错;
在camera_hw.c文件中改成默认 //治标方法,问题在i2c
/*如果两个sensor都不能识别,默认进入OV7690,并返回不能识别摄像头*/
#if defined(__RGT_X15_ADDX_MLA__)
if
(cis_module_get_cur_module() == SENSOR_1)
{
if (image_sensor_func == NULL)
{
#if defined(__RGT_X15_ADDX__)
strcpy(sensor1_name, "ov7670");
#endif
image_sensor_func = &image_sensor_func_OV76X0;
}
} n>
else if(cis_module_get_cur_module() == SENSOR_2)
{
if (image_sensor_func == NULL)
{
#if defined(__RGT_VERSION_INFO__)
#if defined(__RGT_X15_ADDX__)
strcpy(sensor2_name, "ov7690");
#endif
#endif
image_sensor_func = &image_sensor_func_OV7690;
}
}
2.LCD屏抖动一般原因
一般来说是VCOM电压不匹配,调整VCOMH或者提高帧率都可以解决
如果是输入电压不稳定导致的话,看看IC DATASHEET,VREG1OUT(GAMMA基准电压)有几种产生方式,可以的话改成内部LDO背压的方式试试
再或者也可能是是背光频率和屏的刷新率不匹配耦合产生的滚动水波纹,这种情况改两
边的频率都能改善
3.f12_HI704拍照返回黑屏以及预览轻微绿屏;
黑屏的问题是摄像头进入睡眠,不同的平台有所不同
write_cmos_sensor(0x01, 0xc0);//new add sleep out and pclk drive(BIT0)
绿条纹的问题解决方法:
绿条纹以及整个图像颜色不对是因为数据采样出现错误,在翻盖机上出现的机会很大,可能是因为i2c走线太远导致
有三个解决方案:
1.可以修改pclk drive以及page0的0x12寄存器(pclk相位(BIT2)),
2.修改ISP驱动电流即set_isp_driving_current(ISP_DRIVING_2MA);// ISP_DRIVING_8MA
3.增加dummy_lines(无效帧)
4.针对“不能播放自己录制的视频文件”代码修改如下:红色字体,为增加部分,
在Image_sensor_hynix.c中:
void Preview(image_sensor_exposure_window_struct *pImage_Window, image_sensor_config_struct *pSensor_Config_Data)
……………………..
if (pSensor_Config_Data->isp_op_mode == ISP_MJPEG_PREVIEW_MODE
|| pSensor_Config_Data->isp_op_mode == ISP_MJPEG_ENCODE_MODE)
{ // MJPEG mode
g_bVideoMode = KAL_TRUE;
write_cmos_sensor(0x11, 0x94); (注意:此寄存器只要改变第2位就行,例如为0x93,就设为0x97, 如果是0x90,就设置为0x94.)
write_cmos_sensor(0x03, 0x20);
write_cmos_sensor(0x10, 0x9c);
write_cmos_sensor(0x11, 0x00);
5.X1 _ov7675调试总结:
曝光偏暗最好不要修改expourse的值,应该修改AEC寄存器调节亮度
//aec
OV7675_write_cmos_sensor(0x24, 0x68); //0x68,0x5e(0x62) 68 78 88
OV7675_write_cmos_sensor(0x25, 0x58); //0x54(0x58) 58 68 78
OV7675_write_cmos_sensor(0x26, 0xb2); //0x84
0x25 要比0x24小,并且0x26的值要大于88;
//Edge + Denoise
OV7675_write_cmos_sensor(0x41, 0x38);
OV7675_write_cmos_sensor(0x75, 0x64); //0x64 65 66 67
OV7675_write_cmos_sensor(0x76, 0xe0);
OV7675_write_cmos_sensor(0x77, 0x01);
上面的寄存器是锐化处理;0x75是锐化处理(但是会增大噪点),0x77是模糊处理
OV7675_write_cmos_sensor(0x11, 0x03);capture里面适当减小帧率;
OV7675_write_cmos_sensor(0x13, 0xF7); // Turn ON AEC/AGC/AWB, no need to do this for mt6253 and mt6268, for no changing clock in capture
Gamma值可以调节对比度
6. m100,白平衡失效
kal_uint32 set_GC0307_param_effect(kal_uint32 para)
{
kal_uint32 ret = KAL_TRUE;
kal_uint8 tmp_0x47,tmp_0x41_bit2;
tmp_0x41_bit2=read_cmos_sensor(0x41)&0x04;
tmp_0x47=read_cmos_sensor(0x47);
kal_prompt_trace(MOD_MED,"$$$effect_start 0x47=%x",read_cmos_sensor(0x47));
switch (para)
{
case CAM_EFFECT_ENC_NORMAL:
write_cmos_sensor(0x41,0x2f&tmp_0x41_bit2);
7.A1_OV7670 预览屏幕下方有一条绿线解决方法:
image_window->exposure_window_width=IMAGE_SENSOR_VGA_WIDTH-20/*-20*/;
image_window->exposure_window_height=IMAGE_SENSOR_VGA_HEIGHT-20/*-20*/;
8. F12反馈拍照保存好后,按返回键时出现死机现象,现场确认情况如下:
客户机器的软件版本是:F12_YKST_B_07S0624,
1、 在光线强的地方进行测试拍照保存好后,按返回键时不会出现死机现象,
2、 在光线弱的地方或者背光的地方测试拍照保存后,按返回键时全部都会出现死机现象,
解决方法:
void HI704_Capture(image_sensor_exposure_window_struct *Image_Window, image_sensor_config_struct *Sensor_Config_Data)
{
。。。。。。。。。。。。。
else if (Image_Window->image_target_width == IMAGE_SENSOR_VGA_WIDTH &&
Image_Window->image_target_height == IMAGE_SENSOR_VGA_HEIGHT)
{
SET_TG_OUTPUT_CLK_DIVIDER(1);
SET_CMOS_RISING_EDGE(0);
SET_CMOS_FALLING_EDGE(1);
SET_TG_PIXEL_CLK_DIVIDER(3);
SET_CMOS_DATA_LATCH(2); //这个是mtk写的bb的分屏
//new add
CHANGE_TO_PAGE(0x00);
iTemp = read_cmos_sensor(0x12) & 0xF4;
write_cmos_sensor(0x12, iTemp | 0x02); // 01 //这个是ic的分屏,二者需要匹配,可以改小一点。
9.手机五连拍设置,当拍摄的照片多了之后,会出现图片变色的现象
1这个基本是曝光时间短造成的
2把连拍的时间间隔调大一点试一试。
3查查SENSOR的CAPTURE函数有没有一些参数会累加的。 如每次都二分频等。
10.[F100]补充,
1.背光亮度不够
2.照相亮度不够 //改曝光
3.(照片大小1280*960) 照出来的特别亮、发白。改一下,并用这个分辨率做默认拍照设置
void GC0309_capture(image_sensor_exposure_window_struct *image_window, image_sensor_config_struct *sensor_config_data)
{
。。。。。。。。。。。。
else
{
if ((image_window->image_target_width==GC0309_IMAGE_SENSOR_1M_WIDTH)&&
(image_window->image_target_height==GC0309_IMAGE_SENSOR_1M_HEIGHT))
{
#if 0 //这一段注释掉 改变了shutter
SET_TG_OUTPUT_CLK_DIVIDER(7);
SET_CMOS_RISING_EDGE(0);
SET_CMOS_FALLING_EDGE(5);
ENABLE_CAMERA_PIXEL_CLKIN_ENABLE;
SET_TG_PIXEL_CLK_DIVIDER(7);
SET_CMOS_DATA_LATCH(5);
shutter= GC0309_read_shutter();
shutter = shutter/4;
GC0309_write_shutter(shutter);
#endif
}
else
}
11.一般概率性的问题大都和延时相关:
如概率性白屏问题
可归结为硬件问题与软件问题:
硬件问题:
1)屏本身已经坏了
2)FPC接触不良或者屏焊接不良也可能造成白屏
3)PN硬件接线是否正确(跟屏的规格一致),/RD,/WR,/CS,D/C连接异常
软件问题:
1)平台timing与LCD driver Ic timing不匹配导致initial不成功,需调整平台 timing
2)LCD reset延时不够导致复位不成功,需增加reset延时
3)Write command与write parameter错误
软件问题可以采取如下方法调试:
1.如果大小屏共用,不要在小屏初始化里面加入复位代码,否则会白屏
2.如果是退出睡眠白屏,可以调用初始化代码,调用两次试试;
3.在屏上电与复位之前增加延时,确保复位信号有效,;
4.采用置换法,换成ILI9325的屏,就没出现白屏,因此断定是ILI9342的屏有问题;
5.加宽读写时序,尽可能增加RESET低电平时间
6.初始化代码POWER ON部分前后延时加长并且在POEWER ON(0x0007)之前增加
LCD_CtrlWrite_ILI9325(0x0010, 0x0080);
LCD_CtrlWrite_ILI9325(0x0011, 0x0000);
LCD_CtrlWrite_ILI9325(0x0012, 0x0000);
LCD_CtrlWrite_ILI9325(0x0013, 0x0000);
这段,保证初始化IC 放电完全
7.确认正常的 9325的屏和白屏的9342的屏工作时候耗流有没有区别
8.修改init_lcd_interface()是时序的问题,把/RD,/WR的时序修改,这种可能性最大
SET_LCD_PARALLEL_CE2WR_SETUP_TIME((kal_uint32)2);///1
SET_LCD_PARALLEL_CE2WR_HOLD_TIME(2);///1
SET_LCD_PARALLEL_CE2RD_SETUP_TIME(2);///
SET_LCD_PARALLEL_WRITE_WAIT_STATE(8);///
SET_LCD_PARALLEL_READ_LATENCY_TIME(31);///10
SET_LCD_ROI_CTRL_CMD_LATENCY(4);///4