
usb
imxiangzi
这个作者很懒,什么都没留下…
展开
-
Windows操作HID设备的API
1、头文件包含,库文件链接 在VC中开发HID应用程序时,需要包含setupapi.h和hidsdi.h,包含方式必须为extern "C",如下所示:extern "C" {// Declare the C libraries used#include "setupapi.h" // Must link in setupapi.lib#include "hidsdi转载 2017-11-06 20:41:07 · 8610 阅读 · 0 评论 -
usb鼠标_HID报告描述符的实现(11)
开发环境:win7开发板 :51单片机 + pdiusbd12 芯片前言: 在上一节的末尾,设备接收到的数据:0x81 0x06 0x00 0x22 0x00 0x00 0x74 0x00 0x81 表示:数据传输方向为 设备到主机,该命令请求是发送到接口中的。 详情请看:usb鼠标_USB标准请求之设备描述符(5) 0x06...转载 2018-02-09 13:41:19 · 1050 阅读 · 0 评论 -
键盘的hid描述符例子
譬如有如下的Report Descriptor:譬如有如下的Report Descriptor:C/C++ code?123456789101112131415161718192021222324252627282930313233343536const u8 g_KeyboardReportDescriptor[] = { // Keyboard 0x05, 0x01, /* Usa...转载 2018-02-09 13:46:19 · 1896 阅读 · 0 评论 -
STM32例程之USB HID双向数据传输
http://www.viewtool.com/bbs/forum.php?mod=viewthread&tid=199&extra=page%3D1程序功能将STM32的USB枚举为HID设备。STM32使用3个端点,端点0用于枚举用,端点1和2用于数据的发送和接收。端点长度为64,也就是单次最多可以传输64个字节数据。STM32获取上位机下发的数据并将该数据通过USB原样返回,...转载 2018-02-09 14:10:51 · 3851 阅读 · 0 评论 -
HID读写过程
HID或USB的上、下位机之间相互读写时,并不是直接通信的,而是经过各自的buffer.如下图所示: 上位机向下位机写数据:step1: 当点击Writ HID按键后,上位机首先将要写的数据写入PC的驱动buffer中;step2: 然后PC的驱动再将buffer中的数据写入下位机USB-SIE的buffer中,进而触发下位机的中断;step3: 下位机的USB中断程...转载 2018-02-09 14:12:42 · 1251 阅读 · 0 评论 -
HID 读写report ID注意事项
1. 上位机向HID写数据时,每个包传输的第一个byte为写数据(OUT)report ID,上、下位机必须一致。 上位机配置位置: 下位机配置位置: 2. HID向上位机返回数据时,每个包的第一个byte也必须是读数据(IN)report ID,在下位机中,IN report ID的定义一定要和发送包的第一个byte相一致,否则读取错误。IN report ID与上位...转载 2018-02-09 22:15:08 · 524 阅读 · 0 评论 -
STM32 USB HID 自定义设备 bulk 传输
ST(意法半导体公司)为STM32系列处理器编写了外设USB的库,并提供了很好的参考例程,本文就是参考ST提供的例程,在STM32F4 discovery板子上实现usb bulk传输。Host端是在linux平台上利用libusb库函数写的读写USB应用。本次实现在STM32 USB例程中的Device HID 鼠标例程基础上添加bulk传输端点修改而来。usb_conf.h 文转载 2018-02-09 22:39:36 · 4479 阅读 · 1 评论 -
STM32实现HID和u盘复合设备
USB设备可以定义一个复合设备,复合设备分两种,一种是一个设备多个配置,还有一种是一个配置多个接口,在本例中采用一个配置多个接口的方式 首先修改设备描述符,标准设备描述符和报告描述符都不需要修改,只需要修改配置描述符即可//usb配置描述符const u8 DinkUsbConfigDescriptor[DINK_USB_SIZ_CONFIG_DESC] = {转载 2018-02-09 22:45:22 · 2577 阅读 · 0 评论 -
STM32 USB数据发送完成的识别方法
1 if (GetEPTxStatus(ENDP1) == EP_TX_NAK) 则认为发送完成了2 可以在相应端点的回调函数中,作相应的标志 void EP1_IN_Callback(void) { sUSB.in = 0;转载 2018-04-23 18:42:14 · 3838 阅读 · 1 评论 -
HID 读写report ID注意事项
1. 上位机向HID写数据时,每个包传输的第一个byte为写数据(OUT)report ID,上、下位机必须一致。 上位机配置位置: 下位机配置位置: 2. HID向上位机返回数据时,每个包的第一个byte也必须是读数据(IN)report ID,在下位机中,IN r转载 2018-04-23 22:21:34 · 9798 阅读 · 0 评论 -
STM32USB的枚举过程简介
STM32的USB枚举过程介绍 之前的说明: 文中大量引用网上资料,在文后已给出资料的引用说明。文件涉及到的USB各种传输包各个位的含义以及USB标准设备请求的含义都没有做说明,推荐看《圈圈教你玩USB》里面有详细的说明一、枚举前的工作 系统上电后,程序开始运行,简单介绍一下USB的初始化 根据STM32的USB库做移植,介绍枚举转载 2018-04-24 21:25:42 · 1116 阅读 · 0 评论 -
HID报告描述符解析_笔记
要了解报告描述符,需要两份资料:《device class definition for human interface device (HID)》, 《Universal Serial Bus HID Usage Tables》例如:0x05, 0x01, // USAGE_PAGE (Generic Desktop)0x05表示前缀,0x01为数据部分0x05转换成二进制,就是00000101...转载 2018-02-09 06:43:11 · 542 阅读 · 0 评论 -
USB描述符和枚举总结 --自己总结
1. 描述符之间的关系:设备描述符(一个设备只有一个):里面决定设备有多少种配置。 ----实际地址配置描述符(每种配置一个配置描述符): 定义配置里有多少接口。 ----抽象概念接口描述符(每个接口有一个接口描述符):定义该接口有多少端点。转载 2017-11-09 00:31:42 · 683 阅读 · 0 评论 -
【Qt】Linux HID API
Linux下HID可以使用libusb与hidapi结合,我是将hidapi略作修改变成一个自己的interface,以下在Qt中使用。1、首先编译libusb(这里是libusb-1.0.21),本机直接make install --prefix=$(pwd)/_libusb,交叉编译需要设定对应编译器。2、复制libusb.h和libusb的动态库(.so)和静态库转载 2017-11-08 00:39:49 · 2838 阅读 · 0 评论 -
stm32的usb与上位机通过中断传输进行通信控制led--LibUsbDotNet
一 上位机的实现USB上位机使用c#编写,使用到是著名的USB开源库LibUsbDotNet,驱动也是通过LibUsbDotNet自带的InfWizard.exe生成的,实现效果如图1所示,stm32 上电时,软件能够自动检测并显示相关信息,点击亮按钮,上位机通过端点1发一个字节到下位机stm32板上并控制板上的led,stm32收到数据后通过端点2上传2字节的反馈信息。转载 2017-11-08 11:54:45 · 5533 阅读 · 3 评论 -
入门级详细USB移植教程——致正在为USB烦恼的朋友
同上一篇MPU6050一样,我还是写一篇关于USB的帖子,在圈圈等玩USB的大神面前,我掌握的USB知识实在是九牛一毛,所以这篇帖子加上了入门级的修饰语。写这篇帖子主要是为了那些想快速开发USB的人,至于想深入了解USB协议,可以先学完我这个再去看看别的高级教程可能会好点,虽然我强调自己掌握的USB知识不多,但是对于一般的应用已经足够,我这里主要是学会怎么去用USB做自己的东西,而且我觉得刚学完一转载 2017-11-08 11:56:17 · 3253 阅读 · 0 评论 -
usb协议深入理解
0. 基本概念 一个【传输】(控制、批量、中断、等时):由多个【事务】组成; 一个【事务】(IN、OUT、SETUP):由一多个【Packet】组成。 USB数据在【主机软件】与【USB设备特定的端点】间被传输。【主机软件】与【USB设备特定的端点】间的关联叫做【pipes】。一个USB设备可以有多个管道(pipes)。转载 2017-11-08 12:24:58 · 401 阅读 · 0 评论 -
USB协议架构及驱动架构
1. USB协议1.1 USB主机系统 在USB主机系统中,通过根集线器与外部USB从机设备相连的处理芯片,称为USB主机控制器。USB主机控制器包含硬件、软件和固件一部分。1.2 USB设备系统 USB设备按功能分为两部分:集线器(Hub)和功能部件。从下图可知,主机通过根集线器连接到各种外围设备(集线器和功能部件)。转载 2017-11-08 12:26:19 · 262 阅读 · 0 评论 -
USB设备开发---- usb描述符概述
说到USB设备,不得不提到各种描述符(descriptors), 一般来说,描述符有如下几种: 1:设备描述符(Device Descriptors) 2:配置描述符(Configuration Descriptors) 2:接口描述符(Interface Descriptors) 3:端点描述符(Endpoint Descriptors转载 2017-11-08 13:27:42 · 823 阅读 · 1 评论 -
求助:usb audio hid 设备的配置描述符无效:4个接口,1个AC,2个AS,1个HID。播放是双通道的,录音是单通道的。原本配置描述符里录音也是双通道
4个接口,1个AC,2个AS,1个HID。播放是双通道的,录音是单通道的。原本配置描述符里录音也是双通道的,代码也是没问题的。我现在改为单通道,就出现了问题。协议是:usb1.1版本,usb audio1.0版本。录音拓扑结构是: IT4--FU5--OT2--Endpoint2(端点2是等时输入端点)const uint8_t gu8ConfigDescriptor[] ={转载 2017-11-08 13:53:48 · 1836 阅读 · 0 评论 -
USB 配置,接口,设置,endpoint描述符的关系
一个USB设置可以有多个配置,在初始化的过程中,会选择一个默认的配置,选择的方法根据驱动实现而不一样,linux usb会选择第一个标准的配置。else if (udev->descriptor.bDeviceClass !=USB_CLASS_VENDOR_SPEC &&(desc && desc->bInterfaceClass !=USB_CLASS_VENDOR_S转载 2017-11-08 13:58:24 · 2981 阅读 · 0 评论 -
自己总结的USB数据结构及其描述符
背景: USB理论知识光看着空想总觉着丢三落四,好像哪里没法理解到位,自己做个总结。正文:1、 USB通信的最基本单位是“包”。如果把“包”肢解的话,可以分为各种“域”(7类,即一串二进制数。每类域均有具体的位数规定)。包有三种:令牌包,数据包,握手包a) 令牌包:输入包,输出包,设置包,帧起始包。(通俗理解为,主机要求设备做什么)b)转载 2017-11-09 00:10:41 · 535 阅读 · 0 评论 -
USB描述符 包括bushound抓包
USB描述符USB描述符信息存储在USB设备中,在枚举过程中,USB主机会向USB设备发送GetDescriptor请求,USB设备在收到这个请求之后,会将USB描述符信息返回给USB主机,USB主机分析返回来的数据,判断出该设备是哪一种USB设备,建立相应的数据链接通道。那么USB描述符信息到底是一个什么样的数据呢,USB协议中有详细描述。通用的USB描述符信息包括设转载 2017-11-09 00:30:58 · 650 阅读 · 0 评论 -
USB Audio&hid 混合设备的描述符详解
/* USB Standard Device Descriptor */__ALIGN_BEGIN uint8_t USBD_HS_DeviceDesc[USB_LEN_DEV_DESC] __ALIGN_END = { 0x12, /*bLength */ USB_DESC_TYPE_DEVICE, /*bDe转载 2018-04-28 20:18:00 · 2660 阅读 · 0 评论