SiLabs Simplicity Studio V5中修改GATT报告映射特征添加Digitizer descriptor咨询
解决EFR32BG22中添加HID Digitizer Report Map的驱动识别问题
一、正确修改Report Map特征初始值添加Digitizer Descriptor的步骤
1. 按照HID 1.11规范编写Digitizer Report Map段
Digitizer的Report Map必须严格遵循HID规范,不能随意拼接。以下是一个基础的Pen类型Digitizer Report Map示例(可根据需求调整参数):
050D0902A1018502094215002501750195018102 0930150026FF03750A950181020931150026FF03 750A95018102C0
对应的规范解释:
050D:Usage Page(Digitizer)0902:Usage(Pen)A101:Collection(Application)8502:Report ID(2,需和后续Report特征对应)- 后续定义了Tip Switch、X/Y轴坐标的输入报告格式,最后以
C0闭合Collection
将这段Hex代码追加到原有鼠标Report Map的Hex字符串末尾,确保原有鼠标的Report Map结构完整(每个Collection都正确闭合)。
2. 在GATT配置器中更新初始值
- 打开项目的
.sclp文件(GATT Configurator),找到UUID为0x2A4B的「Report Map」特征。 - 点击「Initial Value」字段,将拼接好的完整Hex字符串填入(不要包含空格或换行)。
- 核对Report Map的总字节数,确保和输入的Hex长度一致(每两个字符对应一个字节)。
3. 验证Report Map合法性
使用Simplicity Studio内置的HID Descriptor Tool(路径:Tools > Bluetooth > HID Descriptor Tool),将编写的Report Map Hex导入,检查是否有格式错误或规范冲突。
二、Simplicity Studio中的关键配置与排查步骤
1. BLE栈配置调整
打开Bluetooth Stack Configurator,确认以下设置:
- 启用「HID Service」,并勾选「Multiple Reports」选项(匹配多报告HID示例的基础配置)。
- 将「Max Mtu Size」设为256,确保能完整传输Report Map数据。
- 增大「Attribute Database Size」(比如设为2048),避免因新增Report Map导致数据库溢出。
2. GATT配置器的配套设置
- 不要直接修改
.sclp的源代码,必须通过GATT Configurator UI操作,确保工具生成的代码无兼容性问题。 - 添加Digitizer对应的Report特征:新增UUID为
0x2A4D的「HID Report」特征,设置Report ID为之前定义的0x02,并开启「Read」和「Notify」属性。 - 检查「HID Information」特征(UUID
0x2A4A):设置「Country Code」为0x00(通用),「HID Version」为0x0111(对应HID 1.11规范)。
3. 编译与验证
- 修改配置后,点击GATT Configurator顶部的「Generate」按钮,确保配置同步到项目代码中。
- 烧录固件后,用Simplicity Studio的Bluetooth Explorer连接设备,查看GATT数据库:
- 确认Report Map的内容与编写的一致。
- 确认Digitizer Report特征已正确添加。
- 若主机仍报驱动错误,打开主机设备管理器,查看HID设备的错误日志(如错误代码10),针对性排查Report Map的规范问题。
内容的提问来源于stack exchange,提问作者Himani Pathak
相关产品推荐
相关产品推荐

