BLE HID协议-----------ble_app_hids_mouse demo

demo :nRF5_SDK_17.1.0_ddde560
学习HID协议的几个问题:

  1. rep_map_data的数据表示什么意思,如图:
    捕获
    捕获
    3645525-20250705140338336-1441277474

  2. rep_map_data在代码中什么作用:
    在 BLE HID 协议中,‌非 boot protocol 模式下的 input report, output report 传输的数据格式和长度都是可变的
    那USB host如何处理或者说定位数据意思?这就需要 报告描述符
    报告描述本身就是一串有一些格式规则的数据,其内容数据的作用就是描述report protocol 模式下传输的 report 的数据的格式和作用
    rep_map_data就是报告描述符,用于描述输入报告(input report)的格式和结构,例如按键、滚轮等数据的编码方式,它存在sever中的 Report Map characteristic
    捕获
    捕获
    捕获
    Report Map characteristic不会随Input Report characteristic发送‌,通常在设备连接时由主机(如手机)读取。用作主机解析从机发送的数据 ‌
    ‌Input Report Characteristic‌用于实际传输数据:当用户操作(如按键、移动)时,设备通过该特性发送数据给主机。 ‌
    通信方向差异
    Report Map是主机主动读取的设备特性,属于‌从设备到主机的单向传输‌。 ‌
    Input Report是设备主动发送给主机的数据,属于‌双向传输‌,但数据内容基于已定义的Report Map。 ‌

  3. rep_map_data中描述了按键、滚轮等数据的编码方式,如何定位它们的解析? 用Report Id 和 report_type
    捕获
    捕获
    在初始化的时候,我们会填入Input Report的参数report_id 和 report_type来区分

  4. 向USB host 传输数据需要多少个字节? 这也需要看rep_map_data中对数据域的定义
    以鼠标的x,y轴为例:
    捕获
    定义了2个数据域,一个数据域12bit,加起来就是 12bit * 2 = 24bit = 3byte
    所以我们需要传输3字节
    捕获

posted @ 2025-07-08 10:45  感兴趣就学  阅读(103)  评论(0)    收藏  举报