RK3288获取摄像头的Sensor ID【原创】

本文介绍了在RK3288平台上,如何通过Linux3.0.68内核和Android6.0系统,利用I2C总线获取摄像头Sensor ID的步骤。作者提供了查看规格书确定寄存器地址、应用层编程模型的详细代码以及Android.mk配置,最终成功读取到Sensor ID。
摘要由CSDN通过智能技术生成

平台信息:
内核: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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式小庄老师

要是觉得不错,就给我点支持吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值