QUICK 调试camera-xml解析

news2025/1/16 0:28:06

本文主要介绍如何在QUICK QCS6490使能相机模组。QCS6490的相机基于CameraX的框架,只需通过配置XML文件,设置相机模组的相关参数,就可以点亮相机。本文主要介绍Camera Sensor Module XML和Camera Sensor XML配置的解析,这中间需要camera的datasheet,查看对应的一些规格和参数。

Camera Sensor Module XML解析:

如下是调试imx219的module XML

      <cameraId>0</cameraId>  // cameraId与slot id一致,或者说与dts中的cell-index一致

      <moduleName>sunny</moduleName> //模组厂商名字

      <sensorName>imx219</sensorName>  //sensor名称

      <eepromName></eepromName>  //eeprom名称

      <actuatorName></actuatorName> //马达名称

      <flashName>pmic</flashName>  //flash名称

      <chromatixName>default_c7project</chromatixName> //bin文件名称

      <position>REAR</position> //模组位置,如前摄后摄

      <CSIInfo description="CSI Information"> //CSI 信息,如lane分配,combo模式等

          <laneAssign>0x10</laneAssign>

          <isComboMode>0</isComboMode>

      </CSIInfo>

      <lensInfo description="Lens Information">  //镜头的参数设置

        <focalLength>4.28</focalLength> //焦距

        <fNumber>1.79</fNumber> //光圈

        <minFocusDistance>0.08</minFocusDistance> //最小焦距

        <maxFocusDistance>2.0</maxFocusDistance> //最大焦距

        <horizontalViewAngle>66.3</horizontalViewAngle> //水平视角

        <verticalViewAngle>52.4</verticalViewAngle> //垂直视角

        <maxRollDegree>360</maxRollDegree> //翻滚角

        <maxPitchDegree>360</maxPitchDegree> //俯仰角

        <maxYawDegree>360</maxYawDegree> //偏航角

参数名称

说明

cameraId

0

cameraIdslot id一致,或者说与dts中的cell-index一致

moduleName

sunny

模组厂商名字

sensorName

imx219

sensor名称

eepromName

eeprom名称

actuatorName

马达名称

flashName

pmic

flash名称

chromatixName

default_c7project

bin文件名称

position

REAR

模组位置,如前摄后摄

CSIInfo

CSI 信息,如lane分配,combo模式等

- laneAssign

0x10

lane分配

- isComboMode

0

是否为combo模式,0表示否

lensInfo

镜头的参数设置

- focalLength

4.28

焦距

- fNumber

1.79

光圈

- minFocusDistance

0.08

最小焦距

- maxFocusDistance

2.0

最大焦距

- horizontalViewAngle

66.3

水平视角

- verticalViewAngle

52.4

垂直视角

- maxRollDegree

360

翻滚角

- maxPitchDegree

360

俯仰角

- maxYawDegree

360

偏航角

Camera Sensor XML解析

以下是从设备配置,包含型号,I2C,sensorID,上下电时序

<slaveInfo>

    <sensorName>imx219</sensorName> //sensor型号

    <slaveAddress>0x20</slaveAddress> //i2c地址

<regAddrType range="[1,4]">2</regAddrType> //地址类型

1 = Byte address 2 = Word address 3 = 3 byte address 4 = Address type max

<regDataType range="[1,4]">2</regDataType>//地址数据

1 = Byte data 2 = Word data 3 = Double word data 4 = Data type max

    <sensorIdRegAddr>0x0000</sensorIdRegAddr>  // sensor id 寄存器地址

    <sensorId>0x0219</sensorId> // sensor id

    <sensorIdMask>0xFFFFFFFF</sensorIdMask> //sensor id的掩码,如:0xFFFFFFFF    <i2cFrequencyMode>FAST</i2cFrequencyMode> //I2C的操作模式,FAST

    <powerUpSequence> //上电时序

      <powerSetting> //电源配置

        <configType>RESET</configType> //电源配置属性,如RESET,MCLK,VANA,VDIG等

        <configValue>0</configValue> //电源配置数值

        <delayMs>1</delayMs>    //延时

      </powerSetting>

      <powerSetting>

        <configType>RESET</configType>

        <configValue>1</configValue>

        <delayMs>500</delayMs>

      </powerSetting>

    </powerUpSequence>

    <powerDownSequence> //下电时序

      <powerSetting>

        <configType>RESET</configType>

        <configValue>0</configValue>

        <delayMs>1</delayMs>

      </powerSetting>

    </powerDownSequence>

  </slaveInfo>

寄存器信息节点包含各种传感器特征的配置寄存器地址,如

<regAddrInfo>

    <xOutput>0x016C</xOutput> //sensor x寄存器

    <yOutput>0x016E</yOutput>//sensor y寄存器

    <frameLengthLines>0x0160</frameLengthLines> //height + VBlank寄存器

    <lineLengthPixelClock>0x0162</lineLengthPixelClock>// width + HBlank寄存器

    <coarseIntgTimeAddr>0x015A</coarseIntgTimeAddr>  //sensor 曝光寄存器

    <shortCoarseIntgTimeAddr>0x015A</shortCoarseIntgTimeAddr>// sensor 短曝光寄存器

    <globalGainAddr>0x0157</globalGainAddr> // gain寄存器

    <shortGlobalGainAddr>0x0157</shortGlobalGainAddr>//短gain寄存器

    <digitalGlobalGainAddr>0x0158</digitalGlobalGainAddr> //数字gain寄存器

    <testPatternRAddr>0x0602</testPatternRAddr> // R通道测试寄存器

    <testPatternGRAddr>0x0604</testPatternGRAddr>// G通道测试寄存器

    <testPatternBAddr>0x0608</testPatternBAddr> // B通道测试寄存器

    <testPatternGBAddr>0x0606</testPatternGBAddr> // Gb通道测试寄存器

  </regAddrInfo>

参数名称

说明

sensorName

imx219

sensor型号

slaveAddress

0x20

i2c地址

regAddrType

2

地址类型

1 = Byte address

2 = Word address

3 = 3 byte address

4 = Address type max

regDataType

2

地址数据

1 = Byte data

2 = Word data

3 = Double word data

4 = Data type max

sensorIdRegAddr

0x0000

sensor id 寄存器地址

sensorId

0x0219

sensor id

sensorIdMask

0xFFFFFFFF

sensor id的掩码

i2cFrequencyMode

FAST

I2C的操作模式

powerUpSequence

上电时序

- powerSetting

电源配置

- configType

RESET

电源配置属性

- configValue

0

电源配置数值

- delayMs

1

延时

- powerSetting

- configType

RESET

- configValue

1

- delayMs

500

powerDownSequence

下电时序

- powerSetting

电源配置

- configType

RESET

电源配置属性

- configValue

0

电源配置数值

- delayMs

1

延时

从sensor的datasheet中可以找到以下对应的寄存器

以下为分辨率设置的一些参数,可以设置为多种配置,下面为HD 30fps配置

<resolutionData>

      <colorFilterArrangement>BAYER_RGGB</colorFilterArrangement> //色彩滤波阵列

      <streamInfo>

        <streamConfiguration> //stream配置

          <vc range="[0,3]">0</vc> //虚拟通道

          <dt>0X2b</dt> //数据类型 默认为0x2B (10 bit RAW)

          <frameDimension> //指定框架尺寸

            <xStart>681</xStart> //x坐标

            <yStart>693</yStart> //y 坐标

            <width>1920</width> //宽

            <height>1080</height> //高

          </frameDimension>

          <bitWidth>10</bitWidth> //位宽

          <type>IMAGE</type>  //数据类型

        </streamConfiguration>

      </streamInfo>

      <lineLengthPixelClock>2599</lineLengthPixelClock> //指定帧的像素时钟width + HBlank

      <frameLengthLines>1771</frameLengthLines> //帧长height + VBlank

      <minHorizontalBlanking>0</minHorizontalBlanking> //像素的最小水平间隔

      <minVerticalBlanking>0</minVerticalBlanking> //像素的最小垂直间隔

      <outputPixelClock>182400000</outputPixelClock> //输出像素clock

      <horizontalBinning>1</horizontalBinning>  //水平合并值

      <verticalBinning>1</verticalBinning> //垂直合并值

      <frameRate>30.01</frameRate> //帧率

      <laneCount>2</laneCount> //lane 数量

      <downScaleFactor>1.0</downScaleFactor> //缩小系数,理论上设置为1或者更大

      <settleTimeNs>14</settleTimeNs> //稳定时间,camera与板子传输时间,接收端能稳定接收数据

      <is3Phase>0</is3Phase> //1为CPHY, 0为DPHY

参数名称

说明

colorFilterArrangement

BAYER_RGGB

色彩滤波阵列

streamInfo

- streamConfiguration

stream配置

- vc

0

虚拟通道

- dt

0X2b

数据类型,默认为0x2B (10 bit RAW)

- frameDimension

指定框架尺寸

- xStart

681

x坐标

- yStart

693

y坐标

- width

1920

- height

1080

- bitWidth

10

位宽

- type

IMAGE

数据类型

lineLengthPixelClock

2599

指定帧的像素时钟 (width + HBlank)

frameLengthLines

1771

帧长 (height + VBlank)

minHorizontalBlanking

0

像素的最小水平间隔

minVerticalBlanking

0

像素的最小垂直间隔

outputPixelClock

182400000

输出像素时钟

horizontalBinning

1

水平合并值

verticalBinning

1

垂直合并值

frameRate

30.01

帧率

laneCount

2

lane数量

downScaleFactor

1.0

缩小系数,理论上设置为1或者更大

settleTimeNs

14

稳定时间,camera与板子传输时间,接收端能稳定接收数据

is3Phase

0

1CPHY, 0DPHY

以下是按照上述分辨率的参数,如下寄存器配置:

如下是设置寄存器前,需要设置如下权限,才能访问其他寄存器

<resSettings>

      <regSetting>

        <registerAddr>0x30EB</registerAddr> //sensor寄存器地址

        <registerData>0x05</registerData>   //sensor寄存器值

        <regAddrType range="[1,4]">2</regAddrType> //地址类型

        <regDataType range="[1,4]">1</regDataType> //数据类型

        <operation>WRITE</operation>  //读写操作

        <delayUs>0x00</delayUs> //延时

      </regSetting>

      <regSetting>

        <registerAddr>0x30EB</registerAddr>

        <registerData>0x0C</registerData>

        <regAddrType range="[1,4]">2</regAddrType>

        <regDataType range="[1,4]">1</regDataType>

        <operation>WRITE</operation>

        <delayUs>0x00</delayUs>

      </regSetting>

      <regSetting>

        <registerAddr>0x300A</registerAddr>

        <registerData>0xFF</registerData>

        <regAddrType range="[1,4]">2</regAddrType>

        <regDataType range="[1,4]">1</regDataType>

        <operation>WRITE</operation>

        <delayUs>0x00</delayUs>

      </regSetting>

      <regSetting>

        <registerAddr>0x300B</registerAddr>

        <registerData>0xFF</registerData>

        <regAddrType range="[1,4]">2</regAddrType>

        <regDataType range="[1,4]">1</regDataType>

        <operation>WRITE</operation>

        <delayUs>0x00</delayUs>

      </regSetting>

      <regSetting>

        <registerAddr>0x30EB</registerAddr>

        <registerData>0x05</registerData>

        <regAddrType range="[1,4]">2</regAddrType>

        <regDataType range="[1,4]">1</regDataType>

        <operation>WRITE</operation>

        <delayUs>0x00</delayUs>

      </regSetting>

      <regSetting>

        <registerAddr>0x30EB</registerAddr>

        <registerData>0x09</registerData>

        <regAddrType range="[1,4]">2</regAddrType>

        <regDataType range="[1,4]">1</regDataType>

        <operation>WRITE</operation>

        <delayUs>0x00</delayUs>

      </regSetting>

sensor寄存器值

Register Data

地址类型

数据类型

读写操作

延时(us)

0x30EB

0x05

2

1

WRITE

0x00

0x30EB

0x0C

2

1

WRITE

0x00

0x300A

0xFF

2

1

WRITE

0x00

0x300B

0xFF

2

1

WRITE

0x00

0x30EB

0x05

2

1

WRITE

0x00

0x30EB

0x09

2

1

WRITE

0x00

可以从datasheet上找到对应的信息,要操作0x3000-0x5FFF的寄存器,需要先设置如下寄存器

后续就开始设置对应寄存器参数,如:

      <regSetting>

          <registerAddr>0x0114</registerAddr> <!-- D-Phy, 2-lanes -->

          <registerData>0x01</registerData>

          <regAddrType range="[1,4]">2</regAddrType>

          <regDataType range="[1,4]">1</regDataType>

          <operation>WRITE</operation>

          <delayUs>0x00</delayUs>

      </regSetting>

      <regSetting>

          <registerAddr>0x0128</registerAddr>

          <registerData>0x00</registerData>

          <regAddrType range="[1,4]">2</regAddrType>

          <regDataType range="[1,4]">1</regDataType>

          <operation>WRITE</operation>

          <delayUs>0x00</delayUs>

      </regSetting>

      <regSetting>

          <registerAddr>0x012A</registerAddr>  <!-- 24 MHz INCK  -->

          <registerData>0x18</registerData>

          <regAddrType range="[1,4]">2</regAddrType>

          <regDataType range="[1,4]">1</regDataType>

          <operation>WRITE</operation>

          <delayUs>0x00</delayUs>

      </regSetting>

      <regSetting>

          <registerAddr>0x012B</registerAddr>

          <registerData>0x00</registerData>

          <regAddrType range="[1,4]">2</regAddrType>

          <regDataType range="[1,4]">1</regDataType>

          <operation>WRITE</operation>

          <delayUs>0x00</delayUs>

      </regSetting>

Register Address

Register Data

Address Type

Data Type

Operation

Delay (us)

0x0114

0x01

2

1

WRITE

0x00

0x0128

0x00

2

1

WRITE

0x00

0x012A

0x18

2

1

WRITE

0x00

0x012B

0x00

2

1

WRITE

0x00

以下为datasheet里面的寄存器列表:

以上就是camera xml参数的一个解析,如需要集成或者调试其他camera sensor,可以参照如上配置去参照datasheet调试camera。

作者:

戴忠忠(Zhongzhong Dai),高通工程师

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2250714.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ArcGIS 软件中路网数据的制作

内容导读 路网数据是进行网络分析的基础&#xff0c;它是建立网络数据集的数据来源。 本文我们以OSM路网数据为例&#xff0c;详细介绍OSM路网数据从下载&#xff0c;到数据处理&#xff0c;添加属性&#xff0c;完成符合网络分析的网络数据集的全部过程。 01 数据获取 比较…

Flink双流Join

在离线 Hive 中&#xff0c;我们经常会使用 Join 进行多表关联。那么在实时中我们应该如何实现两条流的 Join 呢&#xff1f;Flink DataStream API 为我们提供了3个算子来实现双流 join&#xff0c;分别是&#xff1a; join coGroup intervalJoin 下面我们分别详细看一下这…

【Python-Open3D学习笔记】005Mesh相关方法

TriangleMesh相关方法 文章目录 TriangleMesh相关方法1. 查看mesh三角形面信息2. 可视化三角形3. 上采样4. 计算mesh形成的面积和体积 1. 查看mesh三角形面信息 def view_hull_triangles(hull: o3d.geometry.TriangleMesh):"""查看mesh三角形面信息&#xff08…

【LeetCode热题100】优先级队列

这盘博客记录了关于优先级队列的几道题&#xff0c;包括最后一块石头的重量、数据流中的第K大元素、前K个高频单词、数据流的中位数。 class Solution { public:int lastStoneWeight(vector<int>& stones) {priority_queue<int> heap;for(auto s : stones) hea…

node.js基础学习-cheerio模块-简单小爬虫(五)

学习cheerio模块&#xff0c;简单做一个爬取图片网站的图片&#xff0c;并且将这些图片下载到本地指定的文件夹下&#xff0c;很多图片网站都有一些反爬取的机制&#xff0c;找的好几个都会报302错误&#xff0c;所以我找了一个小的图片网站&#xff0c;这个没有反爬取机制&…

技术创新与人才培养并重 软通动力子公司鸿湖万联亮相OpenHarmony人才生态大会

11月27日&#xff0c;由开放原子开源基金会指导&#xff0c;OpenHarmony项目群工作委员会主办的OpenHarmony人才生态大会2024在武汉隆重举办。软通动力子公司鸿湖万联作为OpenHarmony项目群A类捐赠人应邀出席。大会期间&#xff0c;鸿湖万联不仅深度参与了OpenHarmony人才生态年…

FFmpeg 推流给 FreeSWITCH

FFmpeg 推流&#xff0c;貌似不难&#xff0c;网上有很多资料, 接到一个任务&#xff0c;推流给 FreeSWITCH&#xff0c;最开始以为很容易&#xff0c; 实则不然&#xff0c;FreeSWITCH uuid_debug_media <uuid>&#xff0c; 一直没人任何反应 仔细一查&#xff0c;Fr…

彻底理解quadtree四叉树、Octree八叉树 —— 点云的空间划分的标准做法

1.参考文章&#xff1a; &#xff08;1&#xff09;https://www.zhihu.com/question/25111128 这里面的第一个回答&#xff0c;有一幅图&#xff1a; 只要理解的四叉树的构建&#xff0c;对于八叉树的构建原理类比方法完全一样&#xff1a;对于二维平面内的随机分布的这些点&…

【工具变量】上市公司企业数字化转型指数(甄红线版本,战略引领、技术驱动、环境支撑、数字化成果及应用)2011-2022年

一、测算方式&#xff1a;参考《经济研究》甄红线&#xff08;2023&#xff09;老师研究的做法&#xff0c;本文采用 &#xff23;&#xff33;&#xff2d;&#xff21;&#xff32; 数据库中国上市公司数字化转型研究数据库中企业数字化转型指数来衡量企业数字化转型水平。 数…

长短期记忆网络 (LSTM) 简介

文章目录 一、说明二、传统 RNN 的问题三、为什么梯度消失&#xff1f;四、长短期记忆网络简介五、忘记门六、Update Gate (Input Gate)七、Output Gate八、数学上的内存九、从 LSTM 到 Transformer十、总结 一、说明 机器学习取得进步的领域之一是自然语言处理。对于用于机器…

安卓悬浮窗应用外无法穿透事件问题

现象&#xff1a; 应用内悬浮窗如何设置了 WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE在自己应用内事件穿透正常&#xff0c;但到应用外就无法点击。 原因&#xff1a; 解决方法&#xff1a; layoutParams.alpha 0.8f …

linux minio安装

安装minio&#xff08;Centos&#xff09; 1. 查看服务器版本uname -a 2. 到minio官网下载对应的版本 官网地址&#xff1a;minio官网下载 根据上面查看的信息是x86_64系统所以我们下载linu-amd64 3. 上传到服务器 新建minioServer目录 上传至该目录下 赋权 chmod x mi…

JavaScript字符串

这张图片主要介绍了JavaScript中的字符串类型&#xff08;string&#xff09;。 字符串 1. 字符串的定义 在JavaScript中&#xff0c;通过单引号&#xff08;&#xff09;、双引号&#xff08;"&#xff09;或反引号&#xff08;&#xff09;包裹的数据都叫字符串。单引…

Linq中的投影运算 (C#):Select、SelectMany、Zip

投影是指将对象转换为一种新形式的操作&#xff0c;该形式通常只包含那些将随后使用的属性。 通过使用投影&#xff0c;您可以构造从每个对象生成的新类型。 可以投影属性&#xff0c;并对该属性执行数学函数。 还可以在不更改原始对象的情况下投影该对象。 1、Select 下面的…

RabbitMQ在手动消费的模式下设置失败重新投递策略

最近在写RabbitMQ的消费者&#xff0c;因为业务需求&#xff0c;希望失败后重试一定次数&#xff0c;超过之后就不处理了&#xff0c;或者放入死信队列。我这里就达到重试次数后就不处理了。本来以为很简单的&#xff0c;问了kimi&#xff0c;按它的方法配置之后&#xff0c;发…

Maven install java heap space

Maven install java heap space 打包报错 Maven install java heap space 解决&#xff1a; vm option: -Xms1024m -Xmx1024m如果 vm配置了&#xff0c;还是一样报错&#xff0c;就重新选择JRE看看是否正确&#xff0c;idea会默认自己的环境&#xff0c;导致设置vm无效&…

OpenCV_Code_LOG

孔洞填充 void fillHole(const Mat srcBw, Mat &dstBw) {Size m_Size srcBw.size();Mat TempMat::zeros(m_Size.height2,m_Size.width2,srcBw.type());//延展图像srcBw.copyTo(Temp(Range(1, m_Size.height 1), Range(1, m_Size.width 1)));cv::floodFill(Temp, Point(…

C7.5【x86汇编】底层分析范围for的执行过程

目录 1.反汇编代码 2.分析 1.栈区初始化 2.设置数组元素的值 3. 逐条分析范围for 1.arr的地址被放到[ebp-2Ch]处 2.[ebp-2Ch]指向的值被复制一份到[ebp-30h]处 3.eax暂存[ebp-2Ch]指向的值,加28h后存储到[ebp-34h]处 4.跳转指令 5.比较[ebp-30h]和[ebp-34h]指向的值,…

hue 4.11容器化部署,已结合Hive与Hadoop

配合《Hue 部署过程中的报错处理》食用更佳 官方配置说明页面&#xff1a; https://docs.gethue.com/administrator/configuration/connectors/ 官方配置hue.ini页面 https://github.com/cloudera/hue/blob/master/desktop/conf.dist/hue.ini docker部署 注意&#xff1a; …