USB端点

2024-08-29 17:44
文章标签 usb 端点

本文主要是介绍USB端点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

USB端点

  • 各端点使用循环冗余校验(CRC)来检测传输中发生的错误。

根据 USB 规范,设备端点是 USB 设备中一个独特的可寻址部分,它作为主机和设备间通信流的信息源或库。
USB 枚举和配置一节介绍了设备向默认地址做出响应的步骤。
枚举过程中,该事件在主机读取端点描述符等其他描述符信息之前发生。
在该过程中,需要使用一套专用的端点用于与设备进行通信。
这些专用的端点(统称为控制端点或端点 0)被定义为端点 0 IN 和端点 0 OUT。
虽然端点 0 IN 和端点 0 OUT 是两个不同的端点,但对开发者来说,它们的构建和运行方式是一样的。每一个 USB 设备都需要支持端点 0。因此,该端点不需要使用独立的描述符。
除了端点 0 外,特定设备所支持的端点数量将由各自的设计要求决定。
简单的设计(如鼠标)可能仅要一个 IN 端点。
复杂的设计可能需要多个数据端点。
USB 规范对高速和全速设备的端点数量进行了限制,即每个方向最多使用 16 个端点(16 个 IN、16 个 OUT,总共为 32 个),其中不包含控制端点 0 IN 和 0 OUT 在内。低速设备仅能使用两个端点。
USB 类设备可对端点数量设定更严格的限制。
例如,低速人机界面设备(HID)设计的端点可能不超过两个 — 通常有一个 IN 端点和一个 OUT 端点。数据端点本身具有双向特性。只有对它们进行配置后才支持单向传输(具有单向特性)。例如,端点 1 可作为 IN 或 OUT 端点使用。设备的描述符将正式使其成为一个 IN 端点。

各端点使用循环冗余校验(CRC)来检测传输中发生的错误。

CRC 是一个用于检测错误的计算值。USB 规范中对实际的计算公式进行了解释,这些计算由 USB 硬件进行,这样可确保能够发出正确的响应。数据操作的接收方对数据进行CRC 检查。如果两者匹配,那么接收方将发出一个 ACK。如果两者匹配失败,便不会发出任何握手数据包。
在这种情况下,发送方将重新发送数据。
USB 规范定义了四种端点,并根据类型以及所支持的设备速度限制了数据包的尺寸。
根据设计要求,开发者使用端点:
描述符指出端点类型以及数据包最大尺寸。四种端点和各自的特性如下:
控制端点 — 这些端点支持控制传输(即所有设备支持的传输)。控制传输通过总线发送和接收设备的信息。它的优点是可以保证传输准确。它能够立即检测到错误的发生,并重新发送数据。控制传输在低速和全速设备上使用 10%的保留带宽(在高速设备上为 20%)并提供 USB 系统级控制。
中断端点 — 这些端点支持中断传输。这种传输非常适合需要使用高度可靠的方式来传输少量数据的设备。它通常用于HID 设计。这种传输的名称可引起误会。实际上,它并不是一个中断,但使用了一个轮询率。进行该传输时,主机将在预计时间间隔内检查数据。通过及时检测错误并重新传输数据,该传输可确保数据操作的准确性。在低速和全速设备上,中断传输使用带宽的 90%,而在高速设备上,所用的带宽为 80%。同步端点与其共享该带宽。
中断端点的数据包最大尺寸与设备的速度相关。高速设备支持最大为 1024 字节的数据包。全速设备支持最大为 64 字节的数据包。低速设备支持最大为 8 字节的数据包。
批量端点 — 这些端点支持批量传输,即是在高度可变的时间内传输大量数据并且可用任何带宽空间的传输。它们是USB 设备的最通用传输类型。因为用于批量传输的带宽并不是固定的,该传输的传送时间也是可变的。传送时间取决于总线上的可用带宽,由于该因素,便不能预期实际的传送时间。通过及时检测错误并重新传输数据,该传输可确保数据操作的准确性。批量传输非常适合对时间没有严格要求的大量数据传输。
批量端点的数据包最大尺寸与设备速度相关。高速设备支持最大为 512 字节的数据包。全速设备支持最大为 64 字节的数据包。低速设备不支持批量传输。
同步端点 — 这些端点支持同步传输,即具有预定带宽的连续性实时传输。由于同步传输没有错误恢复机制和握手数据包,它们需要支持容忍错误的数据流。错误由 CRC 字段检测,但不会被修改。因此,同步传输可保证传输速度,但以数据的准确性作为代价。流式音乐或视频即是使用同步端点的应用示例,因为我们的耳朵和眼睛通常忽略偶尔被错过的数据。在低速和全速设备上,同步传输使用带宽的 90%(在高速设备上,所用的带宽为 80%),中断传输与其共享该带宽。
高速设备支持最大为 1024 字节的数据包。全速设备支持最大为 1023 字节的数据包。低速设备不支持同步传输。有关同步传输,请注意一些重点内容。为了保证数据传输,您通常需要使用三个缓冲区,一个正在传输数据、一个已加载数据和一个正在进行加载数据。
在这里插入图片描述

这篇关于USB端点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1118536

相关文章

Usb Audio Device Descriptor(10) Hid Device

对于 Standard Interface Descriptor, 当 bInterfaceClass=0x03时,即为HID设备。Standard Interface Descriptor如下 struct usb_standard_interface_descriptor{U8 bLength; /*Size of this descriptor in bytes*/U8 bDescrip

Android rk3399 UAC(USB Audio)开发笔记

一、UAC有1.0和2.0,因Windows对2.0支持不好,我使用的是UAC1.0驱动 内核配置:CONFIG_USB_CONFIGFS_F_UAC1          ---这个宏配置无需物理codec,使用虚拟 alsa codec  驱动路径:"kernel\drivers\usb\gadget\function\f_uac1.c" 内核配置:CONFIG_USB_CONFIGFS_

多款式随身WiFi如何挑选,USB随身WiFi、无线电池随身WiFi、充电宝随身WiFi哪个好?优缺点分析!

市面上的随身WiFi款式多样琳琅满目,最具代表性的就是USB插电款、无线款和充电宝款。今天就来用一篇文章分析一下这三种款式的优缺点。 USB插电款 优点:便宜,无需充电,在有电源的地方可以随时随地插电使用,比如中兴的USB随身WiFi。 缺点:无电源的情况下,无法带出门使用,部分品牌考虑到这个问题,会配备一个充电仓,这个充电仓相对来说就有点累赘了。网速上也不太稳定,波动比较大。

基于FPGA的开源项目:FOC/SHA/USB/JPEG等

文章目录 [1. USB 1.1控制器](https://github.com/WangXuan95/FPGA-USB-Device)[2. FOC控制算法](https://github.com/WangXuan95/FPGA-FOC)[3. BSV高级硬件描述语言入门指南](https://github.com/WangXuan95/BSV_Tutorial_cn)[4. 基于XDMA的

解决 Android 上的 .NET MAUI/Xamarin.AndroidX 应用调用 ASP.NET Core API 端点时 SSL 连接被拒绝的问题

从虚拟机调用本地API报各种 SSL 连接不上的错误,这给本地调试造成了极大的不便,在被这个问题困扰了多日以后,终于在GitHub上找到答案 基于这个 帖子 ,有一个回复 他写了一个帮助类,专门用来调试本地的API,并给出了这个调用类的用法,此帮助类如下 using System.Net.Security;public class DevHttpsConnectionHelper{pu

关于小米手机USB传输稍大点的文件老中断的问题解决方法!

关于小米手机USB传输稍大点的文件老中断的问题解决方法! 这是一个很痛苦的事情,当你传输大文件的时候,传输到一半就会莫名其妙的中断,拔插数据线很多次以后,好不容易没准可以成功传输一次。 后来使用了360的手机助手,从调试模式传输文件,虽然不会中断,但是慢的要死。 最后我看到手机插上后手机提示 有3种模式:仅限充电 传输文件(MTP) 传输照片(PTP)。当然我们选择传输文件是没戏了,会中

VirtualBox安装VirtualBox Extension Pack,支持USB No USB devices connected after upgrade

安装步骤及出现问题解决No USB devices connected after upgrade: 一、本要主机ubuntu14.04,安装virtualbox,支持usb设置步骤: 1.安装VirtualBox. 可以从https://www.virtualbox.org官方站点下载或者从软件中心。 2.在VirtualBox里安装Windows; 3.为USB2.0,你需要

QT Android开发之Android端usb调试模式设置与问题解决

一.QT android开发android端usb调试模式设置 QT android开发环境搭建完成后,android设备需要打开usb调试模式才能正常连接,下面以小米ipad为例进行设置(其他手机和ipad设置方法类似) 常见问题: 本文会介绍相关问题的解决方法。 二.小

【电子通识】无法识别USB设备怎么就和USB线序有关系

最近在做一个和USB通信有关的工装,有点类似于HUB但又有点不同。Type-C和USB-A两种输入选择,然后再选择输出8个通道中的一个。         在焊接调试时,首先先验证一路。因为USB-A公头转USB-A公头的线有点难找,所以找到一根USB线缆,中间剪掉一半直接焊在USBA焊盘上方便调试。         根据标准的USB接口线颜色的定义,一般为红(VCC)

将RK3588平台的TMC等USB function驱动挪出内核源码树

背景 前一段时间定位一个上位机通过USB-TMC连接下位机(基于RK3588平台)时界面发生卡顿的问题,发现USB-TMC驱动代码是放在内核源码树里跟内核一起编译的,觉着这样既不便于更换TMC 驱动版本(每次修改代码都要重编内核),也不便于将TMC驱动代码单独放到SVN管理(RK的build系统有16GB之巨,全部提交到SVN服务器吃不消),于是考虑将其挪到源码树外。 想参照自己之前在zynq