功能描述

热键

组合键

功能

Fn+Insert

切换至蓝牙模式

Fn+Scroll-Lock

切换至2.4G模式

Fn+Pause

切换至USB模式

Fn+1

切换至蓝牙主机1 (短按:可连接定向广播 长按:可连接非定向广播)

Fn+2

切换至蓝牙主机2 (短按:可连接定向广播 长按:可连接非定向广播)

Fn+3

切换至蓝牙主机3 (短按:可连接定向广播 长按:可连接非定向广播)

Fn+4

切换至蓝牙主机4 (短按:可连接定向广播 长按:可连接非定向广播)

Fn+5

RF模式开启配对

Fn+F1

静音

Fn+F2

降低音量

Fn+F3

提高音量

Fn+F6

提高背光灯亮度

Fn+F7

降低背光灯亮度

Fn+F8

打开/关闭背光灯

按键与键盘

扫描机制

按键默认10ms扫描一次,每次扫描结果与上次扫描对比,若有变化则处理数据。在进入睡眠模式后,若干时间内 无按键触发则暂停扫描,并开启GPIO中断,通过GPIO中断发送消息再次触发按键扫描。

注:在中断中申请内存发送消息容易造成内存出错!此处做法是仅在睡眠过程中打开GPIO中断, 所以GPIO中断并不会打断其他内存相关操作。

上报机制

键盘支持全键无冲,此方案模拟了两种键盘,位键盘和通用键盘,在键值数量大于通用键盘一次上报的数量时,多出键值通过为键盘上报。

模式

按下组合键切换模式后,程序将模式写入Date flash,然后将芯片复位。 芯片复位后,根据DATA FLASH中的配置信息选择不同的模式,所以各个模式之间互不干扰。

BLE模式

低功耗蓝牙模式为默认模式,符合Bluetooth Low Energy 5.0 规范。

  • 多主机绑定,短按组合键切换主机,长按组合键可重新绑定主机

  • 广播间隔100ms

  • 默认连接参数(8-15, 5, 500),低功耗连接参数(40-80, 5, 500),若干时间后无键值上报,则更新连接参数为低功耗连接参数

  • 最大包长度(BLE_BUFF_MAX_LEN) 31bytes

  • 单次连接间隔最大包数量(BLE_BUFF_NUM - 1) 4

USB模式

  • 使用芯片集成USB2.0全速收发器PHY

  • 使用全速设备模式

  • DMA发送数据

  • 支持远程唤醒

  • 支持低功耗,主机睡眠后,芯片进入睡眠

2.4G模式

2.4G模式中,键盘并非主动发送数据至2.4G接收器,而是2.4G接收器定时请求数据,目的是为了支持多设备连接,多设备跳频。

  • 通讯间隔:通讯间隔为数据收发的最小单元

  • 默认通讯间隔为1ms,即2.4G接收器理论上可以1ms接收一包数据

  • 键盘和接收器的通讯间隔不一定是相同的,但键盘的通讯间隔需要和接收器的通讯间隔成倍数关系

  • 对于多个设备连接的情况下,2.4G接收器每个通讯间隔只能请求一个设备的数据(如当前设备有 键盘1,键盘2,通讯间隔为1ms,则第一毫秒请求键盘1,第二毫秒请求键盘2,第三毫秒请求键盘1…)

  • 配对:首先键盘按下热键触发配对,然后2.4G接收器重新上电进入配对模式,最后双方交互数据,配对结束

  • 2.4G接收器仅在上电后若干时间内处于配对状态

  • 键盘存在配对超时,若干时间内未配对成功退出配对模式

  • 一次配对只能与一个设备与2.4G接收器建立配对

  • 未配对和配对阶段使用默认通讯地址,配对成功后将双方MAC地址相加作为新的通讯地址

  • 跳频:每次通讯间隔后更新通讯频段,所谓跳频只是更改当前的通讯通道。举例:配对成功后,第一个通讯间隔(默认1ms)使用通道0,第二个通讯间隔使用同道1,以此类推。

  • 不同的设备使用不同的channel map

  • 配对阶段使用默认的频段

  • 时间同步

  • 2.4G接收器使用的时32MHz时钟源,其偏差较少,所以以2.4G接收端作为时钟基准,以此同步键盘设备

  • 键盘在开启接收窗口后未接收到期望数据,会在之后的通讯间隔重新打开接收窗口,同时扩大接收窗口,当接收窗口大于(channel map * 通讯间隔)时,判断为同步中断

  • 同步中断后持续重试若干次(当前未5次),若持续失败,放弃同步

  • 数据发送

  • 每次数据发送(包括心跳包)触发一次时间同步

  • 键盘在产生数据时打开接收窗口,接收数据请求,然后再发送键值

  • 没有键值产生不打开接收窗口,但为保证同步,每隔100ms发送一次心跳包(心跳包间隔取决于32K的精度,使用外部32K可配置更大的心跳包间隔)

  • 数据重发 在发送失败后(打开接收窗口未获取到数据),一直重发直至同步中断