sensor配置项解释

2023-05-16

// 主要介绍 sensor 的配置项
json 里面的 data 类型 都是 10进制的…

以 a+g sensor 介绍
所有平台特定的配置文件在 JSON 文件顶层均包含“config”组
json 开头的  就是 config 组
在这里插入图片描述这里 可以看到硬件平台 和 soc_id
这两个东西 是怎么确定的呢…
可以用 adb 读取 , 操作如下:

hw_platform:cat /sys/devices/soc0/hw_platform
soc_id:cat /sys/devices/soc0/soc_id

在 config 组后,驱动程序的所有平台配置均包含在名为 <sensor_name>_<hardware_id>_platform 的顶层
组中
可以看到 是有这个个 组的.

在这里插入图片描述

但是 除了这个之外,我们还看到了有个类似这样的,这个是自己客制化的??稍后解答( 是的,这个就是 驱动的 特定的配置,在后面会讲 )

在这里插入图片描述

必须将标为必填的注册表项填入传感器配置文件。如果标为可选的项目不适用于传感器,可以不填入传感器配置文件. 关于哪些是必填的哪些不是。要参考高通的文档,才能知道.

配置文件可包含 data_type 特定的注册表子组(例如加速度)。该子组包含出厂校准参数等数据类型特定的平台配置

// 上面看到的是平台的配置,除了这个,我们还有些特定的配置
驱动程序特定的配置:


注册表组/项目包含驱动程序特定的配置
所有驱动程序特定的配置文件在 JSON 文件顶层均包含“config”组
所有配置均包含在顶层 <sensor_name>_<hardware_id> 注册表组中
配置文件包含 data_type 特定注册表组(例如加速度),该组包含数据类型特定的配置。
自定义注册表
所有传感器均可将自定义注册表组/项目添加至驱动程序特定的配置文件中,以满足传感器/算法运算针对持久性数据的所有自定义要求

这个就是 自定义的 注册表…
名字就是 sensor_name_hardware_id
在这里插入图片描述json 的配置 主要分为三部分
1:顶层  config
2: 平台 注册表的配置
3:特定的注册表配置( 可以理解为 客制化)

// 平台 注册表的配置 begin ----------------------------------
我们先看 config 注册表子组

在这里插入图片描述这个具体的配置项  见高通手册

在这里插入图片描述大概的解释下:

“bus_type”:{ “type”: “int”, “ver”: “0”,
“data”: “3”

首先看到 type:int . 说明填入的数据是 int 类型.
ver:0 , 版本号,表示的这个版本是0
如果我们通过 adb push json 文件,如果不删除解析出来的 json 文件,将不会生效,生效的依据就是根据版本号,只有版本号大于之前的才会生效。
如果 persist 分区为空或者 文件的修改时间变了,然后在依据 ver 这个版本号决定那个要重新解析.

data: 是我们要填入的.
如果我们的项目使用的是 i3c ,则 data: 3
在这里插入图片描述bus_instance: 干啥的?
指的是 bus 使用的 哪个 QUP.

"bus_instance":{ "type": "int", "ver": "0",
        "data": "1"

slave_config :
对于 I2C 和 I3C 而言,该项目是从芯片地址。对于 SPI,该项目是从设备的
片选线路
7位地址…

"slave_config":{ "type": "int", "ver": "0",
         "data": "107"
       },

这三个 可以参考博客:

https://blog.csdn.net/mjfh095215/article/details/113932106

该项目标识 COM 总线时钟速度,单位为 kHz。

 "min_bus_speed_khz":{ "type": "int", "ver": "0",
         "data": "400"
       },
       "max_bus_speed_khz":{ "type": "int", "ver": "0",
         "data": "12500"
       },

reg_addr_type :该项目标识传感器支持的注册表地址类型。参见 sns_com_port_types.h。
寄存器的地址类型,(寄存器的地址长度,lsm6dso 长度基本都是  8位.,所以这个设置为 8 bit )
有这么几种。。

typedef enum
{
  SNS_REG_ADDR_8_BIT,
  SNS_REG_ADDR_16_BIT,
  SNS_REG_ADDR_32_BIT,
  /* Additional register types will be added here. */
} sns_reg_addr_type;

一般都是  8位寄存器吧…

但是具体用那种怎么看??暂时不知道这个怎么填写…???
/*
2022年11月19日16:23:56 补充:
这个是要看 芯片手册的,取决于 器件的寄存器的长度,一般都是8位.
*/

"reg_addr_type":{ "type": "int", "ver": "0",
         "data": "0"
       },

dri_irq_num:
data: 指的就是中断号
接下来是 中断引脚的配置。
如果是轮询模式, 就不需要设置了.

"dri_irq_num":{ "type": "int", "ver": "0",
         "data": "123"
       },
  
/*
    中断引脚,是否要进行设置 ???  比如 上拉,下来 这种...??     
   irq_pull_type 中断  gpio的状态
		0:no pull 
		1:pull down 
		2: keep 
		3: pull up 
*/   
"irq_pull_type":{ "type": "int", "ver": "0",
         "data": "0"
       },
/*
 irq_is_chip_pin :是否使用 dri_irq_num 
 设置为 1,表示的是 支持 dri interrupt 
*/
"irq_is_chip_pin":{ "type": "int", "ver": "0",
         "data": "1"
       },
  /*
驱动能力
*/     
"irq_drive_strength":{ "type": "int", "ver": "0",
         "data": "0"
       },

/*
如果传感器使用 dri_irq_num,该项目标识 irq 触发类型。参见 sns_interrupt.proto
中断触发方式:
Trigger type rising edge :0
Trigger type falling edge: 1
....
*/
"irq_trigger_type":{ "type": "int", "ver": "0",
         "data": "3"
       },

// ------------------------------

/*
该项目提供连接传感器的供电域数;包括 VDD 和 VDDIO 电源。
*/
"num_rail":{ "type": "int", "ver": "0",
         "data": "1"
       },

 /*
 该项目标识电源的启动状态(LPM 或 NPM)。有效值为来自 sns_pwr_rail_service.h 的
sns_power_rail_state 的枚举值 
好像也没有看懂 ???????????????????????????????????????
//  2022年11月19日16:25:18  补充
     rail_on_state :  
  1: 低功耗    SNS_RAIL_ON_LPM,
 2: 正常功耗 .  SNS_RAIL_ON_NPM
  g-sensor 设置为 1, 其他的设置为2
 */
   //  如果vdd和vddio一样这里是1    
 "rail_on_state":{ "type": "int", "ver": "0",
         "data": "2"
       },
  
 "vddio_rail":{ "type": "str", "ver": "0",
         "data": "/pmic/client/sensor_vddio"
       },  
 /*
 rigid_body_type :该项目提供关于传感器放置的刚性体信息。有效值来自 sns_std_sensor.proto 中的 sns_std_sensor_rigid_body_type

 */    
"rigid_body_type":{ "type": "int", "ver": "0",
         "data": "0"
       },
 

这两个数据手册上没有看到,猜测应该是自己添加的, 应该是 最大和最小的数据速率.
在这里插入图片描述// ---------------- config 注册表子组 完成
当然 平台 端还是有些注册表的子组的:

.placement
此项为注册表组。包括 12 个可解析为 (float[12]} 的浮点型注册表项:传感器元件在芯片框架中的位置和方
向。参见 sensors/1.0/types.h 中的 Android 定义 AINFO_SENSOR_PLACEMENT。
这些项目为:
“0”
.
.
“11”
这些数据怎么填的,不清楚。
在这里插入图片描述// 是在 设置 方向 .

".orient":{
      "owner": "lsm6dso",
      "x":{ "type": "str", "ver": "0",
        "data": "+x"
      },  
      "y":{ "type": "str", "ver": "0",
        "data": "+y"
      },  
      "z":{ "type": "str", "ver": "0",
        "data": "+z"
      }   
    },  

orient:解释
驱动程序将传感器轴向调整为芯片轴向(Android 坐标格式)
每个注册表项代表每条轴的方向信息,注册表项名称与芯片轴名称相同。
每个项目的数据类型为字符串,均为轴值与符号的组合。
值:
在这里插入图片描述
方向:
在这里插入图片描述

“.fac_cal” :
该项目是放置在数据类型特定注册表组中的注册表组。
示例:“.gyro”组包含的“.fac_cal”组中具有陀螺仪出厂校准参数。
该组中的项目为浮点型。有关每个 data_type 包含的这些项目的格式

在这里插入图片描述

// ok 平台端 已经完毕---------- end

// 驱动中的 特定的程序 ------ begin ------------
在这里插入图片描述首先 我们先看下 config 这个注册表子组

/*
 该项目标识传感器数据流基于中断(数据就绪、水印、运动等中断)或轮询。
 DRI 传感器使用数值 1。
 轮询传感器使用的值为 0。
 简单讲: 中断  就是 1
*/
"is_dri":{ "type": "int", "ver": "0",
          "data": "1"
        },
/*
该项目是传感器硬件的唯一标识符。通常用于区分同一硬件的多个传感器。
为了兼容...
*/
 "hw_id":{ "type": "int", "ver": "0",
          "data": "0"

/*
物理传感器通常支持多种分辨率(和相应范围)。传感器发布支持的分辨率组成的数组。该项目标识传感器 默认使用的分辨率,其为支持的分辨率数组中的索引。
这个不知道怎么样设置 
?????????????????????????????????????????????
*/

"res_idx":{ "type": "int", "ver": "0",
          "data": "3"
        },
/*
该项目标识传感器是否支持任何同步流处理模式,如 S4S、I3C 等。
*/              
"sync_stream":{ "type": "int", "ver": "0",
          "data": "0"


// 暂时写这么多,后续有时间继续补充,

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sensor配置项解释 的相关文章

随机推荐

  • 项目经验介绍的STAR法则--面试

    STAR法则 这几天面试其他人的时候 xff0c 找出来了这个STAR法则 xff0c 我一般也是这么去面试和引导面试者的 xff0c 分享出来 xff0c 供大家参考 什么是STAR法则 xff0c STAR 是SITUATION xff
  • 浮点数的二进制表示方法

    浮点数的二进制表示 Double型 xff0c 64位 例一 xff1a 已知 xff1a double类型38414 4 xff0c 求 xff1a 其对应的二进制表示 分析 xff1a double类型共计64位 xff0c 折合8字节
  • PHP解决http和https跨域,PHP解决HTTP和HTTPS跨域共享session的方法及代码实例

    HTTP HTTPS协议下跨域解决session共享的办法 xff0c 也许不是最好的 xff0c 但是比较实用 如下是具体的解决方案 阿里西西小编给您推荐这个PHP解决HTTP和HTTPS跨域共享session的方法及代码实例 xff0c
  • ucosii使用

    当需要同时跑多个任务的时候裸机显然不能很好的完成使命 xff0c 这个时候我们可以给单片机上系统 xff0c 创建多任务 xff0c 完成复杂逻辑 一 首先移植uocii在我们的板上 xff0c 根据mcu型号移植ucosii xff0c
  • QT以POST方法上传文件(文本、图片、excel文件等)

    最近项目需要用QT上传文件给HTTP服务器 之前服务器接收的数据格式都是json xff0c 这次是form data 经查找资料 xff0c 需要用到QHttpMultiPart和QHttpPart这两个类 xff0c 看QT的实例教程可
  • js数组删除元素

    var arr 61 39 a 39 39 b 39 39 c 39 若要删除其中的 39 b 39 有两种方法 xff1a 1 delete方法 delete arr 1 这种方式数组长度不变 此时arr 1 变为undefined了 但
  • 回调函数简单使用

    一 回调函数是什么 xff0c 我们为什么要用它 xff1f 回调函数就是一个通过函数指针调用的函数 如果你把函数的指针 xff08 地址 xff09 作为参数传递给另一个函数 xff0c 当这个指针被用来调用其所指向的函数时 xff0c
  • pwm控制电机原理

    首先我们要明白电机的原理 电机 简单来说就是 实现电能与机械能相互转换的电工设备 那么我们经常使用的直流电机原理就是 xff1a 电生磁 xff1a 通电导线会产生磁场 也就是电磁感应 旋转磁场带动转子转动 电动机是由定子和转子组成 xff
  • FLASH操作记录

    使用的单片机为GD403系列 xff0c 要操作的数据flash地址位于bank1 xff0c 最小操作单位为一页 xff0c 即4k 下面程序演示操作一页中部分内存空间 span class token macro property sp
  • MCU启动异常分析记录

    一 问题背景 量产的产品在品质抽检中出现设备概率无法正常使用的问题 xff0c 经过初步定位确定是MCU上电未正常启动 二 问题分析以及定位 在产品中考虑到MCU程序升级 RF SUB 1G升级 xff0c NB IOT等无线升级方法 xf
  • u-BOOT启动流程

    1 u boot入口 xff1a 入口即第一行程序 xff0c 程序的链接是由链接脚本决定的 xff0c 编译uboot之后 xff0c 可以在根目录下生成u boot lds文件 打开lds文件可以看到代码当前入口点 xff1a xff1
  • qt字符串与字符串数组操作

    QString定义 QString s1 61 abc QString s2 hello 字符串连接 QString s 61 s1 43 s2 组包 s 61 QString a 61 1 b 61 2 c 61 3 arg 250 ar
  • QT中16进制二进制字符串的转换

    最近使用串口通信操作nfc卡的扇区内的内容设及到了很多数据类型之间的转换 xff0c 今天总结一下 1 10进制16进制字符串相互显示 10 gt 16 int a 61 10 Qstring b 61 QString 34 1 34 ar
  • 使用vs安装qt插件过程中遇到的问题

    一直在用qtcreater开发程序 最近安装了vs2017 xff0c 想着慢慢改用vs xff0c 毕竟功能强大嘛 按照网上大神的教程安装qt vs tools 过程中遇到了 qt in the given path was built
  • verilog基础语法 {}

    1 的作用 xff1f 起拼接的作用 如 a 61 b 5 b 4 0 意思为 b的最高位和b的低五位拼接起来 xff0c 组成的a为6位 2 数字表达式 4 d15 4 xff1a 代表位宽 d xff1a 代表进制 15 xff1a 代
  • 从程序员的角度,来拆解物联网系统中的开发工作

    物联网的概念已经被炒了好多年了 xff0c 奇怪的是 xff1a 市场中对这个概念的反应总是不愠不火 随着5G 的迅速普及 xff0c 不知道是否能够再次把这个领域带火起来 但是不管怎样 xff0c 很多大学已经把物联网这个专业给坐实了 前
  • amixer命令用于设置系统音量

    该句为 c选择0的声卡 xff08 貌似 xff09 xff0c PCMvolume设置为增加60 2 61 120 xff08 value值变为加上120 xff09 xff0c 60dB 就是减小60 2 61 120 xff0c 如果
  • jetson nano配置远程桌面连接

    一 jetson nano 远程桌面设置 默认jetson nano 的 Desktop Sharing是打不开的需要进行如下配置 xff1a 1 编辑org gnome Vino gschema xml文件 sudo vi span cl
  • 如何修改访问vnc服务器的密码,修改VNC访问的密码

    vncserver iptables I INPUT p tcp dport j ACCEPT 客户端方式 iptables I INPUT p tcp dport j ACCEPT 浏览器方式 vi root vnc xstartup 注
  • sensor配置项解释

    主要介绍 sensor 的配置项 json 里面的 data 类型 都是 10进制的 以 a 43 g sensor 介绍 所有平台特定的配置文件在 JSON 文件顶层均包含 config 组 json 开头的 就是 config 组 这里