《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 其他 > 瑞芯微 | 摄像头ov13850移植笔记

瑞芯微 | 摄像头ov13850移植笔记

2022-11-18
作者: 电子技术应用专栏作家 一口Linux
来源: 电子技术应用专栏作家 一口Linux
关键词: 瑞芯微 摄像头

  关于瑞芯微的文章,之前写了3篇,链接如下:

  《1.瑞芯微rk356x板子快速上手

  《2.Linux驱动|瑞芯微rtc-hym8563移植笔记

  《3.Linux驱动 | Linux内核 RTC时间架构-基于瑞芯微

  后面会持续更新瑞芯微相关文章,有兴趣的老铁加关注。

  0、环境

 微信截图_20221118140229.png

  一、ov13850简介

  1. 产品参数

  品牌:Omnivision

  型号:CMK-OV13850

  接口:MIPI

  像素:1320W

OV13850彩色图像传感器是一款低电压、高性能1/3.06英寸1320万像素CMOS图像传感器,使用OmniBSI+?技术提供了单-1320万像素(4224×3136)摄像头的功能。通过串行摄像头控制总线(SCCB)接口的控制,它提供了全帧、下采样、开窗的10位MIPI图像。

  OV13850拥有一个能够在10位1320万像素分辨率下以每秒24帧(fps)的速度运行的图像阵列,用户可以完全控制图像质量、格式和输出数据传输。所有需要的图像处理功能,包括曝光控制、白平衡、缺陷像素消除等,都可以通过SCCB接口进行编程。

微信截图_20221118140104.png

  此外,OmniBSI图像传感器使用专有的传感器技术,通过减少或消除固定图案噪声、污迹等常见的图像污染光源来提高图像质量,从而产生干净、完全稳定的彩色图像。

  为了提供定制信息,OV13850包括一个单编程(OPT)存储器。OV13850拥有最多4车道的MIPI接口。

  OV13850适用于低功耗相机模块。

  以下是测试用的摄像头&扩展板:

  微信截图_20221118140330.png

  2. 特性

  ●镜头尺寸:1/3.06英寸 ●像素大小:1.12毫米×1.12毫米 ●31.2°CRA为6mm z高度 ●可编程控制帧速率,镜像和翻转,裁剪和窗口 ●1320万像素AT30fps ●双线串行总线控制(SCCB) ●闪光灯输出控制闪光 ●支持输出格式:10位RAW RGB ●支持图像大小:13.2MP(4224×3136)、10MP(4224×2376)、4K2K(3840×2160)、EIS 1080P(2112×1188)、EIS 720P(1408×792)、more3 ●支持2×2 Binning ●可达4车道MIPI串行输出接口 ●标准系列SCCB接口 ●8k bit的嵌入式一次性可编程(OTP)存储器(见侧注) ●两个片上锁相环(PLLs) ●可编程控制:增益、曝光、帧率、图像大水、水平反射镜、垂直翻转裁剪和平移 ●内置温度传感器 ●图像质量控制:缺陷校正,自动黑电平校准,镜头阴影校正,和高度计行HDR。●保证传感器结温:-300C到+850C ●电源核心:1.14V-1.26V;模拟:2.6-3.0V输入/输出:1.7-3.0V ●封装:PLCC40

  3. ov13850引脚图

  微信截图_20221118140530.png

  4. ov13850功能模块

  微信截图_20221118140627.png

  定时脉冲发生器输出时钟来访问成像阵列的行,预先填充电荷并且按顺序对数组的行进行采样。

  在预先填充电荷和采样的时间间隔内,每个像素点的电荷曝光时减少入射光。

  这是在滚动快门的体系结构的曝光时间。

  曝光时间通过调整预先填充电荷和采样之间的时间间隔控制。

  在每一行的像素数据采样后,通过模拟电路(AMP)进一步处理:纠正偏移量和将数据乘以相应的增益。

  模拟处理后通过10位ADC的输出数组中的每个像素的数据。

  ISP(image sensor processor)通过图像输出接口单元,经过mipi接口(MCP/MDP)将图像数据发送出去。

  5. 像素数组

  OV13850传感器的图像数组4256列3152行(13414912像素)

  颜色过滤器是安排在Bayer模式

微信截图_20221118140750.png

  Binning mode 2x2 binning

  Binning mode 通常用于低分辨率

微信截图_20221118140829.png

  6. mirror 和 flip

  OV13850提供图像mirror(左右翻转) 和 flip(上下翻转)模式

微信截图_20221118140911.png

  二、驱动移植

  瑞芯微支持的摄像头,有个support list,

  此次从该list中选择了ov13850

  1. 驱动源文件及对应脚本

  默认sdk里面已经将支持的所有摄像头驱动都添加到了内核,所以不需要移植该驱动了,

  但是还是要确认下移植驱动对应的一些信息

  微信截图_20221118140937.png

  

  2. 设备树

  1)典型ov系列摄像头链接示意图

  微信截图_20221118141004.png

  ov系列摄像头与SOC连接的主要的引脚有:i2c、rst、pwdn、mclk、MIPI Clk、MIPI DATA

  这几根线是驱动工程师必须捋清楚的

  2)电路图

  本次我们直接将摄像头插在公版的视频接口,用的是通道0,使用了4个lane【不知道具体硬件信息就问硬件工程师】

微信截图_20221118141134.png

  由电路图可知,几个关键引脚关系:

  reset信号:GPIO3 B6

  power down信号:GPIO4 B4

  I2C通道:4

  clock:cif

  3)设备树节点

  参考sdk中其他平台的ov13850节点来填写

  微信截图_20221118141223.png

  设备树的信息最终转换成i2c_client,并传递给ov13850驱动ov13850_probe()compatible = "ovti,ov13850";与驱动的of_match_table 保持一致

微信截图_20221118141258.png

  关于摄像头驱动,

  彭老师后面会继续更一篇文章讲解。

  3. 安卓配置文件

  在以下两个文件增加对应摄像头信息,

 微信截图_20221118141812.png

  一口君直接参考的其他文件,

  然后找一个相近型号的摄像头修改的

  三、查看摄像头相关信息

  1. 开机log

  移植成功后,确认下对应的驱动log

  微信截图_20221118141842.png

  2. 查看ov13850设备

  驱动加载成功后,会有以下信息

  查看摄像头设备节点:

  微信截图_20221118141903.png

  3. 查看sys文件系统中文件信息

  内核会为摄像头在目录/sys/class/video4linux下分配设备信息描述文件

  微信截图_20221118141938.png

  4. 查看拓扑 media-ctl -d /dev/media0 -p

  微信截图_20221118142012.png      微信截图_20221118142032.png微信截图_20221118142113.png

  从entity70信息中可以看到:

  该Entity完整的名称是:m00_b_ov13850 4-0010

  它是一个V4L2 subdev(Sub-Device) Sensor

  它对应的节点是/dev/v4l-subdev3,应用程序(如v4l2-ctl)可以打开它,并进行配置

  它仅有一个输出(Source)节点,记为pad0

  它的输出格式是[fmt:SBGGR10/4224x3136],其中SBGGR10是一种mbus-code的简称

  它的Source pad0 链接到"rockchip-csi2-dphy0"的pad0,并且当前的状态是 ENABLED。

  三、拍照测试

  1. 抓帧

微信截图_20221118142154.png

  【看到<<<<<<<<< 7.51 fps 说明成功】

  参数说明

  微信截图_20221118142237.png

  2. 显示图片:

  将文件**/sdcard/out.yuv从板子通过adb pull**命令拷贝出来,

  微信截图_20221118142301.png

  再拷贝到ubuntu中,执行以下命令显示图片【用其他可以打开yuv格式图片的工具也可以】

微信截图_20221118142333.png

  【拍照时选择其他较高分辨率会出错,暂时还没解决这个问题,有知道的可以联系我:yikoupeng】

  四、参数设置

  1. 显示摄像头参数

 微信截图_20221118142406.png

  2. 增加曝光exposure

  exposure值区间为:  4-3324 命令实例:

  微信截图_20221118142428.png

  3. 增加图片亮度analogue_gain

  analogue_gain用于设置显示的图像的亮度

  analogue_gain值区间:16-248

  命令实例:

  微信截图_20221118142457.png

  analogue_gain=244现象【效果非常明显】

微信截图_20221118142522.png

  4. 测试显示信息test_pattern

  参数test_pattern,可以用于测试显示图像

  0:摄像头

  1-3 测试图片 命令实例:

 微信截图_20221118142612.png

微信截图_20221118142632.png

微信截图_20221118142647.png

  5. 修改Entity的format、size

  举例一,GC2053摄像头支持多个分辨率的输出,默认为1920x1080。现将输出分辨率改为640x480:

  微信截图_20221118142710.png

  五、遇到问题解决

  1.  解决闪退

  主要是camera3_profiles_rk356x.xml和camera3_profiles.xml这两个文件中没有ov13850的信息

  所以找到这两个文件,增加相对应的摄像头信息 改文件位于sdk的目录如下:

微信截图_20221118142735.png

  文件camera3_profiles.xml参数的说明,瑞芯微官方有相应的说明文档

  2. app 提示没有权限连接&打开设备失败

 微信截图_20221118142807.png

  同时将设备树文件 将mipi_in_ucam0里的reg修改为1,如果有其他摄像头信息,一次往后填写或者删除。

  微信截图_20221118142841.png

  【这个reg是什么意思,有知道的老铁可以给我留言】

  3.  APP打开设备失败

  从log看,没有任何permission问题,摄像头也打开了,但是就是连接失败,主要是xml文件的sensorType 设置不对

  微信截图_20221118142904.png

  六、后续

  后面还有一些工作需要进一步研究:

  目前只调通了1个摄像头,后需要会再增加1个2lane的摄像头

  视频颜色还有点发绿,还需要进一步调试

  有一起玩瑞芯微平台的老铁,后台猛戳我

 更多信息可以来这里获取==>>电子技术应用-AET<<

微信图片_20210517164139.jpg

微信图片_20220701092006.jpg

电子技术应用专栏作家 一口Linux

原文链接:瑞芯微 | 摄像头ov13850移植笔记


 

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。