0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【技术专栏】泰凌微电子USB HID 用户自定义设备应用及调试

泰凌微电子 来源:未知 2023-07-19 08:40 次阅读

本文主要简单介绍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)选项。常用的用途表如下:

382f2352-25cc-11ee-962d-dac502259ad0.png

2、借助USB HID Vendor Defined设备可以实现USB设备与上位机间的双向通信

2

新增一个USB HID Vendor Defined设备

1、修复报告描述符

开发者可以在已有的usb interface中新增一个vendor defined设备,也可以新增一个interface,把这个vendor defined设备挂在新增的接口下面。

38451d7e-25cc-11ee-962d-dac502259ad0.png

采用在一个单独的接口中添加Vendor Defined设备,report 描述符如下:

38507f8e-25cc-11ee-962d-dac502259ad0.png

通过上面的修改,usb设备枚举完成后,在bus hound中可以查看到两个Vendor Defined设备已经枚举成功。

386bec4c-25cc-11ee-962d-dac502259ad0.png

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来进行区分。

38788f9c-25cc-11ee-962d-dac502259ad0.png

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命令格式如下:

388c0c5c-25cc-11ee-962d-dac502259ad0.png

389fc8c8-25cc-11ee-962d-dac502259ad0.png

02

通过write file下发数据

38c0be7a-25cc-11ee-962d-dac502259ad0.png

03

MCU读取上位机发送的数据

  • 读取上位机set report命令数据

38d25784-25cc-11ee-962d-dac502259ad0.png

  • MCU读取上位机write file数据

38e4b91a-25cc-11ee-962d-dac502259ad0.png

04

Vendor Defined设备发送数据

上报数据就是通过往Vendor Defined设备所在接口的in端点里面写数据。

特别的,第一个字节需要为报告描述符指定的Report ID,数据长度需要为报告描述符指定的长度。

38f06102-25cc-11ee-962d-dac502259ad0.png

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

泰凌开发者论坛

https://developers.telink-semi.cn/

销售接洽:

中国大陆(华东、华北) :

+86-21-20281118-8213

中国大陆(华南、香港、音频) :

+86-0755-26614003

telinksales@telink-semi.com

390ec732-25cc-11ee-962d-dac502259ad0.gif


原文标题:【技术专栏】泰凌微电子USB HID 用户自定义设备应用及调试

文章出处:【微信公众号:泰凌微电子】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 泰凌微
    +关注

    关注

    5

    文章

    124

    浏览量

    10650

原文标题:【技术专栏】泰凌微电子USB HID 用户自定义设备应用及调试

文章出处:【微信号:telink-semi,微信公众号:泰凌微电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    HarmonyOS开发实例:【自定义Emitter】

    使用[Emitter]实现事件的订阅和发布,使用[自定义弹窗]设置广告信息。
    的头像 发表于 04-14 11:37 616次阅读
    HarmonyOS开发实例:【<b class='flag-5'>自定义</b>Emitter】

    STM32F401VC USB枚举成自定义HID,为什么每台设备连接到同一台电脑上都要有一个加载驱动的过程?

    我的项目用的是STM32[i]F401VC,USB枚举成自定义HID.生产过程中每台设备都要连接电脑下载数据.现在的问题是每台设备连接到同一
    发表于 04-01 06:17

    基于YOLOv8实现自定义姿态评估模型训练

    Hello大家好,今天给大家分享一下如何基于YOLOv8姿态评估模型,实现在自定义数据集上,完成自定义姿态评估模型的训练与推理。
    的头像 发表于 12-25 11:29 1273次阅读
    基于YOLOv8实现<b class='flag-5'>自定义</b>姿态评估模型训练

    博途用户自定义库的使用

    博途官方提供了很多库,比如:基本函数库、通信库、安全库、驱动库等等,用户可以使用库中的函数/函数块来完成具体的控制任务。除了官方的库,我们也可以创建自己的库(用户自定义库)。比如,把项目
    的头像 发表于 12-25 10:08 290次阅读
    博途<b class='flag-5'>用户</b><b class='flag-5'>自定义</b>库的使用

    Android端自定义铃声 MobPush对安卓端自定义铃声的教程

    如何为APP推送设置独特的通知铃声呢?本次带来的是MobPush对安卓端自定义铃声的教程,快来看看吧~
    的头像 发表于 10-21 15:34 818次阅读
    Android端<b class='flag-5'>自定义</b>铃声 MobPush对安卓端<b class='flag-5'>自定义</b>铃声的教程

    Harmony自定义页面请求与前端页面调试

    一、自定义页面请求响应 Web组件支持在应用拦截到页面请求后自定义响应请求能力。开发者通过onInterceptRequest()接口来实现自定义资源请求响应 。自定义请求能力可以用于
    发表于 09-20 17:55

    Vivado Design Suite用户指南:创建和打包自定义IP

    电子发烧友网站提供《Vivado Design Suite用户指南:创建和打包自定义IP.pdf》资料免费下载
    发表于 09-13 11:34 0次下载
    Vivado Design Suite<b class='flag-5'>用户</b>指南:创建和打包<b class='flag-5'>自定义</b>IP

    labview超快自定义控件制作和普通自定义控件制作

    labview超快自定义控件制作和普通自定义控件制作
    发表于 08-21 10:32 5次下载

    教程 3:构建自定义配置文件

    教程 3:构建自定义配置文件
    发表于 07-06 18:49 0次下载
    教程 3:构建<b class='flag-5'>自定义</b>配置文件

    教程 2:自定义配置文件示例

    教程 2:自定义配置文件示例
    发表于 07-04 20:50 0次下载
    教程 2:<b class='flag-5'>自定义</b>配置文件示例

    Android自定义Toast Kotlin

    电子发烧友网站提供《Android自定义Toast Kotlin.zip》资料免费下载
    发表于 06-16 11:43 0次下载
    Android<b class='flag-5'>自定义</b>Toast Kotlin

    带计时器的自定义锻炼

    电子发烧友网站提供《带计时器的自定义锻炼.zip》资料免费下载
    发表于 06-16 10:29 0次下载
    带计时器的<b class='flag-5'>自定义</b>锻炼

    如何在Windows设备管理器上显示自定义USB设备名称?

    我开发了一个基于 LPC55 CPU 的应用程序,它使用 USB 连接与 Windows PC 共享数据。 它可以工作,但我想在 PC 上打开 Windows 设备管理器工具时显示“自定义名称
    发表于 06-06 06:55

    PyTorch教程6.5之自定义图层

    电子发烧友网站提供《PyTorch教程6.5之自定义图层.pdf》资料免费下载
    发表于 06-05 15:17 0次下载
    PyTorch教程6.5之<b class='flag-5'>自定义</b>图层

    labview自定义控件

    labview自定义精美控件
    发表于 05-15 16:46 9次下载