CN / EN
CN / EN

提问

设计支持

您的项目私密技术问题如需获得一对一支持,请点击下方联系我们。

GSensor使用疑问 GH3020

624****com

2026-03-25 17:23

您好,咨询如下问题:

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检测移动,会更节约功耗。

十分感谢回复。

0收藏

0赞成

che****com

汇顶员工
2026-03-30 10:09

您好:

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 标明为:

  • 512 counts/g,则配置为 GSENSOR_SENSITIVITY_512_COUNTS_PER_G
  • 1024 counts/g,则配置为 GSENSOR_SENSITIVITY_1024_COUNTS_PER_G
  • 2048 counts/g,则配置为 GSENSOR_SENSITIVITY_2048_COUNTS_PER_G
  • 4096 counts/g,则配置为 GSENSOR_SENSITIVITY_4096_COUNTS_PER_G
  • 8192 counts/g,则配置为 GSENSOR_SENSITIVITY_8192_COUNTS_PER_G

以您举例的 ±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 待机阶段不依赖运动检测、多传感器辅助确认或时间同步逻辑,那么可以修改为:

  • ADT-only 阶段不启动 ACC
  • 检测到 wear on 后,再开启主功能采样及 ACC 采集

这样是可以节约功耗的。
但如果当前方案还依赖多传感器辅助判断佩戴状态,或者后续算法需要同步使用 ACC 数据,则不建议关闭。

Q4:活体检测中,脱落后是否一定要走多 sensor 逻辑,是否可以直接回到 ADT 等待下一次佩戴
文档中给出的多 sensor 流程属于示例逻辑,主要目的是在复杂场景下,通过 GSensor 移动事件等辅助信息提高再次佩戴判断的鲁棒性。
这套流程不是必须逻辑。如果您的应用更关注低功耗,也可以采用更简化的方案:

  • 活体脱落后,直接关闭主功能及多 sensor 检测
  • 回到 ADT-only 等待下一次 wear on
  • 检测到佩戴后,再重新启动后续检测流程

这种方案的优势是功耗更低;代价是少了 ACC/multi-sensor 的辅助判断后,在部分复杂佩戴场景下,鲁棒性可能会弱于多传感器方案。
因此,这里本质上是功耗与识别鲁棒性之间的取舍,不是 SDK 的强制限制。

总结如下:

  • hal_gsensor_drv_get_fifo_data() 建议提供原始 counts 数据,SDK 内部会做统一灵敏度归一化。
  • __GS_SENSITIVITY_CONFIG__ 需按 ACC 当前量程下的 datasheet 灵敏度 counts/g 选择。
  • 若仅需硬件 ADT 待机,ACC 可延后到 wear on 后再开启,以降低功耗。
  • 活体脱落后可以不走多 sensor 流程,直接退回 ADT-only,这是允许的实现方式。

0条评论

0赞成

0收藏

您的评论

登录后可回答问题,请 注册

我们时刻倾听您的声音
联系销售

扫描关注公众号

打开微信,使用“扫一扫”即可关注