查看: 28413|回复: 3
收起左侧

摄像头预览竖条纹调试分析!

[复制链接]
发表于 2015-8-19 10:15:58 | 显示全部楼层 |阅读模式
摄像头预览竖条纹调试分析!
, G% U) Q$ Y5 K2 |& Q3 l) S  fantasyhujian4 a: \8 b" N/ F) a# j
4 X) B2 k; B- {' h, J) _9 r
6 N/ c# E5 [/ M2 k

        前些天在展讯6825C 上调试gc2115摄像头,发现后摄显示效果非常的差,出现很严重的整个预览界面竖条纹现象,但是对光线变化还是有反应的,初步判断是sensor上电不对!后来经过测量各个管脚的电压,发现是PowerDown脚的电压不正常,导致切换摄像头失败,最后还是修改AVDD电压算是解决了!过程甚是纠结!

) {. e) r) D) x" `+ n+ F


  C" H& d2 T: ~1 ~# `" [: I+ O


# m6 Q. m- C$ m1 @: C; e+ Q! I- G3 g0 O. y: _

     一般sensor上电分为AVDD模拟电压,DVDD数字电压,IOVDDIo口电压,这三个电压必须设置正确才能正常的打开摄像头,新ic兼容需要配置摄像头配置文件,并且在摄像头驱动文件中修改makefile,更改配置文件,编译新ic源码,整理完毕后,编译生成动态库,导入system/lib/hw,重启进入摄像头,发现显示不正常,调试算是正式开始了!

$ S7 h# o/ d2 `+ x

    首先是抓取打开摄像头时的log,发现是摄像头ic的i2c通信有时会失败,但是可以读取到对应的摄像头id,证明i2c通信至少是连通的,硬件上是可以通信的,只是某种原因导致了i2c通信会失败;接着是量取摄像头ic上主要的管脚的电压,切换摄像头发现本应该拉高的PowerDown管脚并没有拉高,这可能导致了切换摄像头时会概率性出现相机已停止的问题!

! O( G$ Y3 T9 ?5 m# U; s- W. j; R. V

   通过分析代码,发现切换摄像头时确实是通过GPIO操作PowerDown来实现切换,切换出现相机停止可能跟切换过程有关,而且代码里确实是这样写的:

" o0 y/ E, ^1 b2 @& Q7 s5 c

; W# `) j% Y3 P2 q9 R- ^! h& c1 I5 v3 M, ]4 D0 ~  \! Q
  • LOCAL int _Sensor_K_PowerDown(BOOLEANpower_level)  
  • {  
  •          SENSOR_PRINT("SENSOR:_Sensor_K_PowerDown -> main: power_down %d\n",  
  •                         power_level);  
  • /*  
  •          SENSOR_PRINT("SENSOR:_Sensor_K_PowerDown PIN_CTL_CCIRPD1-> 0x8C000344 0x%x\n",  
  •               _pard(PIN_CTL_CCIRPD1));  
  •          SENSOR_PRINT("SENSOR:_Sensor_K_PowerDown PIN_CTL_CCIRPD0-> 0x8C000348 0x%x\n",  
  •               _pard(PIN_CTL_CCIRPD0));  
  • */  
  •          switch(Sensor_K_GetCurId()) {  
  •          caseSENSOR_MAIN:  
  •                    {  
  •                             gpio_request(GPIO_MAIN_SENSOR_PWN,"main camera");  
  •                             if(0 == power_level) {  
  •                                      gpio_direction_output(GPIO_MAIN_SENSOR_PWN,0);  
  •    
  •                             }else {  
  •                                      gpio_direction_output(GPIO_MAIN_SENSOR_PWN,1);  
  •                             }  
  •                             gpio_free(GPIO_MAIN_SENSOR_PWN);  
  •                             break;  
  •                    }  
  •          caseSENSOR_SUB:  
  •                    {  
  •                             gpio_request(GPIO_SUB_SENSOR_PWN,"sub camera");  
  •                             if(0 == power_level) {  
  •                                      gpio_direction_output(GPIO_SUB_SENSOR_PWN,0);  
  •                             }else {  
  •                                      gpio_direction_output(GPIO_SUB_SENSOR_PWN,1);  
  •                             }  
  •                             gpio_free(GPIO_SUB_SENSOR_PWN);  
  •                             break;  
  •                    }  
  •          default:  
  •                    break;  
  •          }  
  •          returnSENSOR_K_SUCCESS;  
  • }  4 r  j( g: F* m# R# d  l+ E% x  c( Y

    6 I, X; ~8 H- b! r9 b( e

4 L$ _% s' V8 @  g, X3 Q- Q
- d! h: L* N& p# A9 v  Y
6 r' F9 |5 S4 j! w0 H

   切换过程代码不出现,那就是ic上电代码会不会出现问题导致上电ic出现异常,根据FAE提供的参考,将上电代码改成分步式上电,避免芯片突然上电概率性的断电保护!

; o3 x6 G! @  i5 z% l5 H7 V. w' f" h

2 x$ a; u& G2 e% B9 r% v
7 _% }1 g/ ~& p, R9 Q0 b
$ k: c/ W/ Z3 i8 ^

+ u5 ^" V. h# ]- r6 l
  • Sensor_SetVoltage(SENSOR_AVDD_CLOSED,SENSOR_AVDD_CLOSED,SENSOR_AVDD_CLOSED);         
  •           Sensor_PowerDown(power_down);  
  •           Sensor_SetVoltage(dvdd_val,SENSOR_AVDD_1800MV, SENSOR_AVDD_1200MV);  
  •             SENSOR_Sleep(80);  
  •           Sensor_SetVoltage(dvdd_val,SENSOR_AVDD_2500MV, SENSOR_AVDD_1500MV);  
  •             SENSOR_Sleep(80);  
  •           Sensor_SetVoltage(dvdd_val,SENSOR_AVDD_2800MV, SENSOR_AVDD_1800MV);  
  •             SENSOR_Sleep(80);  
  •            
  •           //Open Mclk in default frequency  
  •           Sensor_SetMCLK(12);  
  •           Sensor_PowerDown(!power_down);  
  • NSOR_Sleep(20);   
  •           Sensor_SetResetLevel((BOOLEAN)!reset_level);  
  •           SENSOR_Sleep(20);   
  •           Sensor_SetResetLevel((BOOLEAN)reset_level);  
  •           SENSOR_Sleep(60);   
  •           Sensor_SetResetLevel((BOOLEAN)!reset_level);  
  •           SENSOR_Sleep(20);  
    8 |' Q9 \. S4 \0 `7 r' J" C

! }' j/ L$ s4 T6 Y  M+ c) L6 P5 {4 ^4 }/ H+ |

       测试发现还是概率性的打不开前摄,而且后摄也还是花屏的,仔细看了gc2235的datasheet,发现AVDD工作电压是1.7V—3V,拉不高管脚电压可能时电压设置的不够高,修改后发现后摄终于正常显示了,而且切换到前摄发现也是可以进去了,只是发现还是会概率性的出现前摄相机已停止的现象,甚是奇怪,到现在还是没弄清楚这是为什么?


2 r2 l! O0 E( B* a) D

   以后有时间还是会继续关注这个相机概率性停止的问题---未完待续!!!

   


  s6 C6 G3 Y: ?6 z) x% x

版权声明:本文为博主原创文章,分享是一种美德!未经博主允许不得转载。


# o3 [# _4 h% D% Z3 v
发表于 2015-8-19 10:54:30 | 显示全部楼层
“AVDD工作电压是1.7V—3V,”  G! ~  r) {& |3 p; |: M- X
怪异的设置。非要做成单电源1.8V供电再内部升压?
7 _) L0 J. z/ U/ L# W- y这种现象也许是针对性的。
发表于 2015-11-30 14:26:01 | 显示全部楼层
AVDDD格科产品一般都为2.8V$ R9 i; z" O- `4 N5 V5 P
 楼主| 发表于 2015-12-3 08:11:05 | 显示全部楼层
essam 发表于 2015-11-30 14:26
) D1 D, H! L2 c3 S, }AVDDD格科产品一般都为2.8V

, h+ \2 M3 I' N0 V7 `; K摄像头芯片模拟电压是的一般是2.8V左右的。
高级模式
B Color Image Link Quote Code Smilies @朋友 |上传

本版积分规则

在线客服

客服电话

欢迎来电咨询

188-9985 8350

微信关注

手机APP程序:
扫码下载访问

微信公众平台:
摄像头之家公众号

微信小程序:
摄像头小程序

返回顶部

QQ|站点统计|小黑屋|手机版|Archiver|摄像头模组论坛网-摄像头方案网CCM99 ( 粤ICP备18155214号 )

Powered by Discuz! X3.4 Licensed© 2001-2013 Comsenz Inc.