sensor配置项解释

// 主要介绍 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"


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

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值