QUICK 调试camera-xml解析

本文主要介绍如何在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.mzph.cn/pingmian/62009.shtml

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

相关文章

数据结构 (11)串的基本概念

一、串的定义 1.串是由一个或者多个字符组成的有限序列&#xff0c;一般记为&#xff1a;sa1a2…an&#xff08;n≥0&#xff09;。其中&#xff0c;s是串的名称&#xff0c;用单括号括起来的字符序列是串的值&#xff1b;ai&#xff08;1≤i≤n&#xff09;可以是字母、数字或…

汽车渲染领域:Blender 和 UE5 哪款更适用?两者区别?

在汽车渲染领域&#xff0c;选择合适的工具对于实现高质量的视觉效果至关重要。Blender和UE5&#xff08;Unreal Engine 5&#xff09;作为两大主流3D软件&#xff0c;各自在渲染动画方面有着显著的差异。本文将从核心定位与用途、工作流程、渲染技术和灵活性、后期处理与合成四…

开源加密库mbedtls及其Windows编译库

目录 1 项目简介 2 功能特性 3 性能优势 4 平台兼容性 5 应用场景 6 特点 7 Windows编译 8 编译静态库及其测试示例下载 1 项目简介 Mbed TLS是一个由ARM Maintained的开源项目&#xff0c;它提供了一个轻量级的加密库&#xff0c;适用于嵌入式系统和物联网设备。这个项…

C语言数据结构——详细讲解 双链表

从单链表到双链表&#xff1a;数据结构的演进与优化 前言一、单链表回顾二、单链表的局限性三、什么是双链表四、双链表的优势1.双向遍历2.不带头双链表的用途3.带头双链表的用途 五、双链表的操作双链表的插入操作&#xff08;一&#xff09;双链表的尾插操作&#xff08;二&a…

MYSQL 表的增删改查(上)

目录 1.新增数据 2.查询数据 一般查询 去重查询 排序查询 关于NULL 条件查询 分页查询 1.新增数据 语法&#xff1a;insert into 表名[(字段1&#xff0c;字段2...)] values (值&#xff0c;值....); 插入一条新数据行&#xff0c;前面指定的列&#xff0c;要与后面v…

Docker pull镜像拉取失败

因为一些原因&#xff0c;很多镜像仓库拉取镜像失败&#xff0c;所以需要更换不同的镜像&#xff0c;这是2024/11/25测试可用的仓库。 标题1、 更换镜像仓库的地址&#xff0c;编辑daemon.json文件 vi /etc/docker/daemon.json标题2、然后将下面的镜像源放进去或替换掉都可以…

C语言学习 12(指针学习1)

一.内存和地址 1.内存 在讲内存和地址之前&#xff0c;我们想有个⽣活中的案例&#xff1a; 假设有⼀栋宿舍楼&#xff0c;把你放在楼⾥&#xff0c;楼上有100个房间&#xff0c;但是房间没有编号&#xff0c;你的⼀个朋友来找你玩&#xff0c;如果想找到你&#xff0c;就得挨…

VITE+VUE3+TS环境搭建

前言&#xff08;与搭建项目无关&#xff09;&#xff1a; 可以安装一个node管理工具&#xff0c;比如nvm&#xff0c;这样可以顺畅的切换vue2和vue3项目&#xff0c;以免出现项目跑不起来的窘境。我使用的nvm&#xff0c;当前node 22.11.0 目录 搭建项目 添加状态管理库&…

Zookeeper选举算法与提案处理概览

共识算法(Consensus Algorithm) 共识算法即在分布式系统中节点达成共识的算法&#xff0c;提高系统在分布式环境下的容错性。 依据系统对故障组件的容错能力可分为&#xff1a; 崩溃容错协议(Crash Fault Tolerant, CFT) : 无恶意行为&#xff0c;如进程崩溃&#xff0c;只要…

ffmpeg视频滤镜:提取缩略图-framestep

滤镜描述 官网地址 > FFmpeg Filters Documentation 这个滤镜会间隔N帧抽取一帧图片&#xff0c;因此这个可以用于设置视频的缩略图。总体上这个滤镜比较简单。 滤镜使用 滤镜参数 framestep AVOptions:step <int> ..FV....... set frame st…

微服务篇-深入了解使用 RestTemplate 远程调用、Nacos 注册中心基本原理与使用、OpenFeign 的基本使用

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 认识微服务 1.1 单体架构 1.2 微服务 1.3 SpringCloud 框架 2.0 服务调用 2.1 RestTemplate 远程调用 3.0 服务注册和发现 3.1 注册中心原理 3.2 Nacos 注册中心 …

TCP/IP学习笔记

TCP\IP从实际应用的五层结构开始&#xff0c;自顶而下的去分析每一层。 TCP/IP五层架构概述 学术上面是TCP/IP四层架构&#xff0c;OSI/ISO是七层架构&#xff0c;实际中使用的是TCP/IP五层架构。 数据链路层 ICMP数据包分析 Wireshark抓包分析ICMP协议_wireshark抓ping包分析…

互联网视频推拉流EasyDSS视频直播点播平台视频转码有哪些技术特点和应用?

视频转码本质上是一个先解码再编码的过程。在转码过程中&#xff0c;原始视频码流首先被解码成原始图像数据&#xff0c;然后再根据目标编码标准、分辨率、帧率、码率等参数重新进行编码。这样&#xff0c;转换前后的码流可能遵循相同的视频编码标准&#xff0c;也可能不遵循。…

深入理解 Java 基本语法之运算符

&#xff08;一&#xff09;研究背景 在 Java 编程中&#xff0c;运算符是处理数据和变量的基本工具&#xff0c;掌握各种运算符的使用方法对于提高编程效率至关重要。 &#xff08;二&#xff09;研究目的 深入理解 Java 基础运算符的概念、分类和作用&#xff0c;通过具体…

Excel把其中一张工作表导出成一个新的文件

excel导出一张工作表 一个Excel表里有多个工作表&#xff0c;怎么才能导出一个工作表&#xff0c;让其生成新的Excel文件呢&#xff1f; 第一步&#xff1a;首先打开Excel表格&#xff0c;然后选择要导出的工作表的名字&#xff0c;比如“Sheet1”&#xff0c;把鼠标放到“She…

ArcGIS pro中的回归分析浅析(加更)关于广义线性回归工具的补充内容

在回归分析浅析中篇的文章中&#xff0c; 有人问了一个问题&#xff1a; 案例里的calls数据貌似离散&#xff0c;更符合泊松模型&#xff0c;为啥不采用泊松而采用高斯呢&#xff1f; 确实&#xff0c;在中篇中写道&#xff1a; 在这个例子中我们为了更好地解释变量&#x…

计算机网络 第4章 网络层

计算机网络 &#xff08;第八版&#xff09;谢希仁 第 4 章 网络层4.2.2 IP地址**无分类编址CIDR**IP地址的特点 4.2.3 IP地址与MAC地址4.2.4 ARP 地址解析协议4.2.5 IP数据报的格式题目2&#xff1a;IP数据报分片与重组题目&#xff1a;计算IP数据报的首部校验和(不正确未改) …

极狐GitLab 17.6 正式发布几十项与 DevSecOps 相关的功能【三】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…

直接抄作业!Air780E模组LuatOS开发:位运算(bit)示例

在嵌入式开发中&#xff0c;位运算是一种高效且常用的操作技巧。本文将介绍如何使用Air780E模组和LuatOS进行位运算&#xff0c;并通过示例代码帮助读者快速上手。 一、位运算概述 位运算是一种在计算机系统中对二进制数位进行操作的运算。由于计算机内部数据的存储和处理都是…

学习threejs,使用设置lightMap光照贴图创建阴影效果

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.MeshLambertMaterial…