高通马达代码分析 msm_actuator

1.概述

actuator驱动信息文件是指vendor目录下的$ActuatorName_actuator.h文件(如gigaset_actuator.h)。此信息文件就是一个actuator_driver_ctrl_t结构体。包括actuator_params与actuator_tuned_params两部分,即driver与tunning两部分。文档以目前最主流的VCM为例进行参数的介绍。

2.driver部分信息actuator_params

act_type: actuator类型,目前就VCM、PIEZO及HVCM三种

data_size:数据长度(VCM指传输lens位置的数据长度?)

init_settings:actuator的初始化参数

reg_tbl:存器列表,用来下actuator移动参数,这些参数又包括如下一些参数选项

reg_write_type:写入数据的格式,VCM一般使用DAC,10位表示0~1023

reg_addr:入数据寄存器地址,如果不需要具体地址,则配置为0xFFFF

data_shift:据对应寄存器的移位

hw_mask:它bit位的控制设置,比如VCM的ring_ctrl

hw_shift:制设置对应寄存器的移位

reg_tbl部分举例AD5823如下:

.reg_tbl =

{

.reg_tbl_size = 1,

.reg_params =

{

{

.reg_write_type = MSM_ACTUATOR_WRITE_DAC,

.hw_mask = 0x00000400, 除data外的其它b it位的mask

.reg_addr = 0x04, //寄存器写地址为reg04

.hw_shift = 0, //hw_mask已经制定了明确的bit位,所以不再需要移位

.data_shift = 0, //reg05[7:0]为数据,所以不需要移位

},

},

},

查看驱动代码大致如下:

value = (next_lens_position

write_arr[i].data_shift) |

((hw_dword write_arr[i].hw_mask)

write_arr[i].hw_shift);

最终获得I2C数据代码如下:

i2c_byte1 = (value 0xFF00) 8; // 对应reg04寄存器值

i2c_byte2 = value 0xFF; //对应reg05寄存器值

这里获得的value及需要写入寄存器的值,上面的hw_dword参数来自于tunning参数表中的hw_params (此驱动的hw_params值为0x00000400)。下面再来看看AD5823的寄存器介绍:

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值