android camera摄像头驱动 - 图文 下载本文

3. .default_width = 640, 4. .default_height = 480,

5. .pixelformat = V4L2_PIX_FMT_UYVY, // .freq = 24000000, 6. .is_mipi = 0, 7. }; 8.

9. static struct i2c_board_info GT2005_i2c_info = { 10. I2C_BOARD_INFO(\, 0x78 >> 1), //1、IIC地址 11. .platform_data = >2005_plat, 12. }; 13.

14. static struct s3c_platform_camera GT2005 = { 15. #ifdef CAM_ITU_CH_A

16. .id = CAMERA_PAR_A, 17. #else

18. .id = CAMERA_PAR_B, 19. #endif

20. .type = CAM_TYPE_ITU, //2、数据接口选择(ITU\\MIPI等) 21. .fmt = ITU_601_YCBCR422_8BIT,

22. .order422 = CAM_ORDER422_8BIT_CBYCRY, //3、图像数据格式 23.

24. .i2c_busnum = 1,

25. .info = >2005_i2c_info,

26. .pixelformat = V4L2_PIX_FMT_UYVY,

27. .srclk_name = \, //4、这部分关系到时钟 28. .clk_name = \,

29. .clk_rate = 24000000, /* 24MHz */ 30. .line_length = 640, /* 640*480 */ 31. /* default resol for preview kind of thing */ 32. .width = 640, 33. .height = 480, 34. .window = { 35. .left = 16, 36. .top = 0,

37. .width = (640 - 16), 38. .height = 480, 39. }, 40.

41. /* Polarity */ //5、信号的极

性, .inv_pclk = 0, 42. .inv_vsync = 1, 43. .inv_href = 0, 44. .inv_hsync = 1, 45.

46. .initialized = 0,

47. .cam_power=set_cam2005_main_power 48. }; 49. #endif

注意下面几个参数: (1)、IIC地址

(2)、数据接口选择(ITU\\MIPI等),这几个数据接口我们在前面提到过; (3)、图像数据格式,这就是我们前面提到的YVU\\UVY之类不同的数据顺序; (4)、这部分关系到时钟;

(5)、输出信号的极性,就是我们PCLK、VSYNC、HSVNC这些信号的极性,不正确时会没有图像之类现象,这个也要注意了。

完成这一步确认IIC通信是否正常,如下图所抓到波形:

3、完成上面两步,摄像头基本配置完成,我们确认下输出端PCLK、VHSN、SVSN、D1-D7

二、摄像头调试过程中常遇到的问题

1、录相在预览时正常,播放录像时花屏(程序解释为三星s5pv210/s5pv310是的,其它的可以参考,找相应代码)

原因分析:

(1)录相用fimc2,

在android/device/samsung/proprietary/libcamera/SecCamera.cpp中 int SecCamera::startRecord(void)

[cpp] view plaincopy

1. m_cam_fd_rec = open(CAMERA_DEV_NAME2, O_RDWR); 2.

3. vendor\\sec\\sec_proprietary\\smdkc110\\libcamera\\SecCamera.h 4. #define CAMERA_DEV_NAME2 \

(2)所用的视频格式,在

android/device/samsung/proprietary/libcamera/SecCameraHWInterface.cpp中 void CameraHardwareSec::m_initDefaultParameters(int camera_id)

[cpp] view plaincopy

1. int default_preview_pixel_format = mSecCamera->getPreviewDefaultPixelFormat

();

2. switch (default_preview_pixel_format) { 3. default:

4. case V4L2_PIX_FMT_NV21:

5. p.setPreviewFormat(CameraParameters::PIXEL_FORMAT_YUV420SP); 6. break;

7. case V4L2_PIX_FMT_NV12T: