首页 > 其他分享 >Camera | 12.瑞芯微摄像头自动焦距马达驱动移植

Camera | 12.瑞芯微摄像头自动焦距马达驱动移植

时间:2023-09-01 22:01:03浏览次数:38  
标签:12 DW9714 dw9714 ops rockchip ctrl vcm 瑞芯微 Camera

本为你主要讲解如何让摄像头ov13850支持自动对焦功能。

摄像头的对角主要通过VCM马达驱动芯片DW9714来实现的。

一、环境

soc  : rk3568   
board: EVB1-DDR4-V10
软  件:Android 11
Linux:4.19.232
Camera:ov13850

二、DW9714

1.DW9714简介

DW9714专为自动对焦和光学变焦照相手机、数码相机和摄像机应用而设计,

由韩国动运国际有限公司(Dongwoon )设计生产。

工作电压可达3.6V。

DAC通过I2C串行接口控制,该接口以高达400kHz的时钟速率操作DAC。

DW9714集成了上电复位电路、掉电功能和精确匹配的检测电阻。

上电复位电路确保当电源上电时,DAC输出为0V,直到发生有效的写位值。它具有断电功能,可将器件的电流消耗降至最大1uA。

2. 特征

  • 用于自动对焦的VCM驱动程序
  • 关机功能:XSD=低电平有效
  • VCM的10位分辨率电流吸收为120mA
  • I2C串行接口(可用于1.8V输入电平)
  • 集成电流检测电阻
  • 保证所有代码的单调性
  • 低至0.5uA(典型值)
  • 上电复位
  • 掉电功能
  • 2.3V至3.6V操作

3. 模块图

4. 引脚

序号 Pin Name I/O Description Note
1 IOUT Output current sink
2 VSS 接地
3 VDD 供电
4 SDA I2C interface input (DATA)
5 SCL I2C interface input/output (CLOCK)
6 XSD(1) 关机模式,低有效

5. 参考电路

6. i2c时序

由以下时序可以看到,vcm9714利用I2C接口通信时,每次读/写,直接传输2个字节的数据,通信之前,不需要发送内部寄存器地址。

7. 寄存器格式

引脚 说明
PD Power down mode
1: Power down mode (active high)
0: Normal operation mode
FLAG 写操作时必须置为低
D[9:0] Data input
输出电流 = (D[9:0]/1023) X 120mA
最大电流 = 120mA +/- 5%
S[3:2] Codes per step
0: 0 (no SRC) – direct driving
1: 1
2 :2
3: 4
S[1:0] 步进周期
0: 81
1: 162
2: 324
3: 648

三、驱动移植

vcm9714与rk3568连接图:

  • 设备树:
@arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi
560     dw9714: dw9714@c {
561         compatible = "dongwoon,dw9714";
562         status = "okay";
563         reg = <0x0c>;
564         rockchip,camera-module-index = <0>;
565         rockchip,vcm-start-current = <10>;
566         rockchip,vcm-rated-current = <85>;
567         rockchip,vcm-step-mode = <5>;
568         rockchip,camera-module-facing = "back";
569     };
570 
571     ov13850: ov13850@10 {
			……
584         lens-focus = <&dw9714>;
			……                                                                                                                                                                                      
591     };

其中,下面这两个属性,必须要和对应的的摄像头ov13850信息保持一致

rockchip,camera-module-index = <0>;
rockchip,camera-module-facing = "back";

摄像头支持的马达驱动信息通过以下属性关联

lens-focus = <&dw9714>;
  • Makefile
@kernel\drivers\media\i2c\Makefile
obj-$(CONFIG_VIDEO_DW9714)  += dw9714.o
  • Kconfig
@kernel\drivers\media\i2c\Kconfig
config VIDEO_DW9714
	tristate "DW9714 lens voice coil support"
	depends on I2C && VIDEO_V4L2 && MEDIA_CONTROLLER
	depends on VIDEO_V4L2_SUBDEV_API
	---help---
	  This is a driver for the DW9714 camera lens voice coil.
	  DW9714 is a 10 bit DAC with 120mA output current sink
	  capability. This is designed for linear control of
	  voice coil motors, controlled via I2C serial interface.
  • 支持该驱动:
@ arch/arm64/configs/rockchip_defconfig 
572 CONFIG_VIDEO_DW9714=y  
  • 驱动:
rk_android11.0_sdk_220718\kernel\drivers\media\i2c\dw9714.c

四、调试信息

1. 启动的驱动log

	[    0.800799] vm149c 4-000c: probing...
	[    0.800820] vm149c 4-000c: driver version: 00.01.00
	[    0.800834] vm149c 4-000c: could not get module rockchip,vcm-max-current from dts!
	[    0.800847] vm149c 4-000c: could not get module rockchip,vcm-start-current from dts!
	[    0.800860] vm149c 4-000c: could not get module rockchip,vcm-rated-current from dts!
	[    0.800872] vm149c 4-000c: could not get module rockchip,vcm-step-mode from dts!
	[    0.800907] vm149c 4-000c: probing successful 

2. 查看拓扑结构

media-ctl -p

……………
	- entity 74: m00_b_ov13850 4-0010 (1 pad, 1 link)
				 type V4L2 subdev subtype Sensor
				 device node name /dev/v4l-subdev4
			pad0: Source
					[fmt:SBGGR10/4224x3136]
					-> "rockchip-csi2-dphy0":0 []

	- entity 78: m00_b_gpio-flash (0 pad, 0 link)
				 type V4L2 subdev subtype Flash
				 device node name /dev/v4l-subdev5

	- entity 79: m00_b_dw9714 4-000c (0 pad, 0 link)
				 type V4L2 subdev subtype Lens
				 device node name /dev/v4l-subdev6

四、驱动分析

vcm9714驱动比较简单,基于i2c总线,

核心就是要注册基于v4l2的subdev,

提供给用户层调用的核心回调函数如下:

  1. 获取并设置当前马达的pos
static const struct v4l2_ctrl_ops dw9714_vcm_ctrl_ops = {
	.g_volatile_ctrl = dw9714_get_ctrl,
	.s_ctrl = dw9714_set_ctrl,
};
static int dw9714_init_controls(struct dw9714_device *dev_vcm)
{
	struct v4l2_ctrl_handler *hdl = &dev_vcm->ctrls_vcm;
	const struct v4l2_ctrl_ops *ops = &dw9714_vcm_ctrl_ops;

	v4l2_ctrl_handler_init(hdl, 1);

	v4l2_ctrl_new_std(hdl, ops, V4L2_CID_FOCUS_ABSOLUTE,
			  0, VCMDRV_MAX_LOG, 1, VCMDRV_MAX_LOG);
	……
}
static const struct v4l2_subdev_core_ops dw9714_core_ops = {
	.ioctl = dw9714_ioctl,
};

static const struct v4l2_subdev_ops dw9714_ops = {
	.core = &dw9714_core_ops,
};

static int dw9714_probe(struct i2c_client *client,
			const struct i2c_device_id *id)
{
	v4l2_i2c_subdev_init(&dw9714_dev->sd, client, &dw9714_ops);
}	

所有camera原创文章已经汇总成pdf,

关注公众号:一口Linux,
后台回复:rxw 即可获取

标签:12,DW9714,dw9714,ops,rockchip,ctrl,vcm,瑞芯微,Camera
From: https://www.cnblogs.com/yikoulinux/p/17672919.html

相关文章

  • NOIP2012提高组初赛易错题解析
    一.3. 错误原因:忘记了解析:Intel是全球最大的CPU厂商,AMD是世界上首个研发出7纳米CPU的厂商 6.错误原因:忘记了解析:ENIAC是世界上首台计算机,属于第一代计算机,即电子管计算机 10.错误原因:选项理解错误解析:A由蝙蝠,发明雷达是正确的,B因特网的发明与蜘蛛网无关,只是形......
  • COMP123 2D图形算法难点讨论
    COMP123Primitive2DDrawingAssignmentSpecificationInthisassignment,youwillberequiredtoimplementsomeofthealgorithmsthatwehavediscussedinlectures.Youwillneedtowriteagenericframebufferclassthatisabletorepresentimagesandd......
  • 洛谷P1228 地毯填补问题
    1#include<bits/stdc++.h>2usingnamespacestd;3intk,x,y;45intjudge(intx,inty,intgx,intgy,intlen)//判断障碍物在哪个区块6{7if(gx<=x+len/2-1&&gy<=y+len/2-1)8return1;9else......
  • VMware Tools 12.3.0 发布,新增对搭载 Apple 芯片的 Mac 上运行 Windows ARM 虚拟机的
    VMwareTools12.3.0发布,新增对搭载Apple芯片的Mac上运行WindowsARM虚拟机的支持请访问原文链接:https://sysin.org/blog/vmware-tools-12/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgVMwareTools是一套安装在虚拟机的操作系统中的实用程序。VMwareTool......
  • 钡铼科技打造的BL122:完美集成Modbus与Profinet通信的利器
        钡铼技术BL122协议转换网关是一款专业的设备,用于将Modbus协议转换为Profinet协议。BL122采用了先进的嵌入式ARMMCU和基于LinuxOS系统的开发,具备出色的性能和高度的稳定性。BL122支持多种下行采集方式,包括ModbusRTU、ModbusTCP和ModbusASCII等。通过将这些不同的......
  • iOS证书(.p12)和描述文件(.mobileprovision)申请
    5+App开发Apple证书iOS证书iOS有两种证书和描述文件:证书类型使用场景开发(Development)证书和描述文件用于开发测试,在HBuilder中打包后可在真机环境通过Safari调试发布(Distribution)证书和描述文件用于提交Appstore,在HBuilder中打包后可使用ApplicationLoader提交到Appstore审......
  • iOS开发之进阶篇(1)—— 证书、打包上架流程、p12文件
    iOS开发相关的证书有很多种,iOS开发证书(iOSAppDevelopment)、iOS发布证书(iOSDistribution(AppStoreandAdHoc))、网站推送ID证书(WebsitePushIDCertificate)、ApplePay付款处理证书(ApplePayPaymentProcessingCertificate)等等。Xcode11以后,又新增了AppleDevelopment和Ap......
  • 苹果证书(免费) + 打包ipa + 上传app store在Hbuilder里面打包ipa包到没越狱的手机上安
    苹果证书(免费)+打包ipa+上传appstore 在Hbuilder里面打包ipa包到没越狱的手机上安装时,是需要p12文件跟.mobileprovision的证书的,这里可以超简单不需要Mac也可以申请到前提:先安装好Appuploader——>http://www.applicationloader.net/blog/zh/72.html1、打开软件,使用开发者账......
  • Unity3D下如何采集camera场景数据并推送RTMP服务?
    Unity3D使用场景Unity3D是非常流行的游戏开发引擎,可以创建各种类型的3D和2D游戏或其他互动应用程序。常见使用场景如下:游戏开发:Unity3D是一个广泛用于游戏开发的环境,适用于创建各种类型的游戏,包括动作游戏、角色扮演游戏、策略游戏、冒险游戏等。虚拟现实:Unity3D也常用于虚拟现实(VR......
  • BL122:钡铼技术助力实现高效Modbus到Profinet协议转换
     钡铼技术BL122协议转换网关是一款专业的设备,用于将Modbus协议转换为Profinet协议。BL122采用了先进的嵌入式ARMMCU和基于LinuxOS系统的开发,具备出色的性能和高度的稳定性。BL122支持多种下行采集方式,包括ModbusRTU、ModbusTCP和ModbusASCII等。通过将这些不同的Modbus协......