USB笔记
文章平均质量分 89
dadalaohua
这个作者很懒,什么都没留下…
展开
-
【USB笔记】USB设备识别当前接入的操作系统-Windows系统篇
USB笔记 USB设备识别当前接入的操作系统-Windows系统篇概述我们在进行USB设备相关的产品开发中,会在某些场景下需要知道USB设备所接入的操作系统是什么,例如区分是Windows操作系统,Mac操作系统,还是Ubuntu系统,等等。本文提供一种用于区分当前USB设备接入的操作系统是否是Windows系统的方法。原创 2022-01-08 18:49:45 · 4511 阅读 · 1 评论 -
【USB笔记】USB2.0 不同传输类型下的理论最大速率
USB笔记 USB2.0 不同传输类型下的理论最大速率USB2.0协议中定义了三种速率,低速(low speed),全速(full speed),高速(high speed)。最大速率如下:最大速率(bps)低速(low speed)1.5Mb/s全速(full speed)12Mb/s高速(high speed)480Mb/sUSB传输的实际数据传输速率是要小于总线速率的,因为实际数据传输速率受到了以下几种情况的影响:通信协议的开销:传输的过程中需要原创 2021-12-18 22:53:07 · 17658 阅读 · 19 评论 -
【USB笔记】 字符串描述符获取过程概述
USB笔记 字符串描述符(String Descriptor)获取过程概述字符串描述符(String Descriptor)规定了所支持的语言或者存储文本字符串。部分描述符含有字符串索引,用于描述相关信息。字符串描述符是可选的。如果不支持字符串描述符,需要将相关的描述符中的字符串索引设置为0。本文将展示一下标准的字符串描述符获取过程,包括指定设备支持的语言String Descriptor 0,manufacturer string descriptor,product string descripto原创 2021-08-23 22:50:34 · 1405 阅读 · 0 评论 -
【USB笔记】查询VID对应的USB设备厂商
USB笔记 VID查询USB设备的VID(Vendor ID)是指厂商ID。每一个USB设备都具有VID,通过VID可以获取到该USB设备对应的USB设备厂商。那我们该如何通过VID来查询对应的USB设备的厂商呢?下面提供两种查询的方式;1.USB-IF通过USB-IF(USB Implementers Forum, Inc.)网站https://www.usb.org/进行查询。USB-IF是一家非营利性公司,由开发USB规范的公司组成。USB-IF 的成立是为了USB的促进和采用提供支持组织和原创 2021-06-06 00:04:10 · 23628 阅读 · 0 评论 -
【USB笔记】USB2.0 可见设备状态Visible Device States
USB笔记 USB2.0 USB设备状态 可见设备状态Visible Device StatesUSB2.0设备有各种的状态,其中分为对USB和主机是可见的状态和USB设备内部的状态。下面讲述的是对外部可见的USB2.0设备状态。USB2.0设备的可见设备状态(Visible Device States)共有6种:连接(Attached),上电(Powered),默认(Default),地址(Address),配置(Configured),挂起(Suspended)。连接Attached上电P原创 2021-06-05 10:03:12 · 1313 阅读 · 2 评论 -
【USB笔记】USB 2.0 包格式 令牌包Token Packets
USB笔记 USB2.0 包格式Packet Formats 令牌包Token Packets说明介绍的是USB 2.0协议中包格式(Packet Formats)的令牌包(Token Packets)。介绍令牌(Token)由一个指定IN、OUT或SETUP包类型的PID字段,ADDR字段和ENDP字段组成。PING特殊令牌包的字段也与令牌包相同。对于OUT和SETUP事务(transactions),地址(address)和端点(endpoint)字段用于标识将接收后续数据包(Data pack原创 2021-03-21 12:32:17 · 3221 阅读 · 2 评论 -
【USB笔记】 标准请求 清除特性Clear Feature
USB笔记 标准请求 清除特性 Clear Feature格式bmRequestTypebRequestwValuewIndexwLengthData00000000B00000001B00000010BCLEAR_FEATUREFeature SelectorZeroInterfaceEndpointZeroNone功能这个请求用于清除或禁用特定的特性(feature)。bmRequestType共有三种接收端Recipient:设备(Device),原创 2021-03-15 00:08:00 · 4142 阅读 · 2 评论 -
【USB笔记】 USB1.0与USB1.1差异概述
USB笔记 USB1.0与USB1.1差异概述为什么写这个之前打算整理一下不同的USB协议的差异,由于对于这些协议之间的区别不是太了解,就直接通过搜索引擎进行查找。然后看某度百科,某度知道,某乎,各种博客,搜索出来结果基本就是USB 1.0:1.5 Mbps(Low Speed)USB 1.1:12 Mbps(Full Speed)USB 2.0:480 Mbps(Hi Speed)USB 3.0:5 Gbps(Super Speed)USB3.1:10 Gbps嗯,既然大家都是这么原创 2021-03-14 12:23:49 · 3868 阅读 · 5 评论 -
【USB笔记】 USB设备请求USB Device Requests
USB笔记 USB设备请求USB Device Requests所有USB设备都会响应主机向设备默认控制管道(Control Pipe)上发送的请求(requests)。 这些请求是使用控制传输(control transfers)进行的。请求和请求的参数通过Setup packet发送给设备。主机将会设置下面的Format of Setup Data表格中所列字段的值。每个Setup packet共有8个字节。Format of Setup DataOffsetFieldSizeVal原创 2021-03-13 09:20:43 · 6323 阅读 · 0 评论 -
【USB笔记】 标准设备请求Standard Device Requests
USB笔记 标准设备请求 Standard Device Requests这里主要列举出所有设备定义的标准设备请求。分别概述了标准设备请求(Standard Device Requests)和给出了标准请求代码(Standard Request Codes)和描述符类型(Descriptor Types)。概念部分主要从各种USB协议中整理,涵盖范围从USB 2.0到 USB 3.2协议。注意并不是所有协议都支持所有的标准设备请求,具体不同协议的差异可以参照附录。标准设备请求(Standard Devi原创 2021-03-13 09:17:16 · 2709 阅读 · 2 评论 -
【USB笔记】USB 2.0 帧开始包Start-of-Frame Packets
USB笔记 帧开始包Start-of-Frame Packets说明介绍的是USB 2.0协议中的帧开始包(Start-of-Frame Packets),通常简写为SOF包(SOF packets)。介绍帧开始包Start-of-Frame (SOF) packets用于SOF标记和帧号。帧开始包Start-of-Frame (SOF) packets由主机(host)发出,对于全速总线(full-speed bus),标称速率为1.00 ms±0.0005 ms,对于高速总线(high-spe原创 2021-02-27 18:42:47 · 3651 阅读 · 0 评论 -
【USB笔记】USB 2.0 包格式 数据包Data Packets
USB笔记 USB2.0 包格式Packet Formats 数据包Data Packets说明介绍的是USB 2.0协议中包格式(Packet Formats)的数据包(Data Packets)。介绍数据包(data packet)由一个PID、一个包含零个或多个字节数据的数据字段(data field)和一个CRC组成。有四种类型的数据包,由不同的PID标识:DATA0、DATA1、DATA2和MDATA。这些PID标识共有以下三种使用情况:数据切换同步(data toggle sync原创 2021-02-15 00:14:09 · 3027 阅读 · 0 评论 -
【USB笔记】USB 2.0 数据PID排序data PID sequencing
USB笔记 数据PID排序data PID sequencing说明介绍的是USB 2.0协议中的数据PID排序(data PID sequencing)。介绍数据PID排序(data PID sequencing)用于为数据接收器提供可以检测每个微帧(microframe)的一个或多个丢失/损坏的包和提供每个微帧(microframe)的事务数。高带宽等时端点High bandwidth isochronous endpoints(IN和OUT)必须支持数据PID排序(data PID sequ原创 2021-02-14 10:51:43 · 772 阅读 · 0 评论 -
【USB笔记】 USB2.0 包格式 握手包Handshake Packets
USB笔记 USB2.0 包格式Packet Formats 握手包Handshake Packets说明介绍的是USB 2.0协议中包格式(Packet Formats)的握手包(Handshake Packets)。介绍握手包(Handshake packets)里只有一个PID。握手包用于报告数据事务(data transaction)的状态,并可以返回表示成功接收数据、命令接受或拒绝、流控制(flow control)和停止条件(halt conditions)的值。只有支持流控制的事务类型原创 2021-01-10 15:28:27 · 3616 阅读 · 0 评论 -
【USB笔记】 标准请求 设置接口Set Interface
USB笔记 标准请求 设置接口 Set Interface格式bmRequestTypebRequestwValuewIndexwLengthData00000001BSET_INTERFACEAlternate SettingInterfaceZeroNone功能这个请求用于主机为指定的接口选择替代设置(alternate setting)。bmRequestTypebmRequestType10000000B bmRequest原创 2021-01-07 23:15:05 · 3172 阅读 · 0 评论 -
【USB笔记】 标准请求 设置配置Set Configuration
USB笔记 标准请求 设置配置 Set Configuration格式bmRequestTypebRequestwValuewIndexwLengthData00000000BSET_CONFIGURATIONConfiguration ValueZeroZeroNone功能这个请求用于设置设备的配置。bmRequestTypebmRequestType10000000B bmRequestType.Recipient0b0000原创 2021-01-01 10:52:17 · 3879 阅读 · 0 评论 -
【USB笔记】 标准请求 设置地址Set Address
USB笔记 标准请求 设置地址 SET_ADDRESS格式bmRequestTypebRequestwValuewIndexwLengthData00000000BSET_ADDRESSDevice AddressZeroZeroNone功能这个请求用于为所有后续的设备访问设置设备地址。bmRequestTypebmRequestType10000000B bmRequestType.Recipient0b00000(Device原创 2020-12-31 11:37:19 · 2046 阅读 · 4 评论 -
【USB笔记】 标准请求 获取描述符Get Descriptor
USB笔记 标准请求 获取描述符 GET_DESCRIPTOR格式bmRequestTypebRequestwValuewIndexwLengthData10000000BGET_DESCRIPTORDescriptor Type and Descriptor IndexZero or Language IDDescriptor LengthDescriptor功能主机用于请求一个制定的描述符。如果描述符存在,则这个请求返回指定的描述符。bmRequest原创 2020-12-27 21:13:02 · 6140 阅读 · 5 评论 -
【USB笔记】 USB 2.1 简介
USB笔记 USB 2.1简介什么是USB 2.1设备?是支持USB 2.1协议的设备吗?实际上没有USB 2.1协议,但是有USB 2.1设备。在USB设备的设备描述符(Device Descriptor)中,看到bcdUSB字段显示版本号为USB 2.1的,有以下两种情况:1.支持BOS描述符的LowSpeed、FullSpeed 或 HighSpeed设备。2.支持一个或多个USB 2.0速度的SuperSpeed或SuperSpeedPlus设备,如果以USB 2.0速度运行时,需要在bc原创 2020-12-13 21:56:47 · 5246 阅读 · 0 评论 -
【USB笔记】 USB描述符概述
USB笔记 USB描述符概述这里简要的介绍一下USB描述符的一些内容,概念部分主要从各种USB协议中整理,涵盖范围从USB 1.0到 USB 3.2协议。USB描述符概述USB设备使用描述符(descriptors)来上报其属性,使主机能够了解设备。描述符是一种具有定义格式的数据结构。每个描述符包含关于设备的整体或设备中某一元素的信息。使用描述符可以简明地存储单个配置的属性,因为每个配置都可以重复使用具有相同特性(characteristics)的其他配置的描述符或描述符的部分。通过这种方式,描述符原创 2020-12-04 00:12:52 · 1024 阅读 · 0 评论 -
【USB笔记】超高速设备功能描述符SuperSpeed Device Capability Descriptor
USB笔记 超高速设备功能描述符(SuperSpeed Device Capability Descriptor)超高速设备功能描述符(SuperSpeed Device Capability Descriptor)是设备功能类型码(Device Capability Type Codes)为SUPERSPEED_USB的一个设备功能描述符(Device Capability Descriptor)。超高速设备功能描述符(SuperSpeed Device Capability Descriptor)定义原创 2020-12-03 00:03:28 · 1561 阅读 · 0 评论 -
【USB笔记】USB 2.0扩展描述符USB 2.0 Extension Descriptor
USB笔记 USB 2.0扩展描述符(USB 2.0 Extension Descriptor)USB 2.0扩展描述符(USB 2.0 Extension Descriptor)是设备功能类型码(Device Capability Type Codes)为USB 2.0 EXTENSION的一个设备功能描述符(Device Capability Descriptor)。USB 2.0扩展描述符(USB 2.0 Extension Descriptor)用于表示设备在以低速(Low Speed),全速(F原创 2020-12-02 00:16:56 · 2304 阅读 · 0 评论 -
【USB笔记】设备功能描述符Device Capability Descriptor
USB笔记 设备功能描述符(Device Capability Descriptor)设备功能描述符(Device Capability Descriptor)是用于存储特定某项技术或设备功能信息的描述符,和BOS描述符(BOS Descriptor)一起由Wireless Universal Serial Bus Specification Revision 1.0规范引入,之后在USB 2.0 ECN: Link Power Management (LPM) 、USB3.x Specification原创 2020-11-30 21:30:56 · 2935 阅读 · 0 评论 -
【USB笔记】二进制设备对象存储描述符BOS Descriptor
USB笔记 二进制设备对象存储描述符(BOS Descriptor)二进制设备对象存储描述符(Binary Device Object Store Descriptor),简写成BOS描述符(BOS Descriptor)。BOS描述符(BOS Descriptor)是用于存储特定某项技术或设备功能信息的描述符,和设备功能描述符(Device Capability Descriptor)一起由Wireless Universal Serial Bus Specification Revision 1.0原创 2020-11-29 20:41:28 · 5469 阅读 · 0 评论 -
【USB笔记】超高速加等时端点伙伴描述符SuperSpeedPlus Isochronous Endpoint Companion Descriptor
USB笔记 超高速加等时端点伙伴描述符(SuperSpeedPlus Isochronous Endpoint Companion Descriptor)超高速加等时端点伙伴描述符(SuperSpeedPlus Isochronous Endpoint Companion Descriptor)用于支持增强型超高速功能(Enhanced SuperSpeed capabilities)。超高速加等时端点伙伴描述符(SuperSpeedPlus Isochronous Endpoint Companion原创 2020-11-28 13:30:37 · 890 阅读 · 0 评论 -
【USB笔记】超高速端点伙伴描述符SuperSpeed Endpoint Companion Descriptor
USB笔记 超高速端点伙伴描述符 (SuperSpeed Endpoint Companion Descriptor)超高速端点伙伴描述符 (SuperSpeed Endpoint Companion Descriptor)用于支持增强型超高速功能(Enhanced SuperSpeed capabilities)。只有运行于Gen X速度(Gen X speed)的增强型超高速设备(Enhanced SuperSpeed devices)才能返回。接口中描述的每个端点后面都有一个超高速端点伙伴描述符原创 2020-11-26 23:40:15 · 2338 阅读 · 0 评论 -
【USB笔记】接口关联描述符Interface Association Descriptor
USB笔记 接口关联描述符 (Interface Association Descriptor)接口关联描述符 (Interface Association Descriptor)(IAD)用于描述与同一功能相关联的两个或多个接口。关联(association)包括两个或多个接口及其所有备用设置接口。设备必须对需要多个接口的每个设备功能使用接口关联描述符 (Interface Association Descriptor)。接口关联描述符(Interface Association Descriptor原创 2020-11-21 12:21:11 · 5048 阅读 · 0 评论 -
【USB笔记】字符串描述符String Descriptor
USB笔记 字符串描述符(String Descriptor)字符串描述符(String Descriptor)规定了所支持的语言或者存储文本字符串。部分描述符含有字符串索引,用于描述相关信息。字符串描述符是可选的。如果不支持字符串描述符,需要将相关的描述符中的字符串索引设置为0。String Descriptor 0, 指定设备支持的语言(String Descriptor Zero, Specifying Languages Supported by the Device)OffsetF原创 2020-11-18 22:17:09 · 6016 阅读 · 4 评论 -
【USB笔记】端点描述符Endpoint Descriptor
USB笔记 端点描述符 (Endpoint Descriptor)端点描述符 (Endpoint Descriptor)描述了USB规范定义的端点信息,包含有端点的带宽等信息。每一个端点都有自己的端点描述符。主机端获取端点描述符 (Endpoint Descriptor),总是作为配置描述符(Configuration Descriptor)的一部分返回,不能直接用Get Descriptor或者Set Descriptor请求访问。Endpoint DescriptorOffsetFiel原创 2020-11-15 22:10:23 · 10375 阅读 · 0 评论 -
【USB笔记】接口描述符Interface Descriptor
USB笔记 接口描述符 (Interface Descriptor)接口描述符(Interface Descriptor)描述了配置中一个特定的接口。配置提供了一个或多个接口,每个接口都含有类(Class),子类(SubClass)和协议(Protocol)的信息,以及接口所使用的端点(Endpoint)数目。接口描述符(Interface Descriptor)总是作为配置描述符的一部分返回,不能直接用Get Descriptor或者Set Descriptor请求访问。一个配置可含有多个同时活跃的原创 2020-11-14 21:22:20 · 11110 阅读 · 6 评论 -
【USB笔记】 其他速度配置描述符Other_Speed_Configuration Descriptor
USB笔记 其他速度配置描述符(Other_Speed_Configuration Descriptor)其他速度配置描述符(Other_Speed_Configuration Descriptor)说明了能进行高速运行的设备在其他可能的速度下操作的配置。其他速度配置的结构与配置描述符一样。其他速度配置描述符(Other_Speed_Configuration Descriptor)是第二个同时支持全速和高速的设备所特有的描述符。此描述符与配置描述符有相同的结构。仅区别于其他速度配置描述符(Other_原创 2020-11-12 21:30:08 · 1811 阅读 · 0 评论 -
【USB笔记】配置描述符Configuration Descriptor
USB笔记 配置描述符(Configuration Descriptor)配置描述符(Configuration Descriptor)说明了一个特定配置的相关信息。描述符有一个bConfiguration Value字段,当将它的值作为Set Configuration请求的一个参数时,设备使用所描述的配置。取得设备描述符后,主机便可再取得设备的配置、接口和端点描述符。当主机请求配置描述符时,返回的是所有相关的接口和端点描述符。配置描述符描述了配置所提供的接口数量。每个接口可以独立操作。一个USB原创 2020-11-08 18:18:26 · 10029 阅读 · 0 评论 -
【USB笔记】设备限定描述符Device Qualifier Descriptor
USB笔记 设备限定描述符(Device Qualifier Descriptor)设备限定描述符(Device Qualifier Descriptor)说明了能进行高速操作的设备在其他速度时产生的变化信息。例如,如果设备当前在全速下操作,设备限定描述符返回它如何在高速运行的信息。既支持全速状态又支持高速状态的设备,必须含有设备限定描述符(Device Qualifier Descriptor),当设备转换速度时,设备描述字中某些字段的取值可能会改变。设备限定描述符(Device Qualifier原创 2020-11-08 18:07:31 · 5023 阅读 · 0 评论 -
【USB笔记】 设备描述符Device Descriptor
USB笔记 设备描述符(Device Descriptor)设备描述符(Device Descriptor)说明了USB设备的通用信息,包含应用到全部设备和所有设备配置的信息。USB设备只有一个设备描述符。设备描述符是在设备连接时主机读取的第一个描述字。此描述字所含的信息,被主机用来取得设备的额外内容。主机通过发送Get Descriptor 请求,并使设置事务中wValue 字段的高字节等于01h,来取得一个设备描述字。设备描述字提供了关于设备、设备的配置以及任何设备所归属的类的信息。Device D原创 2020-10-25 12:47:05 · 17740 阅读 · 2 评论 -
USB笔记 USB名称简述
USB名称USB 发展USB称呼USB接口USB 发展USB称呼USB接口原创 2020-09-07 21:53:13 · 1249 阅读 · 0 评论 -
【USB笔记】CRC-5/USB 简介
USB笔记 CRC-5/USB 简介及C语言实现一、CRC-5/USB算法应用场景二、CRC-5/USB算法基本信息三、CRC-5/USB算法的C语言实现一、CRC-5/USB算法应用场景二、CRC-5/USB算法基本信息CRC算法名称CRC-5/USB多项式公式x5 + x2 + 1宽度5多项式05初始值1F结果异或值1F输入反转true输出反转true三、CRC-5/USB算法的C语言实现...原创 2020-09-03 23:01:41 · 3577 阅读 · 0 评论 -
【USB笔记】USB CRC 简介
USB CRC简介1.Token CRCs(令牌CRC)Token PacketsSplit Transaction Special Token PacketsSSPLIT TokenCSPLIT TokenSOF Packet2.Data CRCs(数据CRC)Data Packet简介循环冗余检查(CRC)用于保护所有非PID字段,CRC能100%覆盖所有单bit(single-bit)和双bit(double-bit)错误。每个Token字段和Data字段都提供了CRC。这为主机或设备提供了一种机原创 2020-08-30 21:54:46 · 3004 阅读 · 0 评论 -
【USB笔记】CRC-16/USB 简介及C语言实现
CRC-16 USB C语言实现一、CRC算法基本信息二、查表法计算CRC-16 USB三、直接计算法计算CRC-16 USB一、CRC算法基本信息CRC算法名称CRC-16/USB多项式公式x16 + x15 + x2 + 1宽度16多项式8005初始值FFFF结果异或值FFFF输入反转true输出反转true二、查表法计算CRC-16 USB/* CRC余式表 */const unsigned int crc_table原创 2020-08-28 23:38:43 · 3252 阅读 · 0 评论