624****com
您好,咨询如下问题:
V4300版本,使用GH3020。
Q1: 实现接口hal_gsensor_drv_get_fifo_data,文档说明需要做归一化处理,应该如何归一化?
Q2: 宏__GS_SENSITIVITY_CONFIG__如何根据ACC的配置来选择?例如±4G,100Hz采样。加速度为16bit数据。
Q3: 使用硬件ADT,只开启ADT功能时,程序会调用开启acc采集的接口。能否更改成检测到佩戴后再开启,可以节约功耗。

Q4: 在活体检测中,提供的示例在活体脱落后开启多sensor检测,直到再次检测到佩戴才会关闭定时器,这样做是考虑到什么应用场景吗?如果活体脱落后,不使用多sensor逻辑,直接再次使用ADT等待佩戴,重新开始佩戴检测逻辑。这样看起来不使用acc检测移动,会更节约功耗。

十分感谢回复。
che****com

您好:
Q1:hal_gsensor_drv_get_fifo_data 是否需要做归一化,如何归一化
SDK 约定在 hal_gsensor_drv_get_fifo_data() 中提供 GSensor 的原始轴向数据即可,数据格式为 STGsensorRawdata 中的 x/y/z 原始计数值。驱动内部会再统一调用归一化函数,将当前灵敏度换算到 512 counts/g 的基准。
因此,一般不建议在该接口里先换算成 mg、m/s² 等物理单位后再传入。若平台侧已经做过单位换算,建议改为传原始 counts,或者先自行换算回 512 counts/g 基准后再传给 SDK。
Q2:__GS_SENSITIVITY_CONFIG__ 应如何根据 ACC 配置选择
该宏应根据所使用 ACC 芯片在当前量程下的灵敏度 counts/g 来选择,而不是按采样率选择。
例如,如果 ACC 在当前量程下 datasheet 标明为:
以您举例的 ±4G、100Hz、16bit 为例,真正需要参考的是该 ACC 在 ±4G 档位下的 datasheet 灵敏度值。很多器件在 ±4G 下对应 8192 counts/g,此时应选择 GSENSOR_SENSITIVITY_8192_COUNTS_PER_G。100Hz 只影响采样频率,不决定该宏的配置。
Q3:仅开启硬件 ADT 时,是否必须调用开启 ACC 采集接口,能否改为检测到佩戴后再开启
当前 demo 中在启动采样时,如果 GSensor 使能标志为真,会调用 hal_gsensor_start_cache_data()。这里是 demo 的统一处理入口,并不表示“硬件 ADT 本身必须依赖 ACC”。
如果您的产品方案在 ADT-only 待机阶段不依赖运动检测、多传感器辅助确认或时间同步逻辑,那么可以修改为:
这样是可以节约功耗的。
但如果当前方案还依赖多传感器辅助判断佩戴状态,或者后续算法需要同步使用 ACC 数据,则不建议关闭。
Q4:活体检测中,脱落后是否一定要走多 sensor 逻辑,是否可以直接回到 ADT 等待下一次佩戴
文档中给出的多 sensor 流程属于示例逻辑,主要目的是在复杂场景下,通过 GSensor 移动事件等辅助信息提高再次佩戴判断的鲁棒性。
这套流程不是必须逻辑。如果您的应用更关注低功耗,也可以采用更简化的方案:
这种方案的优势是功耗更低;代价是少了 ACC/multi-sensor 的辅助判断后,在部分复杂佩戴场景下,鲁棒性可能会弱于多传感器方案。
因此,这里本质上是功耗与识别鲁棒性之间的取舍,不是 SDK 的强制限制。
总结如下:
打开微信,使用“扫一扫”即可关注