90款行业常用传感器单片机程序及资料【stm32,stc89c52,arduino适用】
链接:https://pan.baidu.com/s/1m3u8lcznkuxfn8nrolytta?pwd=c53f
========================================================
camera 使用
简介
aio-3399j 开发板分别带有两个 mipi,mipi 支持最高 4k 拍照,并支持 1080p 30fps 以上视频录制。此外,开发板还支持 usb 摄像头。
本文以 ov13850/ov5640 摄像头为例,讲解在该开发板上的配置过程。
-
接口效果图
dts 配置
isp0: isp@ff910000 { … status = "okay"; } isp1: isp@ff920000 { … status = "okay"; }
驱动说明
与摄像头相关的代码目录如下:
android: `- hardware/rockchip/camera/ |- camerahal // 摄像头的 hal 源码 `- siliconimage // isp 库,包括所有支持模组的驱动源码 `- isi/drv/ov13850 // ov13850 模组的驱动源码 `- calib/ov13850.xml // ov13850 模组的调校参数 `- device/rockchip/rk3399/ |- rk3399_firefly_aio_box | `- cam_board.xml // 摄像头的参数设置 kernel: |- kernel/drivers/media/video/rk_camsys // camsys 驱动源码 `- kernel/include/media/camsys_head.h
配置原理
设置摄像头相关的引脚和时钟,即可完成配置过程。
从以下摄像头接口原理图可知,需要配置的引脚有:af_vdd28
、dovdd18
、avdd28
、dvdd12
、pwdn1
、rst
和 mclk
。
-
mipi 接口
-
af_vdd28
可不做配置。 -
dovdd18
、avdd28
由dvp_pwr
控制,dvp_pwr
对应 rk3399 的gpio1_c1
:
-
dvdd12
由cif_power
引脚控制,cif_power
对应 rk3399 上的gpio1_a1
引脚:
-
mipi cif
:pwdn0(共用)、pwdn1、rst 对应 gpio1_c1、gpio1_a1、gpio0_b0 引脚:
在开发板中,除了 dvdd12 (cif_power)
要在 dts 中设置以外,其它引脚都是在 cam_board.xml
中设置。
配置步骤
配置 android
修改 device/rockchip/rk3399/$(target_product)/cam_board.xml
来注册摄像头:
<boardfile> <boardxmlversion version="v0.0xf.0"></boardxmlversion> <camdevie> <hardwareinfo> <sensor> <sensorname name="ov13850"/> <sensorlens name="50013a1"/> <sensordevid idname="camsys_devid_sensor_1b"/> <sensorhostdevid busnum="camsys_devid_marvin"/> <sensori2cbusnum busnum="1"/> <sensori2caddrbyte byte="2"/> <sensori2crate rate="100000"/> <sensoravdd name="nc" min="28000000" max="28000000" delay="0"/> <sensordvdd name="nc" min="12000000" max="12000000" delay="0"/> <sensordovdd name="nc" min="18000000" max="18000000" delay="5000"/> <sensormclk mclk="24000000" delay="1000"/> <sensorgpiopwen ioname="rk30_pin1_pc1" active="1" delay="1000"/> <sensorgpiorst ioname="rk30_pin0_pb0" active="0" delay="1000"/> <sensorgpiopwdn ioname="rk30_pin1_pa1" active="0" delay="0"/> <sensorfacing facing="back"/> <sensorinterface interface=" mipi "/> <sensormirrorflip mirror="0"/> <sensororientation orientation="180"/> <sensorpowerupsequence seq="1234"/> <sensorfovparemeter h="60.0" v="60.0"/> <sensorawb_frame_skip fps="15"/> <sensorphy phymode="camsys_phy_mipi" lane="2" phyindex="1" sensorfmt="camsys_fmt_raw_10b"/> </sensor> <vcm> <vcmdrvname name="dw9714"/> <vcmname name="huayong6505"/> <vcmi2cbusnum busnum="1"/> <vcmi2caddrbyte byte="0"/> <vcmi2crate rate="0"/> <vcmvdd name="nc" min="0" max="0" delay="0"/> <vcmgpiopower ioname="nc" active="0" delay="1000"/> <vcmgpiopwdn ioname="nc" active="0" delay="0"/> <vcmcurrent start="20" rated="80" vcmmax="100" stepmode="13" drivermax="100"/> </vcm> <flash> <flashname name="internal"/> <flashi2cbusnum busnum="0"/> <flashi2caddrbyte byte="0"/> <flashi2crate rate="0"/> <flashtrigger ioname="nc" active="0"/> <flashen ioname="nc" active="0"/> <flashmodetype mode="1"/> <flashluminance luminance="0"/> <flashcolortemp colortemp="0"/> </flash> </hardwareinfo> <softwareinfo> <awb> <awb_auto support="1"/> <awb_incandescent support="1"/> <awb_fluorescent support="1"/> <awb_warm_fluorescent support="1"/> <awb_daylight support="1"/> <awb_cloudy_daylight support="1"/> <awb_twilight support="1"/> <awb_shade support="1"/> </awb> <sence> <sence_mode_auto support="1"/> <sence_mode_action support="1"/> <sence_mode_portrait support="1"/> <sence_mode_landscape support="1"/> <sence_mode_night support="1"/> <sence_mode_night_portrait support="1"/> <sence_mode_theatre support="1"/> <sence_mode_beach support="1"/> <sence_mode_snow support="1"/> <sence_mode_sunset support="1"/> <sence_mode_steayphoto support="1"/> <sence_mode_pireworks support="1"/> <sence_mode_sports support="1"/> <sence_mode_party support="1"/> <sence_mode_candlelight support="1"/> <sence_mode_barcode support="1"/> <sence_mode_hdr support="1"/> </sence> <effect> <effect_none support="1"/> <effect_mono support="1"/> <effect_solarize support="1"/> <effect_negative support="1"/> <effect_sepia support="1"/> <effect_posterize support="1"/> <effect_whiteboard support="1"/> <effect_blackboard support="1"/> <effect_aqua support="1"/> </effect> <focusmode> <focus_mode_auto support="1"/> <focus_mode_infinity support="1"/> <focus_mode_marco support="1"/> <focus_mode_fixed support="1"/> <focus_mode_edof support="1"/> <focus_mode_continuous_video support="0"/> <focus_mode_continuous_picture support="1"/> </focusmode> <flashmode> <flash_mode_off support="1"/> <flash_mode_on support="1"/> <flash_mode_torch support="1"/> <flash_mode_auto support="1"/> <flash_mode_red_eye support="1"/> </flashmode> <antibanding> <anti_banding_auto support="1"/> <anti_banding_50hz support="1"/> <anti_banding_60hz support="1"/> <anti_banding_off support="1"/> </antibanding> <hdr support="1"/> <zsl support="1"/> <digitalzoom support="1"/> <continue_snapshot support="1"/> <interpolationres resolution="0"/> <previewsize width="1920" height="1080"/> <facedetect support="0" maxnum="1"/> <dv> <dv_qcif name="qcif" width="176" height="144" fps="10" support="1"/> <dv_qvga name="qvga" width="320" height="240" fps="10" support="1"/> <dv_cif name="cif" width="352" height="288" fps="10" support="1"/> <dv_vga name="480p" width="640" height="480" fps="10" support="0"/> <dv_480p name="480p" width="720" height="480" fps="10" support="0"/> <dv_720p name="720p" width="1280" height="720" fps="10" support="1"/> <dv_1080p name="1080p" width="1920" height="1080" fps="10" support="1"/> </dv> </softwareinfo> </camdevie> </boardfile>
主要修改的内容如下:
-
sensor 名称
<sensorname name="ov13850" ></sensorname>
该名字必须与 sensor 驱动的名字一致,目前提供的 sensor 驱动格式如下:
libisp_isi_drv_ov13850.so
-
sensor 软件标识
<sensordevid idname="camsys_devid_sensor_1a"></sensordevid>
注册标识不一致即可,可填写以下值:
camsys_devid_sensor_1a camsys_devid_sensor_1b camsys_devid_sensor_2
-
采集控制器名称
<sensorhostdevid busnum="camsys_devid_marvin" ></sensorhostdevid>
目前只支持:
camsys_devid_marvin
-
sensor 所连接的主控 i2c 通道号
<sensori2cbusnum busnum=3></sensori2cbusnum>
具体通道号请参考摄像头原理图连接主控的 i2c 通道号。
-
sensor 寄存器地址长度,单位:字节
<sensori2caddrbyte byte="2"></sensori2caddrbyte>
-
sensor 的 i2c 频率,单位:hz,用于设置 i2c 的频率。
<sensori2crate rate="100000"></sensori2crate>
-
sensor 输入时钟频率, 单位:hz,用于设置摄像头的时钟。
<sensormclk mclk="24000000"></sensormclk>
-
sensor avdd 的 pmu ldo 名称。如果不是连接到 pmu,那么只需填写 nc。
<sensoravdd name="nc" min="0" max="0"></sensoravdd>
-
sensor dovdd 的 pmu ldo 名称。
<sensordovdd name="nc" min="18000000" max="18000000"></sensordovdd>
如果不是连接到 pmu,那么只需填写 nc。注意 min 以及 max 值必须填写,这决定了 sensor 的 io 电压。
-
sensor dvdd 的 pmu ldo 名称。
<sensordvdd name="nc" min="0" max="0"></sensordvdd>
如果不是连接到 pmu,那么只需填写 nc。
-
sensor powerdown 引脚。
<sensorgpiopwdn ioname="rk30_pin2_pb6" active="0"></sensorgpiopwdn>
直接填写名称即可,active 填写休眠的有效电平。
-
sensor reset 引脚。
<sensorgpiorst ioname="rk30_pin3_pb0" active="0"></sensorgpiorst>
直接填写名称即可,active 填写复位的有效电平。
-
sensor power 引脚。
<sensorgpiopwen ioname="rk30_pin0_pb3" active="1"></sensorgpiopwen>
直接填写名称即可, active 填写电源有效电平。
-
选择 sensor 作为前置还是后置。
<sensorfacing facing="front"></sensorfacing>
可填写 front
或 back
。
-
sensor 的接口方式
<sensorinterface mode=" mipi "></sensorinterface>
可填写如下值:
ccir601 ccir656 mipi smia
-
sensor 的镜像方式
<sensormirrorflip mirror="0"></sensormirrorflip>
目前暂不支持。
-
sensor 的角度信息
<sensororientation orientation="0"></sensororientation>
-
物理接口设置
mipi
<sensorphy phymode="camsys_phy_mipi" lane="2" phyindex="1" sensorfmt="camsys_fmt_raw_10b"></sensorphy>
-
phymode
:sensor 接口硬件连接方式,对 mipi sensor 来说,该值取camsys_phy_mipi
-
lane
:sensor mipi 接口数据通道数 -
phyindex
:sensor mipi 连接的主控 mipi phy 编号 -
sensorfmt
:sensor 输出数据格式,目前仅支持camsys_fmt_raw_10b
编译内核需将 drivers/media/video/rk_camsys
驱动源码编进内核,其配置方法如下:
在内核源码目录下执行命令:
make menuconfig
然后将以下配置项打开:
device drivers ---> multimedia support ---> camsys driver rockchip camera system driver ---> camsys driver for marvin isp camsys driver for cif
最后执行:
make arch=arm64 rk3399-firefly-aio.img
即可完成内核的编译。
调试方法
终端下可以直接修改 /system/etc/cam_board.xml
调试各参数并重启生效
faqs
-
无法打开摄像头,首先确定 sensor i2c 是否通信。若不通则可检查 mclk 以及供电是否正常(power/powerdown/reset/mclk/i2cbus)分别排查
-
支持列表ː
-
13mː ov13850/imx214-0aqh5
-
8mː ov8825/ov8820/ov8858-z(r1a)/ov8858-r2a
-
5mː ov5648/ov5640
-
2mː ov2680
详细资料可查询 sdk/rkdocs
发表评论