rv1126 A191模组IRCUT介绍

rv1126 A191模组IRCUT介绍 2023-12-21 18:32:56 1288

1 IRCUT由来

自然界中存在各种波长的光线,人眼识别的光线波长范围在320nm-760nm之间,超过这个范围的光线人眼就无法识别,但是摄像机的成像元器件CCD或者CMOS可以识别到绝大多数波长的光线,由于各种光线的参与,摄像机所还原的颜色就会跟肉眼所见的颜色在色彩上存在偏差。

比如:白天日光光照中含有大量的红外线,这些红外线不进行处理的情况下就会被成像元器件识别并采集成像,导致成像的图像偏红色,这个时候就需要对红外线进行过滤,而夜晚摄像机如果配备红外补光灯的话,此时就不能过滤红外光线,而应该保留所有光线。这就需要IRCUT的处理。

2 IRCUT组成及原理

IRCUT双滤光片切换器由一个红外截止低通滤光片(一片红外截止或吸收滤光片)、一个全光谱光学玻璃(一片全透光谱滤光片)、动力结构(可以是电磁、电机或其他动力源)以及外壳组成,它通过一块电路控制板来进行切换、定位。当白天的光线充足时,电路控制板驱使切换器切换并定位到红外截止滤光片工作,CCD或CMOS还原出真实色彩;当夜间可见光不足时,红外截止滤光片自动移开,全光谱光学玻璃开始工作,这时,它能感应红外灯的红外光,使CCD或CMOS充分利用到所有光线,从而大大提高了红外摄像机的夜视性能,整个画面也就清晰自然了。

3 A191模组IRCUT引脚配置

基于rv1126主控的A191模组上IRCUT内核设备树中引脚配置如下:

cam_ircut0: cam_ircut {
        compatible = "rockchip,ircut";
        status = "okay";
        ircut-open-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_HIGH>;
        ircut-close-gpios = <&gpio3 RK_PB1 GPIO_ACTIVE_HIGH>;
        //ircut-open-gpios = <&gpio3 RK_PB1 GPIO_ACTIVE_HIGH>;
        //ircut-close-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_HIGH>;
        pinctrl-names = "default";
        pinctrl-0 = <&ircut_pins>;
        rockchip,camera-module-index = <1>;
        rockchip,camera-module-facing = "front";
};

4 A191模组IRCUT控制方式

一般有两种控制方式:第一种,通过v4l2-ctl进行控制;第二种,直接通过操作gpio进行控制。当然,虽然有两种控制方式,但是,一般情况下v4l2默认开机就会占用那两个引脚,这个时候直接用v4l2的命令进行控制。

4.1通过v4l2-ctl控制IRCUT切换

查看IRCUT设备节点,命令及信息如下:

[root@RV1126_RV1109:~]# grep '' /sys/class/video4linux/v*/name
/sys/class/video4linux/v4l-subdev0/name:rkispp-subdev
/sys/class/video4linux/v4l-subdev1/name:rockchip-mipi-csi2
/sys/class/video4linux/v4l-subdev2/name:rockchip-mipi-dphy-rx
/sys/class/video4linux/v4l-subdev3/name:m01_f_imx415 1-001a
/sys/class/video4linux/v4l-subdev4/name:m01_f_ircut
/sys/class/video4linux/v4l-subdev5/name:rkisp-isp-subdev
/sys/class/video4linux/v4l-subdev6/name:rkisp-csi-subdev
/sys/class/video4linux/v4l-subdev7/name:rkcif_mipi_lvds
/sys/class/video4linux/video0/name:stream_cif_mipi_id0
/sys/class/video4linux/video1/name:stream_cif_mipi_id1
/sys/class/video4linux/video10/name:rkisp_rawwr3
/sys/class/video4linux/video11/name:rkisp_rawrd0_m
/sys/class/video4linux/video12/name:rkisp_rawrd2_s
/sys/class/video4linux/video13/name:rkisp_rawrd1_l
/sys/class/video4linux/video14/name:rkisp-statistics
...
...

可以看出ircut的节点为v4l-subdev4,所以控制IRCUT的命令为:

打开命令:

v4l2-ctl -d /dev/v4l-subdev4 --set-ctrl 'band_stop_filter=1'

关闭命令:

v4l2-ctl -d /dev/v4l-subdev4 --set-ctrl 'band_stop_filter=0'

获取当前值命令:

v4l2-ctl -d /dev/v4l-subdev4 --get-ctrl band_stop_filter

查询可用值命令:

[root@RV1126_RV1109:~]# v4l2-ctl -d /dev/v4l-subdev4 --list-ctrls
User Controls
               band_stop_filter 0x00980921 (int)    : min=0 max=4 step=1 default=1 value=3
[root@RV1126_RV1109:~]#

4.2通过gpio控制IRCUT切换

操作之前,先根据设备树里面的配置,计算gpio引脚号。

GPIOXYZ引脚号计算公式:

引脚号 = X * 32 + ( Y - A ) * 8 + Z

所以引脚号为:

open------GPIO3B0--------104
close------GPIO3B1--------105

1.进入gpio目录

cd /sys/class/gpio
echo 104 > export
echo 105 > export

2.把gpio104和gpio105设置为输出

echo out > gpio104/direction
echo out > gpio105/direction

3.把引脚设置为高或低电平来进行IRCUT切换(两个引脚必须一高一低)

打开命令:

echo 1 > gpio104/value
echo 0 > gpio105/value

关闭命令:

echo 0 > gpio104/value
echo 1 > gpio105/value

如果提示 Device or resource busy,那就是引脚已经被占用,可以直接用v4l2命令去控制。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 3 2 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区