一、概述
上一次给大家讲述了怎么去添加宏按键的功能,不知道大家是否已经能掌握,那么这一次将要给大家带来的是怎么检测电池电量以及怎么将电池电量上报给电脑端。只有准确识别到鼠标电池的剩余量才能够在鼠标电量不足时尽快充电而不至于让电池受到损害。而且这也是作为无线鼠标的必要条件。
二、环境搭建
2.1 SDK 下载
本文基于 NXP QN9080 IC,SDK 可在NXP 官网 https://mcuxpresso.nxp.com 下载。
2.2 硬件
本文基于 QN9080 DK 板进行开发,DK 板如图 2.2 所示。
图 2.2
2.3 开发软件
SDK 支持 IAR、Keil、MCUXpreeso IDE 三种开发软件、本文以 IAR 为开发环境作为介绍。
三、工程介绍
在 SDK_2.2.0_QN908XCDK\boards\qn908xcdk\wireless_examples\bluetooth\hid_device 目录下的这个工程是一个实现蓝牙鼠标画框的例程,在这个例程里面我们可以找到电池的相关内容,下面我给大家介绍一下具体的实现方式。
3.1 电池电量的测量
测量电池电量可以使用 ADC 进行测量,本例程就是通过 ADC 进行测量电池电量之后再将测量出来的结果进行上报。例程中是通过函数 BOARD_GetBatteryLevel 进行测量计算,并将计算结果转换为百分比进行输出的。具体可参考图 3.1 -1。
图 3.1 – 1
图中的 ① 是你想要选择的 ADC 通道,② 表示的是你选择第几个 ADC,这两个参数的选择可以根据硬件 IO 的不同设置进行调整。而 ③ 表示的是将 ADC 采集到的数据进行一个百分比的换算,里面参数 ADC_BATTERY_FULL_VOLTAGE 是电池电压的值,作为一个基准值进行百分比转换。三个参数的初始值可以参考图 3.1 – 2。
图 3.1 – 2
ADC 通道与 ADC 的对应关系大家可以参考图 3.1 – 3。
图 3.1 – 3
3.2 电池电量数据上报
获取完电池电量数据之后,我们需要将数据通过电池服务进行上报,具体的上报方式是通过函数 Bas_RecordBatteryMeasurement 进行上报。大家可以参考一下图 3.2 – 1。
图 3.2 - 1
我们将上述得到的电量值赋值给电池服务设置结构体中的 batteryLevel,并且通过函数 Bas_RecordBatteryMeasurement 进行上报,具体代码可以参考图 3.2 – 2。
图 3.2 - 2
最终上报完电量数据之后的显示如图 3.2 – 3。
图 3.2 - 3
通过前面的讲述,相信大家都已经掌握了怎么对无线鼠标的电池电量进行采集以及上报,对于这次的内容不知道大家是否满意,下次将会给大家带来蓝牙模式在广播时灯效的处理,希望大家继续观看。
四、参考资料
[1] Device Class Definition for Human Interface Devices (HID)
评论