1,系统框架
Sensor hub
工程的系统架构如下图
从整个
Sensor hub
工程看,
Sensor hub
分为
GR551x
及外设硬件的硬件层、
GR551x SDK
的
BSP
层、
BLE stack
、
FreeRTOS
、用户应用层组成。
GR551x
及外设硬件
• GR551x
包含
BLE
子系统、
MCU
子系统、和
PMU
子系统三部分。
• Sensor hub
涉及的外设硬件根据用户的产品定义和形态而定,一般来说,主要有:运
动传感器
G-sensor(
加速度计、陀螺仪
)
、体温检测传感器、大气压传感器、心率血氧传
感器等。
GR551x SDK
• GR551x SDK
是一套基于
GR551x
芯片定义的低功耗蓝牙应用开发的软件套件,包括
BLE 5.1 API
、
System API
和外设驱动
API
接口。并提供了丰富的蓝牙和外设应用示例工
程和使用说明文档,以及
FreeRTOS
等三方源码。
Sensor Hub
应用
•
功耗模块:对当前功耗模式进行自动管理,在需要接收串口数据时,切换到
IDLE
模
式,在不需要接收串口数据时,切换到
Sleep
模式。
•
通信模块:主要做一些通信中转操作,如配置
BLE
广播、连接参数、上报
BLE
配置
状态、
BLE
数据收发处理等。
• Sensor
模块:对
Sensor
数据的上报模式和采样参数进行配置,控制
Sensor
数据采集
的开启和关闭。
• HRS
模块:执行心率、血氧采集的启动和停止,进行心率、血氧算法运算处理和数
据上报。
•
算法模块:负责运动算法处理,以
G-Sensor
获取的加速度作为输入,输出计步、卡
路里、翻
/
抬腕等算法结果。
2,
软件框架
Sensor hub
的软件框架如下图
所示,整个应用层共
8
个
Task
,每个
Task
负责一个功
能模块。
Uart task
模块负责接收
Master MCU
串口发送给
Sensor hub
的数据,按照通信协议解析
数据帧,提取
Sensor
配置命令,然后将配置数据封装成消息发送给
Sensor task
进行处理,
提取出
BLE
相关配置命令或者用户数据,以消息或者事件的方式发送给
Com task
处理。
Com task
模块主要作为串口到
BLE
协议栈之间的桥梁,主要负责
Master MCU
对
BLE
配
置命令进行响应,如广播配置、连接参数配置、
BLE Master
扫描连接配置等,将串口收到的
BLE
用户数据转发给
BLE stack
,同时协议栈接收到的
BLE
数据以及连接、断连状态,也会在
Com Task
中上报给主机
MCU
。
Sensor task
模块收到
Uart task
发送的
Sensor
配置消息后进行
Sensor
配置,如配置采样
率、配置批量上报时间,配置上报唤醒模式,启动停止采样等。这里对每个
Sensor
都创建一
个软件定时器,根据配置采样周期设置定时器周期超时时间,在定时器的
callback
中为
Sample task
发送采样
event
。
Sample task
模块主要负责对各个
Sensor
模块进行数据采集并上报,当接收到采样定时
器回调发送的采样
event
后调用底层
driver
获取传感器数据,如果
Sensor
上报类型设置的唤
醒模式,则直接唤醒主机
MCU
,并上报采样值,如果
Sensor
上报类型为非唤醒模式,则将
采样数据进行本地缓存,但是批量上报时间到时,进行一次批量上报。
HRS task
模块主要负责控制心率、血氧的采集,当启动了心率、血氧采集,在 GH3011
中断信号的驱动下开始心率算法运算,当有心率、血氧结果时,将结果上报给
Master MCU
。
Algo task
模块主要负责
Cywee
运动算法运算,算法低功耗管理,以
G-sensor
的
accel
数
据作为输入,输出运动相关的算法结果。
Pwrtask
模块主要负责系统功耗管理,接收主机
MCU TX start
唤醒事件,唤醒
Sensor hub
准备串口数据接收,收到主机
MCU TX end
事件后,对串口任务进行挂起操作,退出串口接
收状态,设置系统进入低功耗睡眠模式。
LOG task
模块比较简单,负责日志的清除,导出功能,目前仅仅支持通过
BLE
工具导出
日志。