admin 发表于 2013-11-27 17:35:31

GT2005摄像头调试过程

我们以GT2005为例,来讲述一个摄像头驱动的调试过程:摄像头主要参数:1、MCLK24MHz;2、PCLK48~52MHz~;3、电压 1.8V(1.5V)、2.8V;4、scl(IIC时钟)100KHz或者400KHz。
摄像头和主控的关系图,如下:http://my.csdn.net/uploads/201207/14/1342280000_5692.jpg

摄像头驱动比较简单,完成一面三大步就可以:摄像头的上电、时钟这些基本条件;IIC保证摄像头的初始化;摄像头工作后传回数据到主控。完成这三个步骤就完成了摄像头基本工作的调试。1、 摄像头的上电、时钟这些基本条件的实现电源部分,上电时对应规格书,确认上电时序;MCLK摄像头的主时钟是否提供,看下面是和电和规格书中的(1)、主意摄像头工作要两组电压:1.8V(1.5V)、2.8V还有MCLK

程序中对电源控制:我们在arch\arm\mach-smdkv310.c中,完成上面两个步骤的代码,(这一点不同平台也许有所不同,这里这是一个实例,这部分代码只是针对三星平台的)




提供MCLK代码如下

这时拿示波器抓到上电时的波形和MCLK24MHZ的时钟,信号就说明我们完成了这一步,其实在实际工作中,我们一般出问题的时候才会测这些数据,确认问题点。上电时序:
(1)、上电时序;(2)、MCLK如下所示。http://my.csdn.net/uploads/201207/14/1342280524_9463.jpg

2、 IIC和一些参数的配置


注意下面几个参数:(1)、IIC地址(2)、数据接口选择(ITU\MIPI等),这几个数据接口我们在前面提到过;(3)、图像数据格式 ,这就是我们前面提到的YVU\UVY之类不同的数据顺序;(4)、这部分关系到时钟;(5)、输出信号的极性,就是我们PCLK、VSYNC、HSVNC这些信号的极性,不正确时会没有图像之类现象,这个也要注意了。完成这一步确认IIC通信是否正常,如下图所抓到波形:http://my.csdn.net/uploads/201207/14/1342280638_2797.jpg
3、 完成上面两步,摄像头基本配置完成,我们确认下输出端PCLK、VHSN、SVSN、D1-D7

二、摄像头调试过程中常遇到的问题1、录相在预览时正常,播放录像时花屏(程序解释为三星s5pv210/s5pv310是的,其它的可以参考,找相应代码)
原因分析:
(1)录相用fimc2,在android/device/samsung/proprietary/libcamera/SecCamera.cpp中
int SecCamera::startRecord(void)










m_cam_fd_rec = open(CAMERA_DEV_NAME2, O_RDWR); vendor\sec\sec_proprietary\smdkc110\libcamera\SecCamera.h [*]#define CAMERA_DEV_NAME2      "/dev/video2"

(2)所用的视频格式,在
android/device/samsung/proprietary/libcamera/SecCameraHWInterface.cpp中void CameraHardwareSec::m_initDefaultParameters(int camera_id)







以上得出视频格式为V4L2_PIX_FMT_NV21。2、图像干扰问题,如下图所示
原因可能是:(1)、摄像头模组有问题,换一个摄像头试一下;(2)、数据线驱动能力不足,这个可以在摄像头寄存器里面改,问下摄像头模组FAE,看改那些地方;(3)、两个摄像头共用数据线时,不工作的摄像头会把工作的数据信号减弱;
(4)、PCB 走线太长,也会有干扰,不过我觉得这个可能性小,调试好就一款这样的的,模组厂FAE说的,不过他们模组本身也有问题,两方面因素都有吧:PCB(线过长)、模组打样也有问题。
3、YUV顺序不对:yuv顺序不对时,出现如下现象。
看下摄像头规格书,把相应寄存器的值改一下就可以了。如下以红框里是不同yuv顺序,找到改为相应的。http://my.csdn.net/uploads/201207/14/1342281279_5314.jpg
4、 预览方向不对(摄像头寄存器只能改以 180度为基数的,90度的就要在FIMC中改)想知道和比较明确说明翻转角度,最常用的就是写一个“F”,然后看预览里的是怎么转的。http://my.csdn.net/uploads/201207/14/1342281316_4096.jpg
上面有90度的翻转,因为这是FIMC中的寄存器,一般不会改这一部分的值。要不就在模组寄存器中改,要不就在上层。上面只是说明如何去确认图像翻转。看下GT2005关于翻转的寄存器吧:http://my.csdn.net/uploads/201207/14/1342281397_7261.JPG

5、 杂光,鬼影:其行业的专业术语统称为Flare,是指在拍摄光源或者强光物体时,边缘出现光影或出现一个完整物体的影子,而且这种现象只能减轻不能完全消失,原因是由于镜片的材质导致光线不但存在折射还存在反射,整机由于镜头面到保护镜片距离很大会更明显! http://my.csdn.net/uploads/201207/14/1342281446_6395.jpg




6、 常见问题相关





摄像头效果评测都有哪些?http://my.csdn.net/uploads/201207/14/1342281491_7337.jpg



以上以gt2005为例,说了一下摄像头驱动,和驱动中常见到的问题,如果上面的问题解决,摄像头点亮,说明在平台是运行是没问题的,小的问题和细节,要找模组厂的FAE过来协助解决,不过你想多研究一下的话,也可以,如果项目允许,就多看看,做到调试一个驱动,所有问题都了解,这样对工作经验、积累很重要的,希望对大家有用。

byronlin 发表于 2014-1-2 10:25:20

:lol...敘述的很清楚,學習了!

yulefangzong 发表于 2015-10-11 15:35:10

很VB,学习下
页: [1]
查看完整版本: GT2005摄像头调试过程