camera调试:VCM马达驱动调试(DW9763)

article/2025/11/11 2:27:16

这篇文章介绍一下VCM马达驱动的调试,以RK3588,安卓平台,移植DW9763驱动为例。

目录

(一)概述

(1)VCM简介

(2)实现camera对焦方法

①实现光学变焦采用变焦马达(ZOOM)

②实现自动对焦采用对焦马达(AF)

(二)DW9763 马达驱动移植

①从马达规格书获取控制时序图和控制模式

②驱动实现

③dts配置

④安卓上层配置

⑤JSON效果文件配置

 ⑥调试命令

(三)总结


(一)概述

(1)VCM简介

       介绍一下VCM,这里从知乎上面摘抄一段:VCM全称Voice Coil Montor,电子学里面的音圈电机,是马达的一种。因为原理和扬声器类似,所以叫音圈电机,具有高频响、高精度的特点。其主要原理是在一个永久磁场内,通过改变马达内线圈的直流电流大小,来控制弹簧片的拉伸位置,从而带动上下运动。手机摄像头广泛的使用VCM实现自动对焦功能,通过VCM可以调节镜头的位置,呈现清晰的图像。

(2)实现camera对焦方法

①实现光学变焦采用变焦马达(ZOOM)

        通过移动镜头内部的镜片来改变焦点的位置,改变镜头焦距的长短,并改变镜头的视角大小,从而实现影响的放大与缩小。

②实现自动对焦采用对焦马达(AF)

        过微距离移动整个镜头(而不是镜头内的镜片)的位置,控制镜头焦距的长短,而实现影像 的清晰.手机中常用的方法。

光学变焦是通过移动镜头内部镜片的相对位置来改变焦点的位置,改变镜头焦距的长短,并改变镜头的视角大小,从而实现影像的放大与缩小;

光学对焦是实际上是调整整个镜头的位置(而不是镜头内的镜片)的位置,来控制像距,从而使成像最清晰。

目前VCM是使用最广泛的对焦方式。

(二)DW9763 马达驱动移植

马达驱动一般比较简单,只需要按照时序控制,设置位置的寄存器即可控制马达移动,这里以RK3588安卓12平台,移植DW9763马达驱动为例,内核版本为kernel-5.10。

①从马达规格书获取控制时序图和控制模式

datesheet一般都有描述马达所支持的控制模式和控制时序,如DW9763就支持,Direct mode和SAC mode,SAC mode分为SAC1,SAC2,SAC2.5,SAC3,SAC4,具体的模式选择有寄存器可以配置:

 控制时序一般如下:

  1. 设置Ringing control寄存器:这个寄存器设置是direct mode还是ringingmode
  2. 设置具体的SAC mode和DIV
  3. 设置Tvib
  4. 向寄存器设置DAC

②驱动实现

驱动的关键点如下:

  1. 设备资源的获取;RK私有资源定义,命名方式如rockchip,camera-module-xxx,主要是提供设备参数和Camera设备进行匹配。VCM参数定义,命名方式如rockchip,vcm-xxx,主要涉及硬件参数启动电流、额定电流、移动模式,参数跟马达移动的范围和速度相关。

  2. entity.function的指定,与camera sensor驱动不同,马达驱动注册的需要指定为:MEDIA_ENT_F_LENS

  3. v4l2_subdev_core_ops:设置ioctl回调接口,目前使用了私有的ioctl实现马达移动时间的查询:RK_VIDIOC_VCM_TIMEINFO;;

  4. v4l2_ctrl_ops:实现dw9763_get_ctrl和dw9763_set_ctrl,也就是获取和设置马达的位置接口,即对V4L2_CID_FOCUS_ABSOLUTE这个ioctl进行支持。

  5. RK AF算法将模组镜头整个可移动行程的位置参数定义为[0,64],模组镜头整个可移动行程在VCM驱动电流上对应的变化范围为[启动电流,额定电流],该函数中建议实现这2者间的映射换算关系;

static int dw9763_set_pos(struct dw9763_device *dev_vcm,unsigned int dest_pos)
{int ret;unsigned int position = 0;struct i2c_client *client = dev_vcm->client;u32 is_busy, i;if (dest_pos >= VCMDRV_MAX_LOG)position = dev_vcm->start_current;elseposition = dev_vcm->start_current +(dev_vcm->step * (VCMDRV_MAX_LOG - dest_pos));if (position > DW9763_MAX_REG)position = DW9763_MAX_REG;dev_vcm->current_lens_pos = position;dev_vcm->current_related_pos = dest_pos;for (i = 0; i < 100; i++) {ret = dw9763_read_reg(client, 0x05, 1, &is_busy);if (!ret && !(is_busy & 0x01))break;usleep_range(100, 200);}ret = dw9763_write_reg(client, 0x03, 2, dev_vcm->current_lens_pos);if (ret != 0)goto err;dev_dbg(&client->dev,"%s: set reg val %d\n", __func__, dev_vcm->current_lens_pos);return ret;
err:dev_err(&client->dev,"%s: failed with error %d\n", __func__, ret);return ret;
}

③dts配置

dts配置参考如下:

	dw9763: dw9763@c {compatible = "dongwoon,dw9763";status = "okay";reg = <0x0c>;rockchip,vcm-max-current = <120>;rockchip,vcm-start-current = <20>;rockchip,vcm-rated-current = <90>;rockchip,vcm-step-mode = <3>;rockchip,vcm-t-src = <0x20>;rockchip,vcm-t-div = <1>;rockchip,camera-module-index = <0>;rockchip,camera-module-facing = "back";};ov13855: ov13855@36 {
......lens-focus = <&dw9763>;
......};

vcm-max-current设置最大电流,vcm-start-current设置启动电流,vcm-rated-current设置额定电流,vcm-step-mode设置VCM的模式。

④安卓上层配置

如果支持VCM的话,安卓XML需要添加对应的AFmode支持,camera3_profiles.xml添加如下:

<control.afAvailableModes value="OFF,AUTO,MACRO,CONTINUOUS_VIDEO,CONTINUOUS_PICTURE,EDOF"/>

⑤JSON效果文件配置

效果文件需要打开AF:

 ⑥调试命令

上述效果文件打开会自动对焦,调试的时候可以将上述关掉,手动使用命令控制马达移动:

v4l2-ctl -d /dev/v4l-subdev3 --set-ctrl 'focus_absolute=64'
v4l2-ctl -d /dev/v4l-subdev3 --set-ctrl 'focus_absolute=0'

(三)总结

VCM马达的控制比较简单,只需要控制位置的寄存器即可,就介绍到此。大家有问题,可以在评论区一起讨论。


http://chatgpt.dhexx.cn/article/FfgEp2F3.shtml

相关文章

vcm驱动芯片原理_手机摄像头VCM音圈马达,原理、结构

一、VCM是什么 VCM(Voice Coil Motor)&#xff0c;电子学里面的音圈电机&#xff0c;是马达的一种。因为原理和扬声器类似&#xff0c;所以叫音圈电机&#xff0c;具有高频响、高精度的特点。 其主要原理是在一个永久磁场内&#xff0c;通过改变马达内线圈的直流电流大小&#…

高频高精度圆柱形音圈电机 微型VCM 直线电机模组 音圈马达

➤01 音圈电机 在 高频高精度圆柱形音圈电机 微型VCM 直线电机模组 音圈马达-淘宝网 购买到音圈电机。这是在 P5压电陶瓷致动器&#xff0c;纵向极化&#xff0c;叠堆压电陶瓷&#xff0c;多层压电陶瓷促动器 推文之后&#xff0c;佟超给出的替换方案。 ▲ 高频高精度圆柱形音圈…

VCM(音圈)马达驱动IC

VCM&#xff08;音圈&#xff09;马达驱动IC 参考链接&#xff1a;https://jingyan.baidu.com/article/f3ad7d0f3e935409c2345b5b.html 1 2 3 4 5 6 分步阅读 VCM&#xff08;Voice Coil Motor&#xff09;&#xff0c;电子学里面的音圈电机&#xff0c;是马达的一种。…

第八章:拆解VCM音圈马达,原理、结构

慧眼网 邓林供稿 第一章我们介绍了小孔成像的原理&#xff0c;实验中通过移动标尺即可在光屏上投影出清晰的蜡烛图像。在手机摄像头中&#xff0c;这个移动标尺的功能由VCM马达承担。 一、VCM是什么 VCM&#xff08;Voice Coil Motor&#xff09;&#xff0c;电子学里面的音圈电…

拆解VCM音圈马达,原理、结构

转自http://www.52rd.com/S_TXT/2014_10/TXT62308.HTM 感谢作者&#xff01; 一、VCM是什么 VCM&#xff08;Voice Coil Motor&#xff09;&#xff0c;电子学里面的音圈电机&#xff0c;是马达的一种。因为原理和扬声器类似&#xff0c;所以叫音圈电机&#xff0c;具有高频响…

VCM 音圈电机 (马达)Voice Coil Motor

**VCM&#xff08;Voice Coil Motor&#xff09;**指电子学里面的音圈电机&#xff0c;是马达的一种。 因为原理和扬声器类似&#xff0c;所以叫音圈电机。具有高频响、高精度的特点。 原理是在一个永久磁场内&#xff0c;改变马达内线圈的直流电流大小&#xff0c;控制弹簧片的…

VCM音圈马达

音圈马达 &#xff08;Voice Coil Actuator/ Voice Coil Motor&#xff09;&#xff0c;是一种将电能转化为机械能的装置&#xff0c;并实现直线型及有限摆角的运动。利用来自永久磁钢的磁场与通电线圈导体产生的磁场中磁极间的相互作用产生有规律的运动的装置。因为音圈马达是…

推荐一个好用的MySQL命令行工具

给大家推荐一个好用的MySQL命令行工具&#xff1a;mycli。比起常用的MySQL命令行&#xff0c;它的特点也是很明显的&#xff0c;如下&#xff1a; 1. 当输入SQL关键字时&#xff0c;数据库的列和表格会自动补全&#xff1b; 2. 关键字高亮显示 3. 这是一个基于Python开发的工…

Linux在线安装mysql(超详细)

需要的基础命令环境 wget、yum、vim 没有的话请自行安装 1、下载MySQL 安装包 [rootlocalhost local]# wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm2、安装mysql 安装源&#xff1a; [rootlocalhost local]# yum -y localinstall mysql57-…

linux上安装mysql详细步骤

linux上安装mysql详细步骤 前言卸载MySQL&#xff08;没安装的可直接跳过&#xff09;安装MySQL更改MySQL配置防火墙问题 前言 本人环境是CentOS7&#xff0c;安装的MySQL版本是8.0.15&#xff0c;从卸载到安装全过程记录 卸载MySQL&#xff08;没安装的可直接跳过&#xff0…

linux下mysql完整安装教程

3、安装mysql&#xff08;在113、114、115、116四台服务器上安装&#xff09; #安装mysql的服务器需开启防火墙3306 1、 找到安装包 在服务器 /mnt/software/ 目录下找到安装包mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz进入 /mnt/software/ 目录命令如下&#xff1a; #cd…

deepin linux mysql工具

mysql工具&#xff0c; 选来选去&#xff0c;还是官网的 mysql workbench吧&#xff0c;除了简单的连接查看之外&#xff0c;还有其他一些辅助工具&#xff0c;比如migration。 但是在安装utilities的时候&#xff0c;遇到了如下的问题&#xff0c;先记下。 为啥不用navicat来…

MySQL (Linux)安装

目录 1 卸载原来的mysql&#xff08;mariadb&#xff09; 2 下载yum 3 看看能不能正常⼯作 4 安装mysql服务 5 启动服务 6 登陆⽅式 7 最后配置 8 PS 1 卸载原来的mysql&#xff08;mariadb&#xff09; rpm -qa | grep mysql&#xff08;mariadb&#xff09; | xargs…

Linux下最新版MySQL 8.0的下载与安装(详细步骤)

前言 本篇文章基于Linux 环境下载与安装MySQL 8.0&#xff0c;像基于win 10系统下载离线版的方式一样安装&#xff08;安装简单&#xff09;&#xff0c;如果没有远程服务器&#xff0c;可以在电脑上安装虚拟机使用 创建虚拟机教程详见&#xff1a;http://t.csdn.cn/IFAJN 基于…

Linux安装MySQL(超详细,附图安装)

一、安装MySQL服务 1.查看是否已经安装了MySQL rpm -qa | grep mysql如果什么都没有&#xff0c;就是还没有装过MySQL 2.下载MySQL安装包 wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm3.安装MySQL包 yum -y install mysql57-commun…

Linux软件安装-MySQL安装

Linux软件安装-MySQL安装 目录 Linux软件安装-MySQL安装前言一、检查及删除1、先查看mysql是否存在&#xff0c;命令如下&#xff1a;2、如果存在&#xff0c;那么停止mysql&#xff0c;删除所有的服务3、停止服务4、查找mysql相关文件5、进行删除 二、安装及配置1、到指定目录…

Linux安装MySql最新版

MySql下载、解压、上传(/opt/mysql)https://dev.mysql.com/downloads/mysql MySql旧版本(卸载) rpm -e --nodeps rpm -qa | grep -i mysql && rm -rf /var/lib/mysql /etc/my.cnf.rpmsave /var/log/mysqld.log MySql新版本(安装) yum install openssl-devel &&am…

Linux在线安装MySQL

一、安装mysql 1、首先确定linux版本&#xff0c;确定下载对应的RPM。&#xff08;查看mysql与linux版本对应的资料&#xff09;如果以前安装mysql或者安装失败了&#xff0c;重新安装&#xff0c;需要删除以前的mysql文件。 yum remove mysql mysql-server mysql-libs mysql…

linux安装mysql

官方文档地址&#xff1a; https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html 1、检查安装 首先检查是否已经安装mysql&#xff0c;执行命令rpm -qa|grep mysql,如果没有任何信息则表示未安装&#xff0c;否则表示已经安装。 2、卸载mysql 如果未安…

mysql官网下载linux版本

今天在Linux上部署项目&#xff0c;用到了Mysql&#xff0c;因此想要下载适用于Linux的安装版本&#xff0c;在Mysql官网找了半天&#xff0c;终于找到怎样下载了&#xff0c;这里写出来&#xff0c;以后大家找的时候就好找了。 友情提示: 嫌麻烦的朋友可以直接跳到第六步,点击…