mipi csi 使用
板载资源
aio-3288c开发板有双 mipi 摄像头接口,摄像头图像处理能力达到 4416x3312 像素,支持 4k 视频录制。此外,开发板还支持 usb 摄像头。 本文aio-3288c和单个ov13850 摄像头为例,讲解mipi摄像头在该开发板上的配置过程。
相关代码目录
与摄像头相关的代码目录如下:
android: `- hardware/rockchip/camera |- config | `- cam_board.xml // 摄像头的参数设置 |- camerahal // 摄像头的 hal 源码 `- siliconimage // isp 库,包括所有支持模组的驱动源码 `- isi/drv/ov13850 // ov13850 模组的驱动源码 `- calib/ov13850.xml // ov13850 模组的调校参数
kernel: |- kernel/drivers/media/video/rk_camsys // camsys 驱动源码 `- kernel/include/media/camsys_head.h
配置原理
设置摄像头相关的引脚和时钟,即可完成配置过程。
从以下摄像头接口原理图可知,需要配置的引脚有:cif_pwr、mipi_pwr、mipi_sda、mipi_scl、mipi_rst 和cif_pdn0。
cif_pwr 对应 aio-3288c 上的 gpio7_b4 引脚:
mipi_pwr和mipi_rst对应aio-3288c上的gpio3_b2和gpio3_b0引脚,默认为高电平:
mipi_sda和mipi_scl由cif_pwr控制:
cif_pdn0对应gpio2_b6引脚:
在开发板中,除了cif_power和dvp_power要在 dts 和驱动中设置,其它引脚都是在 cam_board_rk3288_aio_3288c.xml 中设置。
配置步骤
配置 android
修改 hardware/rockchip/camera/config/cam_board_rk3288_aio-3288c.xml 来注册摄像头:
主要修改的内容如下:
sensor 名称
sensorname>
该名字必须与 sensor 驱动的名字一致,目前提供的 sensor 驱动格式如下:
libisp_isi_drv_ov13850.so
用户可在编译 android 完成后在目录 out/target/product/rk3288_aio_3288j_box/system/lib/hw/ 下找到该摄像头驱动文件。
sensor 软件标识
sensordevid>
注册标识不一致即可,可填写以下值:
camsys_devid_sensor_1a camsys_devid_sensor_1b camsys_devid_sensor_2
采集控制器名称
sensorhostdevid>
目前只支持:
camsys_devid_marvin
sensor 所连接的主控 i2c 通道号
sensori2cbusnum>
具体通道号请参考摄像头原理图连接主控的 i2c 通道号。
sensor 寄存器地址长度,单位:字节
sensori2caddrbyte>
sensor 的 i2c 频率,单位:hz,用于设置 i2c 的频率。
sensori2crate>
sensor 输入时钟频率, 单位:hz,用于设置摄像头的时钟。
sensormclk>
sensor avdd 的 pmu ldo 名称。如果不是连接到 pmu,那么只需填写 nc。
sensoravdd>
sensor dovdd 的 pmu ldo 名称。
sensordovdd>
如果不是连接到 pmu,那么只需填写 nc。注意 min 以及 max 值必须填写,这决定了 sensor 的 io 电压。
sensor dvdd 的 pmu ldo 名称。
sensordvdd>
如果不是连接到 pmu,那么只需填写 nc。
sensor powerdown 引脚。
sensorgpiopwdn>
直接填写名称即可,active 填写休眠的有效电平。
sensor reset 引脚。
sensorgpiorst>
直接填写名称即可,active 填写复位的有效电平。
sensor power 引脚。
sensorgpiopwen>
直接填写名称即可, active 填写电源有效电平。
选择 sensor 作为前置还是后置。
sensorfacing>
可填写 “front” 或 “back”。
sensor 的接口方式
sensorinterface>
可填写如下值:
ccir601 ccir656 mipi smia
sensor 的镜像方式
sensormirrorflip>
目前暂不支持。
sensor 的角度信息
sensororientation>
物理接口设置
mipi
sensorphy>
hymode:sensor 接口硬件连接方式,对 mipi sensor 来说,该值取 “camsys_phy_mipi” lane:sensor mipi 接口数据通道数 phyindex:sensor mipi 连接的主控 mipi phy 编号 sensorfmt:sensor 输出数据格式,目前仅支持 camsys_fmt_raw_10b
配置内核
在配置原理中提到,gpio7_b4 需要在 dts 和驱动中配置。其配置方法如下:
(1). dts 文件添加 gpio7_b4 配置属性
在 kernel/arch/arm/boot/dts/rk3288.dtsi 文件中添加 gpios-cifpower 属性,如下所示:
isp: isp@ff910000{ compatible = firefly,isp; ... gpios-cifpower = ; ... status = okay; };
(2). 驱动中配置 cif_power
在 kernel/drivers/media/video/rk_camsys/camsys_drv.c 中读取 gpios-cifpower ,并设置该引脚,使能 cif_power,在probe函数camsys_platform_probe()中添加如下所示:
enum of_gpio_flags flags; int cifpower_io; int io_ret; cifpower_io = of_get_named_gpio_flags(dev->of_node, gpios-cifpower, 0, &flags); camsys_trace(1, 1-gpios-cifpower: gpio=%d, cifpower_io); if(gpio_is_valid(cifpower_io)){ cifpower_io = of_get_named_gpio_flags(dev->of_node, gpios-cifpower, 0, &flags); camsys_trace(1, gpios-cifpower: gpio_request); io_ret = gpio_request(cifpower_io,cifpower); camsys_trace(1, 1-gpios-cifpower: gpio_request=%d, io_ret); if(io_ret multimedia support ---> camsys driver rockchip camera system driver ---> camsys driver for marvin isp camsys driver for cif
最后执行:
make firefly-rk3288-aio-3288c.img
即可完成内核的编译。
必示科技受邀参加上海人工智能大会并分享金融行业AIOps落地经验
对于自动驾驶汽车的控制解析
FPGA学习系列:23. 音乐蜂鸣器的设计
工厂用能管理困难?物通博联能耗监测系统轻松实现节能优化
SOLIDWORKS 2024:优化生产流程,降低成本
fireflyAIO-3288C主板MIPI CSI摄像头接口简介
iphone8什么时候上市?iphone8最新消息:屏幕亮度不均,iphone8屏下指纹配置或搁浅
煤矿井下定位系统的原理及功能
智新半导体有限公司年产30万套功率模块的生产线4月将投入量产
单片机入门教程第20课-定时、中断实验二
人工智能要想更快更好 好奇心必不可少
V社最新VR设备开箱体验 手柄触感能力超强
APUS用户突破12亿 移动互联网出海市场空间巨大
一些投资机构对AI已经“投怕了”
纳芯微荣膺“年度中国创新IC设计公司”奖
华为Mate8拆解评测:内部构造布局精致
投光灯接线安装方法_投光灯安装注意事项
全功能报警控制主机的功能介绍
特斯拉“国产化”落下实锤 建年产50万超级工厂
触发器的输出状态由什么决定