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的寄存器介绍: