通用三模键盘&三模鼠标(三模模组)通讯协议
本方案来自于沁恒三模键鼠方案(以成品形式售出),有合作意向可咨询沁恒商务组:https://www.wch.cn/services/sale_support.html
通用三模模组方案说明:通用三模键盘&三模鼠标(三模模组)方案说明
通信概述
串口通讯:串口采用标准串口通信协议,默认通讯波特率115200,最高可设置至2.5M,8bit数据位,1bit停止位,无校验位。
SPI通讯:工作在模式0主机模式(CPOL=0,CPHA=0),默认时钟频率为250KHz,最高可设置至6M,当需要模组接收数据时,MCU应将IRQ引脚拉低,模组接收数据结束后MCU应将IRQ引脚拉高;同理,当模组需要发送数据时,模组会将INT引脚拉低,模组发送结束后会将INT引脚拉高。
数据格式为数据帧头+命令码+数据长度+有效数据(N Bytes)+校验和。
字节名称 | 帧头 | 命令码 | 有效数据 | 检验和 | |||
数据长度 | 1 | 1 | N | 1 | |||
字节 | 0x55 | CMD | Byte0 | Byte1 | ...... | Byte(N-1) | CheckSum |
帧头 | 应答命令码 | 数据长度 | 校验和 |
0x55 | 0xF0 | 0x00 | 0x45 |
数据内容 | CMD | DATA数据说明 | 有效数据长度 | 备注 |
标准键盘 | 0x81 | 普通按键数据格式8Byte | 8 |
例如 A 按下 0x55 0x81 0x08 0x00 0x00 0x04 0x00 0x00 0x00 0x00 0x00 0xE2 左 Shift 按下 0x55 0x81 0x08 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xE0 |
全键盘 | 0x82 | 15Byte 按 bit 传输数据格式 | 15 | 例如 A 按下 0x55 0x82 0x0F 0x10 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xF6 |
多媒体 | 0x83 | 2Byte,先低字节再高字节 | 2 | 例如 静音按键 0x55 0x83 0x02 0xE2 0x00 0xBC |
系统控制 | 0x84 | 1Byte数据 | 1 |
POWER:bit0 SLEEP:bit1 WAKEUP:bit2 |
FN数据 | 0x85 | 1Byte数据 | 1 |
FN 按下 0x10 FN 弹起 0x00 |
鼠标数据 | 0x86 | 5Byte鼠标数据 | 5 | MouseKey、Axis_X、Axis_Y、Axis_Z、TWheel |
发送电量数据 | 0x87 | 0-100 ,1Byte数据 | 1 | 用于MCU自行采集电量,通过模组上报0-100% |
透传数据 | 0x88 | 自定义数据,不超过32字节 | n(n≤32) | 透传给USB或dongle上位机,此命令与上报均无应答,USB或dongle转发给上位机的数据只包含数据内容 |
BLE透传数据 | 0x89 | 自定义数据,不超过32字节 | n(n≤32) | 透传给手机APP,此命令与上报均无应答,转发给手机的数据只包含数据内容 |
写EEPROM | 0x8A |
1Byte 地址编号+1Byte 数据长度 +最多32Byte 有效数据 |
n(n≤32) |
模组提供 8K 大小的 EEPROM 供存储用户数据,地址从 0x0000 开始,每个地址编号对应 32 字节数据, 例如从 0x100 地址开始写入 90 字节数据,则应发送: 0x08 0x20+32Byte; 0x09 0x20+32Byte; 0x0A 0x1A+26Byte; 应答信号将在 EEPROM 操作完成之后返回,每一条指令应在 收到上一条指令的应答信号之后再发送。 |
读EEPROM | 0x8B |
1Byte 地址编号+1Byte 数据长度 |
2 |
应答信号将在 EEPROM 操作完成之后返回,对应读取的数据将在应答信号之后以上报信息的方式返回 |
控制命令说明 | 命令码 | 数据长度 | 备注 |
切换到空闲模式 | 0x40 | 0 | 用于MCU使用自带USB功能时,将模组切换到空闲状态 |
切换到USB模式 | 0x41 | 0 | 模组切换到USB模式 |
切换到2.4G模式 | 0x42 | 0 | 模组切换到2.4G模式 |
切换到蓝牙模式1 | 0x43 | 0 | 模组切换到蓝牙设备1 |
切换到蓝牙模式2 | 0x44 | 0 | 模组切换到蓝牙设备2 |
切换到蓝牙模式3 | 0x45 | 0 | 模组切换到蓝牙设备3 |
切换到蓝牙模式4 | 0x46 | 0 | 模组切换到蓝牙设备4 |
切换到蓝牙模式5 | 0x47 | 0 | 模组切换到蓝牙设备5 |
配对命令 | 0x48 | 0 | 模组在2.4G或蓝牙模式时,进入配对状态 |
清除配对信息 | 0x49 | 0 | 清除2.4G以及蓝牙所有配对信息 |
电量信息查询 | 0x4A | 0 | 用于MCU使用模组采集电量,返回电压值 |
模组上报命令说明 | 命令码 | 数据长度 | 有效数据 | 备注 |
键盘指示灯状态 | 0x20 | 1 | LED status | NUM/Caps/ScrLK状态 |
模组切换模式成功 | 0x21 | 1 | 0x01 | 该连接通道开始配对新设备 |
模组连接成功 | 0x21 | 1 | 0x02 | |
模组连接断开 | 0x21 | 1 | 0x03 | |
模组进入配对状态 | 0x21 | 1 | 0x04 | |
模组进入回连状态 | 0x21 | 1 | 0x05 | 该连接通道开始连接配对过的设备 |
模组无法回连 | 0x21 | 1 | 0x06 | 该链接通道未配对过 |
模组进入休眠 | 0x21 | 1 | 0x07 | 模组断开连接进入休眠 |
模组进入低功耗 | 0x22 | 1 | 0x08 | 模组进入低功耗模式 |
上报电量信息 | 0x22 | 2 | 电压值 | 例如采样电压为2300mV,则上报0xFC 0x08 |
上报透传数据 | 0x23 | n | n(n≤32) | 透传上位机下发的数据给MCU |
上报BLE透传数据 | 0x24 | n | n(n≤32) | 透传手机APP下发的数据给MCU |
上报EEPROM信息 | 0x25 | n |
1Byte 地址编号 +1Byte数 据长度 +最多32Byte 数据 |
当收到读取 EEPROM 命令后, 通过此信息上报读取的数据 |
配置命令说明 | 命令码 | 数据长度 | 有效数据 | 备注 |
配置蓝牙设备名称 | 0xC0 | n(n≤22) | 蓝牙名称 |
最长22字节,例如名称“123”,则数据为0x31 0x32 0x33 如果需要根据不同的蓝牙通道号配置不同的名称,可在名称中加入$符号,在不同的通道中,会自动变为对应通道号的数字,举个例子: 配置蓝牙设备名称为A$B$C$,则蓝牙通道1名称自动会变为:A1B1C1,蓝牙通道2名称会自动变为A2B2C2,以此类推 |
配置VID/PID | 0xC1 | 4 | VID+PID | 例如VID为0x055C,PID为0x16DC,则数据为0x5C 0x05 0xDC 0x16 |
配置厂商字符串 | 0xC2 | n | 例如厂商名称“Lo123ach”,则数据为0x4C 0x6F 0x31 0x32 0x33 0x61 0x63 0x68 | |
配置产品字符串 | 0xC3 | n | ||
配置串行序列号 | 0xC4 | n | ||
配置串口波特率 | 0xC5 | 4 | 波特率值 |
例如配置波特率921600,则数据为0x00 0x10 0x0E 0x00, 如果有应答,会在应答之后再切换到新的波特率 |
配置SPI分频系数 |
0xC5 | 4 |
SPI分频系数 (参数范围10-240) |
系统主频默认60M, 例如配置SPI分频系数为60,则数据为0x3C 0x00 0x00 0x00,如果有应答,会在应答之后再切到新的SPI分频系数, 分频系数最高为240 |
配置状态上报是否应答 | 0xC6 | 1 | 0x00/0x01 |
配置为0x00关闭应答,立即生效 配置为0x01开启应答,上报信息如果没有收到应答,将会间隔1.875ms重传数据,最多重传3次 |
配置休眠超时 | 0xC7 | 2 | 多少秒无数据进入休眠 | 例如30分钟后进入休眠,则数据为0x08 0x07 (设定时间不得小于10秒) |
配置连接低功耗超时 | 0xC8 | 2 | 多少秒无数据进入低功耗 |
例如5s后进入低功耗,则数据为0x05 0x00, 默认连接状态中5s无数据进入低功耗,BLE和2.4G模式配对1分钟未配对完成进入低功耗 |
配置配对低功耗超时 | 0xC9 | 2 | ||
配置休眠使能 | 0xCA | 1 | 0x00/0x01 | 是否进入休眠,休眠后断开连接,回连过程期间会丢数据 |
配置低功耗使能 | 0xCB | 1 | 0x00/0x01 |
是否进入低功耗,低功耗模式保持连接,不会丢数据, 睡眠后MCU可以通过IO口唤醒模组,也可以通过发送一包无效数据唤醒模组, 唤醒后需要等待至少2ms后才能发送有效数据 |
配置dongle PID/VID | 0xCC | 4 | VID+PID | 与配置模组相同,此命令必须在连接成功后发送,否则无效 |
配置dongle 厂商字符串 | 0xCD | n | ||
配置dongle 产品字符串 | 0xCE | n | ||
配置dongle 串行序列号 | 0xCF | n | ||
配置定频通道并进入定频模式 | 0xD0 | 1 | 0x00-0x27 | 收到命令后进入单载波模式,默认发送功率为0dBm,收到切换空闲模式命令后停止 |
配置定频模式功率 | 0xD1 | 1 | 0x00-0x3F | 设置单载波发送功率 |
进入蓝牙OTA模式 | 0xD2 | 0 | ||
配置内部负载电容 | 0xD3 | 1 | 0x00-0x07 | 调整蓝牙频偏 |
配置2.4G连接参数 | 0xD4 | 4 |
发包间隔+超时时间 单位:1/32k=0.00003125s |
例如配置连接间隔为28(875us),超时时间为1000(31.25ms),则数据为0x1C 0x00 0xE8 0x03 |
配置DCDC开启 | 0xD5 | 1 |
0x00/0x01 |
开启DCDC将大幅降低时工作的运行功耗,降低至不开启时的50%-60%,但会略微降低通讯距离 00:关闭,01:开启 |
模组恢复出厂设置 | 0xE0 | 0 | ||
dongle 恢复出厂设置 | 0xE1 | 0 | 此命令必须在连接成功后发送,否则无效 | |
dongle重新启动 | 0xE2 | 0 | 此命令必须在连接成功后发送,否则无效,用于配置完dongle USB信息后重启 |