当前位置: 首页 > news >正文

camx 马达的MSM_ACTUATOR_WRITE_DAC 操作

camx 马达的MSM_ACTUATOR_WRITE_DAC操作

  • 为什么要分析 MSM_ACTUATOR_WRITE_DAC
  • mm-camera MSM_ACTUATOR_WRITE_DAC
  • camx MSM_ACTUATOR_WRITE_DAC
  • 总结

为什么要分析 MSM_ACTUATOR_WRITE_DAC

目前的camx源码 省略了hw_mask 的处理。 一般来说 hw_mask 是0 ,但是对于非0情况 就会出现异常

mm-camera MSM_ACTUATOR_WRITE_DAC

驱动的处理

   	case MSM_ACTUATOR_WRITE_DAC:value = (next_lens_position <<write_arr[i].data_shift) |((hw_dword & write_arr[i].hw_mask) >>write_arr[i].hw_shift);if (write_arr[i].reg_addr != 0xFFFF) {i2c_byte1 = write_arr[i].reg_addr;i2c_byte2 = value;} else {i2c_byte1 = (value & 0xFF00) >> 8;i2c_byte2 = value & 0xFF;}i2c_tbl.reg_addr = i2c_byte1;i2c_tbl.reg_data = i2c_byte2;i2c_tbl.delay = delay;a_ctrl->i2c_tbl_index++;reg_setting.reg_setting = &i2c_tbl;reg_setting.data_type = a_ctrl->i2c_data_type;rc = a_ctrl->i2c_client.i2c_func_tbl->i2c_write_table_w_microdelay(&a_ctrl->i2c_client, &reg_setting);if (rc < 0) {pr_err("i2c write error:%d\n", rc);return rc;}break;

马达dw9714设置

      .reg_tbl ={.reg_tbl_size = 1,.reg_params ={{.reg_write_type = ACTUATOR_WRITE_DAC,.hw_mask = 0x0000000F,.reg_addr = 0xFFFF,.hw_shift = 0,.data_shift = 4,},},},

camx MSM_ACTUATOR_WRITE_DAC

驱动处理

            case ActuatorOperation::WRITE_DAC_VALUE:pWriteCmd                  = reinterpret_cast<CSLSensorI2CRandomWriteCmd*>(static_cast<BYTE*>(pCmdBuffer) + offset);pWriteCmd->header.count    = 1;pWriteCmd->header.opcode   = CSLSensorI2COpcodeRandomWrite;pWriteCmd->header.cmdType  = CSLSensorCmdTypeI2CRandomRegWrite;pWriteCmd->header.dataType = static_cast<UINT8>(pRegConfigTable->registerParam[i].regDataType);pWriteCmd->header.addrType = static_cast<UINT8>(pRegConfigTable->registerParam[i].regAddrType);pWriteCmd->regValPairs[0].reg = pRegConfigTable->registerParam[i].registerAddr;pWriteCmd->regValPairs[0].val = targetPositionDAC << pRegConfigTable->registerParam[i].dataShift;offset += sizeof(CSLSensorI2CRandomWriteCmd);break;

马达dw9714设置

  <!--Sequence of register configuration --><registerConfig><!--Actuator register configuration --><registerParam><!--Register address / data size in bytes --><regAddrType range="[1,4]">1</regAddrType><!--Register address / data size in bytes --><regDataType range="[1,4]">1</regDataType><!--Register address that is accessed --><registerAddr>0xFFFF</registerAddr><!--Register data to be programmed --><registerData>0</registerData><!--Actuator operationsSupported operations are: WRITE_HW_DAMP, WRITE_DAC, WRITE, WRITE_DIR_REG, POLL, READ_WRITE --><operation>WRITE_DAC_VALUE</operation><!--Delay in micro seconds --><delayUs>0</delayUs><!--Hardware mask --><hwMask>0x0000000F</hwMask><!--Number of bits to shift for HW --><hwShift>0</hwShift><!--Number of bits to shift for data --><dataShift>4</dataShift></registerParam></registerConfig>

总结

mm-camera架构成熟 对hwMask有进行处理
如果需要处理hwMask,思路就是对照mm-camera 打patch
马达还是那个马达 工作流程没有变

http://www.lryc.cn/news/65536.html

相关文章:

  • 【无人机】无人机平台的非移动 GPS 干扰器进行位置估计的多种传感器融合算法的性能分析(Matlab代码实现)
  • 一篇文章搞定《RecyclerView缓存复用机制》
  • Elasticsearch概述
  • 停车场收费系统
  • nodejs+vue+elementui学生毕业生离校系统
  • 儿童用灯哪个品牌好?推荐专业的儿童护眼台灯
  • 探究Android插件化开发的新思路——Shadow插件化框架
  • SimpleDateFormat和DateTimeFormatter的区别及使用详解
  • 边缘人工智能——nanodet模型实践指引,从标注数据集到实现部署文件
  • SASS的用法指南
  • MCSM面板一键搭建我的世界服务器-外网远程联机【内网穿透】
  • ( 数组和矩阵) 565. 数组嵌套 ——【Leetcode每日一题】
  • linux内核网络子系统初探---概述
  • java版工程项目管理系统源代码-功能清单 图文解析
  • 【chapter30】【PyTorch】[动量与学习率衰减】
  • 【键入网址到网页显示】
  • Nacos配置中心、配置热更新、及配置共享的记录
  • MATLAB | 绘图复刻(八) | 堆叠柱状图+哑铃图
  • Scala之集合(2)
  • 【图像分割】视觉大模型SEEM(Segment Everything Everywhere All at Once)原理解读
  • Linux: command: ibstat; infiniband
  • UML简介与类图详解
  • 【每日一题】1994.好子集的数目
  • 坚持伙伴优先,共创数据存储新生态
  • 树形结构的三级分类如何实现?
  • SSM整合完整流程
  • 虹科方案 | 助力高性能视频存储解决方案-2
  • java版深圳 工程管理系统软件 自主研发,工程行业适用 软件源码
  • 云原生Istio架构和组件介绍
  • 吹爆,全网第一个手把手教你从零开始搭建Spring Cloud Alibaba的笔记