平台信息:
内核:linux3.0.68
系统:android/android6.0
平台:RK3288
作者:庄泽彬(欢迎转载,请注明作者)
邮箱:2760715357@qq.com
说明:通过I2C总线获取摄像头的ID号。
一、查看规格书,确定摄像头存放ID号的寄存器地址.
二、应用层通过I2C总线的编程模型获取摄像头的Sensor ID.详细的代码如下:
camera.cpp
1 #include <sys/types.h>
2 #include <sys/stat.h>
3 #include <fcntl.h>
4 #include <stdlib.h>
5 #include <stdio.h>
6 #include <fcntl.h> /* Definition of AT_* constants */
7 #include <unistd.h>
8
9 #include <stdio.h>
10 #include <stdlib.h>
11 #include <string.h>
12 #include <unistd.h>
13 #include <time.h>
14 #include <fcntl.h>
15 #include <dlfcn.h>
16 #include <sys/ioctl.h>
17 #include <sys/mman.h>
18 #include <sys/stat.h>
19
20 #include <sys/types.h>
21 #include <sys/stat.h>
22 #include <sys/file.h>
23 #include <string.h>
24 #include <pthread.h>
25 //#include <linux/videodev.h>
26 #include <sys/ioctl.h>
27 #include <sys/mman.h>
28 #include <errno.h>
29 #include <fcntl.h>
30 #include <time.h>
31 #include <sys/time.h>
32 #include <signal.h>
33 //#include <linux/ion.h>
34 //#include "ion.h"
35 #include "../../system/core/libion/kernel-headers/linux/rockchip_ion.h"
36 //#include <linux/android_pmem.h>
37 #include <linux/videodev2.h>
38 #include <linux/fb.h>
39 #include <linux/version.h>
40
41 #include "camsys_head.h"
42
43 #define CAMSYS_DEVNAME "/dev/camsys_marvin"
44
45
46
47 static int camsys_fd = -1;
48
49 //hkw add;
50 int extdev_register()
51 {
52 int err = 0;
53 int numLane = 2;
54 camsys_devio_name_t extdev;
55
56 extdev.dev_id = CAMSYS_DEVID_SENSOR_1B;
57 strlcpy((char*)extdev.avdd.name, "NC",sizeof(extdev.avdd.name));
58 extdev.avdd.min_uv = 0;
59 extdev.avdd.max_uv = 0;
60 strlcpy((char*)extdev.dovdd.name,"NC",sizeof(extdev.dovdd.name));
61 extdev.dovdd.min_uv = 18000000;
62 extdev.dovdd.max_uv = 18000000;
63 strlcpy((char*)extdev.dvdd.name, "NC",sizeof(extdev.dvdd.name));
64 strlcpy((char*)extdev.afvdd.name, "NC",sizeof(extdev.afvdd.name));
65 strlcpy((char*)extdev.pwrdn.name, "RK30_PIN2_PB7",sizeof(extdev.pwrdn.name));
66 extdev.pwrdn.active = 0x00;
67 strlcpy((char*)extdev.pwren.name, "RK30_PIN0_PC1",sizeof(extdev.pwren.name));
68 extdev.pwren.active = 0x01;
69 strlcpy((char*)extdev.rst.name,"RK30_PIN2_PB5",sizeof(extdev.rst.name));
70 extdev.rst.active = 0x0;
71 strlcpy((char*)extdev.afpwrdn.name,"NC",sizeof(extdev.afpwrdn.name));
72 strlcpy((char*)extdev.afpwr.name,"NC",sizeof(extdev.afpwr.name));
73 extdev.phy.type = CamSys_Phy_Mipi;
74 //extdev.phy.info.mipi.phy_index = 1; //MIPI_PHY_INDEX;
75 extdev.phy.info.mipi.data_en_bit = 0x01; //?
76
77 /*if (numLane == 1) {
78 extdev.phy.info.mipi.data_en_bit = 0x01;
79 extdev.phy.info.mipi.bit_rate = 656;
80 } else if (numLane == 2) {
81 extdev.phy.info.mipi.data_en_bit = 0x03;
82 extdev.phy.info.mipi.bit_rate = 328;
83 } else if (numLane == 4) {
84 extdev.phy.info.mipi.data_en_bit = 0x0f;
85 extdev.phy.info.mipi.bit_rate = 408;
86 }*/
87 extdev.clk.in_rate = 24000000;
88
89 printf("----CAMSYS_REGISTER_DEVIO----\n