Firefly开源社区

123
发表新贴
打印 上一主题 下一主题

[Linux] debian 尝试使用ov13850摄像头

54

积分

0

威望

0

贡献

技术小白

积分
54

debian 尝试使用ov13850摄像头

发表于 2018-5-30 21:45:57      浏览:43831 | 回复:23        打印      只看该作者   [复制链接] 楼主
首先修改dts文件 rk3399-firefly-linux.dts
  1. &cif_isp0 {
  2.         rockchip,camera-modules-attached = <&camera0>;
  3.         rockchip,gpios-cifpower = <&gpio1 22 GPIO_ACTIVE_HIGH>;

  4.         status = "okay";
  5. };
复制代码
  1. camera0: camera-module@20 {
  2.                 status = "okay";
  3.                 compatible = "omnivision,ov13850-v4l2-i2c-subdev";
  4.                 reg = < 0x20 >;
  5.                 device_type = "v4l2-i2c-subdev";

  6.                 clocks = <&cru SCLK_CIF_OUT>;
  7.                 clock-names = "clk_cif_out";

  8.                 pinctrl-names = "rockchip,camera_default", "rockchip,camera_sleep";
  9.                 pinctrl-0 = <&cam0_default_pins>;
  10.                 pinctrl-1 = <&cam0_sleep_pins>;

  11.                 /*GPIO2  B4 = 12 B6 = 14 MIPI0 D4 = 28 C7 = 23 */
  12.                 rockchip,pwr-gpio = <&gpio1 23 GPIO_ACTIVE_HIGH>;        /*Power                        GPIO1_C7 */
  13.                 rockchip,pd-gpio  = <&gpio2 12 GPIO_ACTIVE_LOW>;        /*Power Down        GPIO2_B4 */
  14.                 rockchip,rst-gpio = <&gpio0 8 GPIO_ACTIVE_LOW>;                /*Reset                        GPIO0_B0 */
  15.                
  16.                 rockchip,camera-module-mclk-name = "clk_cif_out";
  17.                 rockchip,camera-module-facing = "back";
  18.                 rockchip,camera-module-name = "cmk-cb0695-fv1";
  19.                 rockchip,camera-module-len-name = "lg9569a2";
  20.                 rockchip,camera-module-fov-h = "66.0";
  21.                 rockchip,camera-module-fov-v = "50.1";
  22.                 rockchip,camera-module-orientation = <0>;
  23.                 rockchip,camera-module-iq-flip = <0>;
  24.                 rockchip,camera-module-iq-mirror = <0>;
  25.                 rockchip,camera-module-flip = <0>;
  26.                 rockchip,camera-module-mirror = <0>;

  27.                 rockchip,camera-module-defrect0 = <1920 1080 0 0 1920 1080>;
  28.                 rockchip,camera-module-defrect1 = <2112 1568 0 0 2112 1568>;
  29.                 rockchip,camera-module-defrect2 = <4224 3136 0 0 4224 3136>;
  30.                 rockchip,camera-module-defrect3 = <3264 2448 0 0 3264 2448>;

  31.                 rockchip,camera-module-flash-support = <0>;                        /*闪光灯控制开关*/
  32.                 rockchip,camera-module-mipi-dphy-index = <0>;                /*MIPI 接口索引*/
  33.         };
复制代码

修改 cif_isp10_pltfrm.c 文件 加入 cifpower 设定.
  1. void init_cif_power(struct device *dev)
  2. {
  3.         enum of_gpio_flags flags;
  4.         int cifpower_io;
  5.         int io_ret;
  6.        
  7.     cifpower_io = of_get_named_gpio_flags(dev->of_node, "rockchip,gpios-cifpower", 0, &flags);
  8.     cif_isp10_pltfrm_pr_info(dev,"1-gpios-cifpower: gpio=%d", cifpower_io);
  9.     if(gpio_is_valid(cifpower_io)) {
  10.         cifpower_io = of_get_named_gpio_flags(dev->of_node, "rockchip,gpios-cifpower", 0, &flags);
  11.         cif_isp10_pltfrm_pr_info(dev,"gpios-cifpower: gpio_request");
  12.         io_ret = gpio_request(cifpower_io,"cifpower");
  13.         cif_isp10_pltfrm_pr_info(dev,"1-gpios-cifpower: gpio_request=%d", io_ret);
  14.         if(io_ret < 0){
  15.             cif_isp10_pltfrm_pr_err(dev,"Request %s(%d) failed","cifpower", cifpower_io);
  16.         } else {
  17.             gpio_direction_output(cifpower_io, 1);
  18.             gpio_set_value(cifpower_io, 1);
  19.             cif_isp10_pltfrm_pr_info(dev,"gpios-cifpower: %d high", cifpower_io);
  20.         }
  21.     }
  22.         return;
  23. }
复制代码

在 cif_isp10_pltfrm_dev_init 函数中调用上面的函数.
然后重新编译并替换内核.
启动后查看启动信息如下:

  1. [    0.252170] iommu: Adding device ff910000.cif_isp to group 4
  2. [    0.252723] platform ff910000.cif_isp: iommu /iommu@ff914000 not found
  3. [    0.253310] iommu: Removing device ff910000.cif_isp from group 4
  4. [    1.975010] cif_isp10_v4l2_drv_probe: probing...
  5. [    1.975541] cif_isp10_pltfrm_dev_init(1249) ERR: could not get default pinstate
  6. [    1.976623] cif_isp10_pltfrm_dev_init WARN: could not get pins_sleep pinstate
  7. [    1.977252] cif_isp10_pltfrm_dev_init WARN: could not get pins_inactive pinstate
  8. [    1.977941] of_get_named_gpiod_flags: parsed 'rockchip,gpios-cifpower' property of node '/cif_isp@ff910000[0]' - status (0)
  9. [    1.977947] init_cif_power: 1-gpios-cifpower: gpio=54
  10. [    1.978425] of_get_named_gpiod_flags: parsed 'rockchip,gpios-cifpower' property of node '/cif_isp@ff910000[0]' - status (0)
  11. [    1.978454] init_cif_power: gpios-cifpower: gpio_request
  12. [    1.978939] init_cif_power: 1-gpios-cifpower: gpio_request=0
  13. [    1.979484] init_cif_power: gpios-cifpower: 54 high
  14. [    1.980060] iommu: Adding device ff910000.cif_isp to group 4
  15. [    1.980603] rkisp10 ff910000.cif_isp: Possibly a virtual device
  16. [    2.008084] cif_isp10_img_src_v4l2_i2c_subdev_to_img_src(59) ERR: failed with error -6
  17. [    2.008087] cif_isp10_img_src_to_img_src(70) ERR: to_img_src failed!
  18. [    2.008090] cif_isp10_img_src_to_img_src(78) ERR: failed with error -14
  19. [    2.008096] cif_isp10_img_srcs_init(1099) ERR: failed with error -14
  20. [    2.008099] cif_isp10_create(5772) ERR: cif_isp10_img_srcs_init failed
  21. [    2.008101] cif_isp10_create(5808) ERR: failed with error -14
复制代码


  1. linaro@linaro-alip:~$ dmesg | grep camera
  2. [    1.981743] of_get_named_gpiod_flags: parsed 'rockchip,pd-gpio' property of node '/i2c@ff110000/camera-module@20[0]' - status (0)
  3. [    1.981767] of_get_named_gpiod_flags: parsed 'rockchip,pwr-gpio' property of node '/i2c@ff110000/camera-module@20[0]' - status (0)
  4. [    1.981777] of_get_named_gpiod_flags: can't parse 'rockchip,flash-gpio' property of node '/i2c@ff110000/camera-module@20[0]'
  5. [    1.981787] of_get_named_gpiod_flags: can't parse 'rockchip,torch-gpio' property of node '/i2c@ff110000/camera-module@20[0]'
  6. [    1.981808] of_get_named_gpiod_flags: parsed 'rockchip,rst-gpio' property of node '/i2c@ff110000/camera-module@20[0]' - status (0)
  7. [    2.007420] ov13850.ov_camera_module_write_config(182) ERR: no active sensor configuration
  8. [    2.007421] ov13850.ov_camera_module_write_config(233) ERR: failed with error -14
  9. [    2.007725] ov13850.pltfrm_camera_module_read_reg(996) ERR: i2c read from offset 0x0000300a failed with error -6
  10. [    2.007888] ov13850.pltfrm_camera_module_read_reg(996) ERR: i2c read from offset 0x0000300b failed with error -6
  11. [    2.007893] ov13850.ov13850_check_camera_id(1820) ERR: register read failed, camera module powered off?
  12. [    2.007898] ov13850.ov13850_check_camera_id(1838) ERR: failed with error (-6)
  13. [    2.007945] ov13850.ov_camera_module_attach(256) ERR: failed with error -6
复制代码



i2c 通信并没有起来,希望大神能提供帮助.

回复

使用道具 举报

54

积分

0

威望

0

贡献

技术小白

积分
54
发表于 2018-6-1 02:31:19        只看该作者  沙发
阅读了一次原理图dts 修改后如下:

  1. // MIPI-CIF 位于主板正面外侧, (引脚参考原理图 J22)
  2.         camera0: camera-module@20 {
  3.                 status = "okay";
  4.                 compatible = "omnivision,ov13850-v4l2-i2c-subdev";
  5.                 reg = < 0x20 >;
  6.                 device_type = "v4l2-i2c-subdev";

  7.                 clocks = <&cru SCLK_CIF_OUT>;
  8.                 clock-names = "clk_cif_out";
  9.                 rockchip,camera-module-mclk-name = "clk_cif_out";
  10.                 rockchip,camera-module-dovdd = "1.8v";
  11.                

  12.                 pinctrl-names = "rockchip,camera_default", "rockchip,camera_sleep";
  13.                 pinctrl-0 = <&cam0_default_pins>;
  14.                 pinctrl-1 = <&cam0_sleep_pins>;

  15.                 /*GPIO2  B4 = 12 B6 = 14 MIPI0 D4 = 27 C7 = 23 */
  16.                 rockchip,pwr-gpio = <&gpio1 23 GPIO_ACTIVE_HIGH>;        /*Power                        GPIO1_C7 */
  17.                 rockchip,pd-gpio  = <&gpio2 12 GPIO_ACTIVE_LOW>;        /*Power Down        GPIO2_B4  OR GPIO2_D4 */

  18.                 // rst 硬件上拉 无需配置
  19.                 //rockchip,rst-gpio = <&gpio0 8 GPIO_ACTIVE_LOW>;                /*Reset                        GPIO0_B0 */
  20.                
  21.                 rockchip,camera-module-facing = "back";
  22.                 rockchip,camera-module-name = "cmk-cb0695-fv1";
  23.                 rockchip,camera-module-len-name = "lg9569a2";
  24.                 rockchip,camera-module-fov-h = "66.0";
  25.                 rockchip,camera-module-fov-v = "50.1";
  26.                 rockchip,camera-module-orientation = <0>;
  27.                 rockchip,camera-module-iq-flip = <0>;
  28.                 rockchip,camera-module-iq-mirror = <0>;
  29.                 rockchip,camera-module-flip = <0>;
  30.                 rockchip,camera-module-mirror = <0>;

  31.                 rockchip,camera-module-defrect0 = <3264 2448 0 0 3264 2448>;

  32.                 rockchip,camera-module-flash-support = <0>;                        /*闪光灯控制开关*/
  33.                 rockchip,camera-module-mipi-dphy-index = <0>;                /*MIPI 接口索引*/
  34.         };
复制代码
  1. &cif_isp0 {
  2.         rockchip,camera-modules-attached = <&camera0>;
  3.         rockchip,gpios-cifpower = <&gpio1 22 GPIO_ACTIVE_HIGH>;

  4.         status = "okay";
  5. };


  6. &isp0_mmu {
  7.     status = "okay";
  8. };
复制代码

但还是不行,请大神们指点下.
回复

使用道具 举报

54

积分

0

威望

0

贡献

技术小白

积分
54
发表于 2018-6-4 08:14:22        只看该作者  板凳
I2C SLAVE 地址修改位 0x10 工作良好

点评

为什么I2C SLAVE地址要修改成0x10呢  发表于 2019-2-18 11:06
回复

使用道具 举报

137

积分

0

威望

0

贡献

技术小白

积分
137
发表于 2018-6-13 10:39:33        只看该作者  地板
楼主很厉害,不知道有没有尝试过两路MIPI同时使用摄像头
回复

使用道具 举报

54

积分

0

威望

0

贡献

技术小白

积分
54
发表于 2018-6-15 21:49:59        只看该作者  5#
暂时没有尝试过.
回复

使用道具 举报

87

积分

0

威望

0

贡献

技术小白

积分
87
发表于 2018-6-21 10:11:12        只看该作者  6#
按照楼主20180601的配置,I2C SLAVE 地址修改位 0x10,mipi摄像头接到 J22就可以工作了么
回复

使用道具 举报

25

积分

0

威望

0

贡献

游客

积分
25
发表于 2018-6-22 09:56:12        只看该作者  7#
RICHYDUAN 发表于 2018-6-21 10:11
按照楼主20180601的配置,I2C SLAVE 地址修改位 0x10,mipi摄像头接到 J22就可以工作了么

修改了一下,内核无限重启了。。。
回复

使用道具 举报

87

积分

0

威望

0

贡献

技术小白

积分
87
发表于 2018-6-22 13:34:37        只看该作者  8#
楼主,参照你的配置,J22这个摄像头i2c可以通信了,但现在的问题是,如果要把摄像头接到J24,I2C SLAVE 地址改成0x6C不能通信,另一路摄像头I2C SLAVE地址应该改成多少呢
回复

使用道具 举报

54

积分

0

威望

0

贡献

技术小白

积分
54
发表于 2018-6-27 15:59:58        只看该作者  9#
RICHYDUAN 发表于 2018-6-22 13:34
楼主,参照你的配置,J22这个摄像头i2c可以通信了,但现在的问题是,如果要把摄像头接到J24,I2C SLAVE 地 ...

我也没试过。
回复

使用道具 举报

87

积分

0

威望

0

贡献

技术小白

积分
87
发表于 2018-6-29 09:25:01        只看该作者  10#
楼主,想确认一下,J24的rockchip pd-gpio,也就是 GPIO2  D4 应该配置成27还是28?
回复

使用道具 举报

返回列表
123
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表