高通8926 smgr的attr概述

高通8926平台通过get和set attr来控制sensor,所有的attr由下面的enum列举。

typedef enum

{
    SNS_DDF_ATTRIB_POWER_INFO,
    SNS_DDF_ATTRIB_POWER_STATE,
    SNS_DDF_ATTRIB_DELAYS,
    SNS_DDF_ATTRIB_RANGE,
    SNS_DDF_ATTRIB_RESOLUTION_ADC,
    SNS_DDF_ATTRIB_RESOLUTION,
    SNS_DDF_ATTRIB_LOWPASS,
    SNS_DDF_ATTRIB_MOTION_DETECT,
    SNS_DDF_ATTRIB_DRIVER_INFO,
    SNS_DDF_ATTRIB_DEVICE_INFO,
    SNS_DDF_ATTRIB_THRESHOLD,
    SNS_DDF_ATTRIB_ACCURACY,
    SNS_DDF_ATTRIB_BIAS,
    SNS_DDF_ATTRIB_ODR,
    SNS_DDF_ATTRIB_SUPPORTED_ODR_LIST,
    SNS_DDF_ATTRIB_REGISTRY_GROUP,
    SNS_DDF_ATTRIB_IO_REGISTER,
    SNS_DDF_ATTRIB_FIFO,
    SNS_DDF_ATTRIB_ODR_TOLERANCE

} sns_ddf_attribute_e;


下面由本人结合代码简要说明,如有错误,请指正。


1. SNS_DDF_ATTRIB_POWER_STATE:
   每个驱动必备的,都是set,没有get;

2. SNS_DDF_ATTRIB_MOTION_DETECT:
   都是set,没有get;通过sns_smgr_set_hw_md_int()调用,这里只设置accel sensor,但gyro中也有对此attr的处理。
   设置中断相关寄存器。

3. SNS_DDF_ATTRIB_THRESHOLD:
  主要用于get光传感器和接近传感器的THRESHOLD

4. SNS_DDF_ATTRIB_ACCURACY:
  主要用于get光传感器和接近传感器的精确度。代码里2771的prox的accuracy是40,手册里没找到,不知怎么得到的

5. SNS_DDF_ATTRIB_SUPPORTED_ODR_LIST:
  sns_smgr_dd_init会调用sns_smgr_init_odr_tables来get device driver的odr list。

6. SNS_DDF_ATTRIB_REGISTRY_GROUP:
  多用于ALS/PROX初始化时,通过sns_ddf_smgr_notify_event(SNS_DDF_EVENT_UPDATE_REGISTRY_GROUP),更新nv

7. SNS_DDF_ATTRIB_ODR_TOLERANCE:
  只有accel lis3dsh的get attr中包含此attr,但实际没有地方进行get。

下面的属性以sns_dd_akm8975_get_attr为例:
1. SNS_DDF_ATTRIB_POWER_INFO:
  需要将sns_ddf_power_info_s结构体赋值,它包含active_current和lowpower_current俩个成员,查看datasheet的
  Electrical Characteristics-->>DC Characteristics-->>Current consumption

2. SNS_DDF_ATTRIB_RANGE:
  需要将sns_ddf_range_s结构体赋值,它包含min和max俩个成员,查看datasheet的
  Electrical Characteristics-->>Analog Circuit Characteristics-->>Magnetic sensor measurement range

3. SNS_DDF_ATTRIB_RESOLUTION_ADC:
  需要将sns_ddf_resolution_adc_s结构体赋值,它包含bit_len和max_freq俩个成员,
  bit_len:查看datasheet的Electrical Characteristics-->>Analog Circuit Characteristics-->>Measurement data output bit
  max_freq:根据代码中注释,他是驱动在bit_len下合适的最大频率。AKM8975是50,不知怎么算的???

4. SNS_DDF_ATTRIB_RESOLUTION:
  需要将sns_ddf_resolution_t类型变量赋值,它实际类型为q16_t,
  查看datasheet的Overview-->>Output data resolution:13 bit (0.3 μT / LSB),经公式FX_FLTTOFIX_Q16(0.3 * TESLA_TO_GAUSS / 1000000)转换

5. SNS_DDF_ATTRIB_DELAYS:
  需要将sns_ddf_delays_s结构体赋值,它包含time_to_active和time_to_data俩个成员,
  查看datasheet的Electrical Characteristics-->>Analog Circuit Characteristics-->>Time for measurement

6. SNS_DDF_ATTRIB_DRIVER_INFO:
  给sns_ddf_driver_info_s赋值

7. SNS_DDF_ATTRIB_DEVICE_INFO:
  给sns_ddf_device_info_s赋值

下面的属性以sns_dd_acc_bma2x2_get_attr为例:
1. SNS_DDF_ATTRIB_LOWPASS:
  需要将sns_ddf_lowpass_freq_t类型变量赋值,它实际类型为q16_t,
  查看datasheet的Table 8: Bandwidth configuration

2. SNS_DDF_ATTRIB_IO_REGISTER:
  虽然是get,但传入的value是有值的,driver根据这个值来读取指定寄存器,在把值赋值给value传给SMGR
  需要将sns_ddf_io_register_s结构体赋值。

3. SNS_DDF_ATTRIB_BIAS:
  轴偏差,没有偏差就是0

4. SNS_DDF_ATTRIB_ODR:
  就是将之前set的odr反馈给smgr,可配置的值查看datasheet的Table 8: Bandwidth configuration

5. SNS_DDF_ATTRIB_FIFO:
  将sns_ddf_fifo_attrib_get_s结构体赋值,值不知道是怎么来的。set的时候是写了两个reserved的寄存器,不知道什么用。
 























  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值