本文主要简单介绍USB HID Vendor Defined设备的应用和调试方法,结合Telink 8355 Dongle做简要说明。
1
USB HID Vendor Defined 设备概述
1、hid设备类型是由hid报告描述符中的用途页(USAGE PAGE)决定的,常见的有Generic Desktop Controls ,Keyboard/Keypad ,还有有厂商自定义(Vendor Defined Page)选项。常用的用途表如下:
2、借助USB HID Vendor Defined设备可以实现USB设备与上位机间的双向通信。
2
新增一个USB HID Vendor Defined设备
1、修复报告描述符
开发者可以在已有的usb interface中新增一个vendor defined设备,也可以新增一个interface,把这个vendor defined设备挂在新增的接口下面。
采用在一个单独的接口中添加Vendor Defined设备,report 描述符如下:
通过上面的修改,usb设备枚举完成后,在bus hound中可以查看到两个Vendor Defined设备已经枚举成功。
3
USB HID Vendor Defined设备的调试
1、Vendor Defined设备调试方法
根据第二章中的报告描述符,设置了两个usage page 并开辟了两个集合,分别对应两个Vendor Defined设备。第一个设备的usage page为0xFFEF,用来给dongle 升级使用。Report ID为6,既有输入也有输出,report长度都为63。第二个设备开发者可以自由决定他的用途,可以跟上位机做自定义的数据通信。设备2的Report ID,9,Report length为32。这两个设备都使用相同的输入输出端点,他们的数据通过不同的报告ID来进行区分。
2、利用bus hound模拟上位机下发数据
对于上位机一般是通过指定的usage page来打开usb设备,然后进行数据读取和写入。使用bus hound可以简单的模拟上位机进行数据发送。
特别在发送数据的时候,要严格按照报告描述符中定义的report ID 和Report Length来发,否则可能出错。
双击上图中的USB Input Device,可以选Control Out 和 interrupt Out进行发送数据测试。如果接口里面有OUT端点,则set report命令下发数据和write file命令数据都是通过out端点下来,如果没有OUT端点,则set report命令数据是通过控制端点下发的。
01
通过Set report命令下发数据
Set report命令格式如下:
02
通过write file下发数据
03
MCU读取上位机发送的数据
读取上位机set report命令数据
MCU读取上位机write file数据
04
Vendor Defined设备发送数据
上报数据就是通过往Vendor Defined设备所在接口的in端点里面写数据。
特别的,第一个字节需要为报告描述符指定的Report ID,数据长度需要为报告描述符指定的长度。
4
总结
USB HID Vendor Defined设备是一种非常常见的人机交互接口,可以方便的实现用户各种定制化的与上位机交互需求,广泛应用于固件升级、参数设置、命令收发等定制化场景。目前Telink 键鼠领域的各SDK均支持USB HID Vendor Defined 设备,用户只需简单调用接口便可以实现与上位机交互功能。
关 于 泰 凌
泰凌微电子致力于为客户提供一站式的低功耗高性能无线连接SoC芯片解决方案,包括经典蓝牙,蓝牙低功耗,蓝牙Mesh,Zigbee,Thread,Matter,Apple HomeKit,Apple“查找(Find My)”,和私有协议等低功耗2.4GHz多协议无线连接系统级芯片和丰富的固件协议栈。公司产品广泛应用于智能照明,智能家居/楼宇,智能遥控,无线外设,智能零售,穿戴设备,无线音频,智能玩具,物流追踪,智慧城市等各类消费和商业应用场景中。
官网:www.telink-semi.com
微信公众号:telink-semi
泰凌开发者william hill官网 :
https://developers.telink-semi.cn/
销售接洽:
中国大陆(华东、华北) :
+86-21-20281118-8213
中国大陆(华南、香港、音频) :
+86-0755-26614003
telinksales@telink-semi.com
原文标题:【技术专栏】泰凌微电子USB HID 用户自定义设备应用及调试
文章出处:【微信公众号:泰凌微电子】欢迎添加关注!文章转载请注明出处。
全部0条评论
快来发表一下你的评论吧 !