精华内容
下载资源
问答
  • 本文通过介绍Linux中支持USB的各种模块和库,分析了在Linux上利用USB实现高速串口和以太网连接等通信方式的具体方法。  通用串行总线(USB,Universal Serial Bus)是一种非常实用的通信接口,其应用日益广泛。有三...
  • 为了简化USB设备的开发和接入到PC系统,微软开发了WinUSB,可以将Winusb.sys作为设备功能驱动程序安装,并提供WinUSB API供应用程序访问设备。一直以来,除了USB HID设备,其他类型的设备在WINDOWS环境下需要安装...
  • USB 到底是如何通信的(三)?

    千次阅读 2020-08-16 20:06:00
    USB通信格式 前面简单提到过,USB接口最少有四根线连接,其中有两根是数据线,而所有的USB数据传输都是通过这两根线完成的,那么它是怎么做到的? 我们知道,串口为了实现通信,规定了起始位、停止位,有时候也可能...

    来源:公众号【鱼鹰谈单片机】

    作者:鱼鹰Osprey

    ID   :emOsprey

    昨天发了一通牢骚《不接广告行不行?不接广告你养我吗?》,感谢各位道友的支持与理解,不过牢骚归牢骚,还是需要继续更新的,不管外界如何,这个系列鱼鹰肯定要更新完的。

    前两周,我们知道了为什么要学 USB,还有介绍了 USB 的整体情况:

    为什么说你要学习USB?(一)

    USB 之概述

    今天,鱼鹰再介绍一下USB是如何通信的,即如何通过两根数据线完成通信呢(也就是上图中的最底层通信)?

    USB通信格式

    前面简单提到过,USB接口最少有四根线连接,其中有两根是数据线,而所有的USB数据传输都是通过这两根线完成的,那么它是怎么做到的?

    我们知道,串口为了实现通信,规定了起始位、停止位,有时候也可能增加奇偶校验位,如果你知道了串口的波特率,那么你就可以正确的接收到发送方发来的数据。

    那么USB应该也有相应的通信格式要求才对,那么它的格式是怎么样的?

    因为 USB 通信远比串口复杂的多,所以本节内容不会面面俱到,更多的是为后面的学习提供基础,因此有些内容不会展开描述,感兴趣的可以查找相应的资料学习。

    串口中高电平代表1,低电平代表0,并且是全双工通信,即可以同时发送和接收数据。

    而 USB 有所不同,它虽然也有两根数据线,但它们却是采用差分传输,即需要两根数据线配合才能传输一个bit,因此是半双工通信,同一时间只能发送或者接收。

    首先我们需要了解一下差分 0 和差分 1 这两种状态:

    差分1:数据线 D+ 为高电平, D- 为低电平时为差分 1;

    差分0:数据线 D+ 为低电平, D- 为高电平时为差分 0。

    但是要注意的是,这里的差分0、差分1可不是代表数据0和1,而仅仅只是数据线表现的状态,和真正的数据还有距离。

    USB 规定,如果电压电平不变,代表逻辑1;如果电压电平变化,则代表逻辑0,这就是 NRZI (Non-Return-to-Zero Inverted Code)编码(关于这个编码感兴趣的可以看次条文章)。

    看下图进行理解:

    USB不通信时,数据线处于闲置状态(类似于串口的高电平闲置),一旦需要开始通信,首先切换到K状态(类似串口的起始位),再进行实际的数据传输,在这里传输的数据为 000011,实际的数据线状态为差分101000,传输完毕后需要发送结束信号EOP:2位的 SE0,再加 1 位的J状态(类似串口的停止位)。

    这里只是简单的说明,实际上的数据传输比这个还要复杂一些,但大体是一致的(上述可能会有误,毕竟鱼鹰没有使用示波器查看过,通过资料进行理解的)。

    并且需要注意的是,上述描述的闲置状态和J、K等状态和设备类型有关,即全速设备和低速设备这些状态的定义不同(这个可能和设备数据线的上拉电阻位置相关)。

    (来源于cypress  AN57294)

    采用 NRZI 编码的好处是可以不需要时钟线进行同步,但是为了实现准确的采样,需要两个条件:

    1、数据传输前需要发送同步域(SYNC),这个域固定为 0000 0001,通过NRZI编码后就是一串方波信号,接收者可以通过方波信号确定采样率(可以认为是串口的波特率)。

    2、因为数据中有大量的0,可以让接收者通过信号的变化不断调整采样频率,但是如果刚好数据中没有0怎么办?

    一旦有大量的1存在于数据线上,那么数据线的电平将长时间不会发生变化,也就无法进行速率的同步,一旦接收者和发送者各自的时钟频率存在误差,那么很可能因为长时间没有电平变化而导致采样失败(误差长时间累积),所以  bit-stuffing 出现了,即所谓的强制插 0。

    USB规定,6个连续的逻辑 1 之后需要插入一个逻辑0来实现位填充,这样D+和D-就会发生变化,从而让接收者实现时钟同步。

    在接收时,只要将6个逻辑1后的0删除就可以恢复数据。

    (来源于cypress  AN57294)

    可以看到,6个连续的1之后强制插入了一个0进去,这样即使接收方和发送方各自的时钟存在误差,也可以通过信号的变化实时同步,从而准确的进行采样。

    以上内容就是 USB 为什么只需要两根线就能进行快速进行数据传输的关键。

    USB 数据包

    下面再来聊聊数据包:

    前面这张图介绍了如何通过 USB 数据线传输000011 数据,事实上在 USB 中,所有的数据都是以包(Packet)的形式进行传输的,而数据包是有一定的格式,也就是说,为了传输00011,需要按照包的格式才能正确传输。

    数据包有如下组成部分:

    (来源于 ST 资料)

    首先是 SOP(即从闲置状态到K状态),然后是 SYNC,即前面提到的同步域,用于接收方的时钟同步,其次才是我们需要传输的数据内容,最后是 EOP(2位 SE0,1位J状态)。

    如此,你的数据(PacketContent)才能被接收方正确接收。

    数据包分为四大类:

    令牌 (Token) Packet

    帧首 (Start of Frame) Packet

    数据 (Data) Packet

    握手 (Handshake) Packet

    每一类又可能分为多种具体的数据包,比如令牌包分为OUT、IN、SETUP等数据包,

    每一类中的 Packet Content 内容可能是不一样的,比如:

    令牌 (Token) Packet

    (灰色部分代表不存在)

    帧首 (Start of Frame) Packet

    (灰色部分代表不存在)

    数据 (Data) Packet

    (灰色部分代表不存在)

    握手(Handshake) Packet

    (灰色部分代表不存在)

    为什么要缺斤少两呢?或许和数据包的功能有关,毕竟有些内容在有些包中是不需要存在的,那为什么还要加入传输增加总线的负担呢。

    以上具体的内容可以查看鱼鹰提供的资料,比如 CRC 是怎么计算的,帧号里面的内容是怎样的?

    对于软件开发而言,我们可以不必关心这么多,只要我们能正确的从相关寄存器中获取我们想要的数据即可,也就是我们需要知道当前令牌是什么,传输的数据是什么就可以了,其他的可以在学完整个 USB 后自行深入了解。

    下一章节,鱼鹰将介绍 USB 的四大传输,即控制、中断、同步、批量传输,同时介绍四大传输和数据包的关系,半双工的通信是如何工作的。

    敬请期待!

    推荐阅读:

    嵌入式系统优先级详解

    KEIL 调试经验总结

    线程CPU使用率到底该如何计算?

    许久以后,你会感谢自己写的异常处理代码

    终极串口接收方式,极致效率

    延时功能进化论(合集)

    如何写一个健壮且高效的串口接收程序?

    打了多年的单片机调试断点到底应该怎么设置?| 颠覆认知

    -THE END-


    如果对你有帮助,记得转发分享哦

    微信公众号「鱼鹰谈单片机」

    每周一更单片机知识

    长按后前往图中包含的公众号关注

    展开全文
  • 通过pc端的c++语言编程实现与单片机的通讯,可用于pc端c++处理程序后给单片机发送一个trigger指令的情况。 使用方法: 1.将contest.cpp中的代码加入需要的程序中 2.将PCB板上UART1的IO口通过usb转TTL工具与电脑的...
  • C#实现USB设备通信

    2019-08-23 11:08:24
    导入hid.dll、setupapi.dll、Kernel32.dll 获取全部的USB设备列表 通过比对VID、PID、Version来识别待连接的USB设备 使用CreateFile、WriteFile等接口进行读写 返回消息读取为异步方式 VS2017、VS2019
  • USB 通信技术

    2020-11-18 05:19:24
     根据设备对系统资源需求的不同,在 USB规范中规定了四种不同的数据传输方式:  等时传输方式(Isochronous)、中断传输方式(Interrupt)、控制传输方式(Contr
  • USB通信协议——传输

    2020-11-13 06:27:35
    PC主机为了能下达命令,或是传输数据给外围设各,基本上,就必须有一套标准的USB通信协议来实现这个目的。如图所示,为PC主机与设备执行通信协议的整体结构。这个结构相当重要。图中显示了一个通信协议所需包含的...
  • 项目四 多线程文件下载 25 项目五 Android自定义树形菜单 26 ...项目八 Android USB Socket通信 27 学习四 Android and MCU Communication 43 一、 uses USB via FTDI serial card 43 二、 uses Uart(through JNI) 44
  • 针对LabVIEW无法直接支持非NI公司的USB接口数据...系统地阐述了上位机LabVIEW与下位机PSoC3通过USB实现通信的各种方式,并提出了一种新方法:即将PSoC3构建为LabVIEW中已有的驱动类型的USB设备,例如声卡、串口类型等。
  • 开发一个不需要第三方类库即可完成的USB通讯案例项目,使用Windows API是为了正式的项目应用中客户免于安装第三方库或者使用其他特定类库文件导致的复杂问题。数据反馈和设备的移除都是通过事件触发接收。
  • 通信协议之USB

    2019-03-10 13:34:30
    前言 USB也是当前应用比较...Usb1.1 :usb1.1是标准的USB规范,高速方式的传输速率为12Mbps,低速方式的传输速率为1.5Mbps,b/s位传输速度,bps位传输速率。 USB2.0:由USB规范1.1规范演变而来,传输速率达到了48...

    前言

    USB也是当前应用比较广泛的设备,本文将挑重点对其做一些概要性的介绍,更详细的了解可以去网上找《圈圈带你学USB》这本书,属于介绍USB的经典之作。

    USB分类

    1按协议分
    Usb1.1 :usb1.1是标准的USB规范,高速方式的传输速率为12Mbps,低速方式的传输速率为1.5Mbps,b/s位传输速度,bps位传输速率。
    USB2.0:由USB规范1.1规范演变而来,传输速率达到了480Mbps,足以满足大多数外设的速率要求。
    Usb3.0 理论速度大概是5Gbps,实际的话只能根本大不到,但是要比USB2.0快的多
    USB3.1 理论速度10Gbps,
    注:USB1.0,USB2.0最大输出电流500mA,USB3.0和usb3.1最大输出电流是900mA
    2按接口分
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    Mini USB和micro usb都分为 TYPE-A 和TPYE-B类型,现在经常见的基本都是B类型的

    硬件结构

    1.引脚
    在这里插入图片描述
    USB使用的是四线制,如上图所示,数据传输通过一个差分双绞线进行传输,另外两根是VCC和GND,为了区分,USB电缆中的线用不同颜色标注。
    2电平信号
    USB是利用差分信号来表示逻辑1和逻辑0的,定义如下

    逻辑1      D+大于2.8V and D- <0.3V
    逻辑0      D-大于2.8V and D+ <0.3V
    

    3.USB设备插入检测
    在这里插入图片描述
    如图示,默认主机侧USBD+和D-接了一个下拉电阻,即线上成低电平,当接入低速设备时(低速设备D-接了一个上拉电阻),若检测到D-变为高电平且持续一段时间,则认为接入低速设备,同理,由于全速设备D+接了一个上拉电阻,则检测到D+变为高电平持续一段时间,认为全速设备接入。此处要说明的是低速设备指的是传输速率1.5Mbps,全速设备指的是12Mbps,高速设备指的是480Mbps.USB总线会根据外设情况自由地切换传输速度。

    四种传输类型

    1.控制传输
    控制传输,支持外设与主机之间的控制,状态,配置等信息的传输,为外设与主机之间提供一个控制通道,每种外设都支持控制传输类型,这样主机与外设之间就可以传送配置和命令状态信息。
    2.同步传输
    又称等时传输,支持有周期性,有限的时延和带宽,且数据传输速率不变的外设与主机间的数据传输,该类型五差错校验,故不能保证正确的数据传输,支持像计算机-电话集成系统和音频系统与主机的数据传输。
    3.中断传输
    支持像游戏手柄,鼠标和键盘等输入设备,这些设备与主机间数据传输量小,无周期性,但对响应时间敏感,要求马上响应。
    4.块传输
    支持打印机,扫描仪,数码相机等外设,这些外设与主机间传输的数据量大,USB满足带宽的情况下才进行该类型的数据传输。

    描述符

    1.USB加载传输
    a.当USB设备接入HUB或ROOT HUB后,主机控制器和主机软件能自动检测到设备的接入。
    b.然后主机软件读取一系列的数据用于确认设备特征,即读取各种描述符
    c.之后主机分配给外设一个单独的地址。地址是动态分配的,每次可能不同。
    d.在分配完地址之后对设备进行初始化,初始化完成以后就可以对设备进行IO操作了。
    2.什么是描述符
    USB的描述符实质上就是对于一个具体设备所有属性,配置,能力等等所有信息的综合,这是一个将数据与数据处理过程分开来的典型例子;设备描述符:主要是指明设备的类型,使用的协议,VID,PID,设备版本号等。

    设备描述符:  代表一个USB设备
    配置描述符:  说明各个配置的特性,所含接口个数(例如配置成低功耗模式和高功耗模式各占一个配置)
    接口描述符:  说明接口的特性(例如光驱使用文件传输时,使用大容量存储接口,播放CD时使用其音频接口)
    端点描述符:  数据传输就是在主机和USB设备各个端点之间进行通信的,端点一般由USB接口芯片提供,每个端点的传输方向一般固定。0端点比较特殊(IN,OUT)且只支持控制传输。
    字符串描述符:说明一些专用信息,如制造商名称,设备序列号,对USB设备而言可选。
    

    通常一个设备描述符包含多个配置描述符,一个配置描述符包含多个接口描述符,一个接口描述符包含多个端点描述符。

    其他一些知识点

    1.USB存不存在总线仲裁
    当多个从设备主动申请总线访问时需要考虑总线仲裁,但是USB通信是master-slave*N的结构,无论是发送还是接受都是主机先发起,所以不存在总线仲裁的问题。
    2.ST进行USB相应库
    目前ST标准外设库里面是没有USB库的,CUBE开发库里面有,但是呢,USB有独立于标准外设库之外的相应库使用,名字是“USB-FS 设备固件库”,下面这个链接是使用CUBEMX生成自定义HID的教程
    https://blog.csdn.net/weixin_44341293/article/details/88375857

    展开全文
  • 可以为企业或家庭网络中的用户组织功能齐全的 USB服务器,允许用户通过本地网络、WLAN、或 Internet 远程使用共享USB设备,通过外网共享usb这种方式就可以达到像直接连接到大家的计算机一样,外网共享usbUSB ...
  • 可以为企业或家庭网络中的用户组织功能齐全的 USB服务器,允许用户通过本地网络、WLAN、或 Internet 远程使用共享USB设备,通过外网共享usb这种方式就可以达到像直接连接到大家的计算机一样,外网共享usbUSB ...
  • STM32F407 USB通信源码,单片机做从设备,使用的CDC类进行数据传输,通信速率可接近理论极限值12Mbps,亲测可以使用!
  • 本资源中包含STM32通信的相关资料以及详细的设计方式.
  • Android 使用USB与PC通信之ADB方式

    千次阅读 2018-04-14 17:05:51
    Android 使用USB与PC通信之...本篇文章介绍使用adb来进行与pc端的usb通信 首先必须确保手机要打开开发者模式 android端建立socket服务端,监听10010端口 try { // 实例化ServerSocket对象并设置端口号为 10010...

    Android 使用USB与PC通信之ADB方式

    之前介绍过一篇使用UsbAccessary模式来与pc通信的文章点击链接

    本篇文章介绍使用adb来进行与pc端的usb通信

    首先必须确保手机要打开开发者模式

    android端建立socket服务端,监听10010端口

            try {
                // 实例化ServerSocket对象并设置端口号为 10010
                mServerSocket = new ServerSocket();
                mServerSocket.setReuseAddress(true);
                mServerSocket.bind(new InetSocketAddress(10010));
    
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            while (!stopFlag) {
                if (mServerSocket != null) {
                    try {
                        // 等待客户端的连接(阻塞)
                        clientSocket = mServerSocket.accept();
                        inputStream = clientSocket.getInputStream();
                        outputStream = clientSocket.getOutputStream();
    
                        if (clientSocket != null) {
                            mReceiveThread = new ReceiveThread(inputStream);
                            // 开启接收线程
                            mReceiveThread.start();
                            EventBus.getDefault().post(new MessageEvent(SocketUtils.CON, SocketUtils.HOST));
                        }
    
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
    
                        e.printStackTrace();
                    }
    
                }
            }

    pc端程序需要执行一条命令adb forward命令,将10010端口(android端socket端口)数据转发到10086端口上,执行命令后最好阻塞一段时间

            try {
                Runtime.getRuntime()
                        .exec("adb forward tcp:10086 tcp:10010");
                Thread.sleep(1000);
            } catch (IOException | InterruptedException e) {
                e.printStackTrace();
            }

    pc端建立socket客户端,连接10086端口

            Socket socket = null;
            try {
                InetAddress serverAddr = null;
    
                serverAddr = InetAddress.getByName("127.0.0.1");
                System.out.println("TCP 1" + "C: Connecting...");
                socket = new Socket(serverAddr, 10086); // 10010 是 PC 的端口,已重定向到;
                // Device 的 10086 端口
    
                SendADBThread sendADBThread = new SendADBThread(socket);
                sendADBThread.start();
    
                ReceADBThread receADBThread = new ReceADBThread(socket);
                receADBThread.start();
    
            } catch (UnknownHostException e1) {
                System.out.println("TCP 2" + "ERROR: " + e1.toString());
            } catch (IOException e2) {
                System.out.println("TCP 3" + "ERROR: " + e2.toString());
            }

    socket连上后就可以进行通讯了,

    其他细节可以参考demo

    demo使用方式: 首先在手机上打开app,然后在运行pc端程序

    demo下载: https://github.com/GavinAndre/UsbAccessoryDemo

    展开全文
  • 通过系统API的方式访问读写USB设备数据,通过windows API免驱动即可读写USB设备,程序可自定义配置信息调整测试连接USB设备。
  • USB 四种传输方式详解

    万次阅读 2019-01-10 13:57:09
    如果你是从硬件开始来设计整个的系统,你还要正确选择传输的方式,而作为一个驱动程序的书写者,就只需要弄清楚他是采用的什么工作方式就行了,通常所有的传输方式下的主动权都在PC边,也就是host边。 USB2.0 中四种...

    传输方式


    USB,有四种的传输方式,控制(Control),同步(isochronous),中断(interrupt),大量(bulk)。如果你是从硬件开始来设计整个的系统,你还要正确选择传输的方式,而作为一个驱动程序的书写者,就只需要弄清楚他是采用的什么工作方式就行了,通常所有的传输方式下的主动权都在PC边,也就是host边。
    USB2.0 中除同步传输方式以外都是 Token + Data + Handshake 的方式,其中Data 是可选的。

    1、控制(Control)方式传输

    控制传输是双向传输,数据量通常较小,USB系统软件用来主要进行查询,配置和给USB设备发送通用的命令,控制传输方式可以包括,8,16,32和64字节的数据,这依赖于设备和传输速度,控制传输典型地用在主计算机和USB外设之间的端点(Endpoint)0之间的传输,但是指定供应商的控制传输可能用到其它的端点。

    在这里插入图片描述

    2、同步(isochronous)方式传输

    同步传输提供了确定的带宽和间隔时间(latency),它被用于时间严格并具有较强容错性的流数据传输,或者用于要求恒定的数据传输率的即时应用中,例如执行即时通话的网络电话应用时,使用同步传输模式是很好的选择,同步数据要求确定的带宽值和确定的最大传输次数,对于同步传输来说,即时的数据传递比完美的精度和数据的完整性更重要一些。
    在这里插入图片描述

    3、中断(interrupt)方式传输

    中断方式传输主要用于定时查询设备是否有中断数据要传输设备的端点模式器的结构决定了它的查询频率,从1到255ms之间,这种传输方式典型的应用在少量的分散的,不可预测数据的传输,键盘,操纵杆和鼠标就属于这一类型中断方式传输是单向的并且对于host,来说只有输入的方式。
    在这里插入图片描述

    4、大量(bulk)传输

    主要应用在数据大量传输传输和接受数据上,同时又没有带宽和间隔时间要求的情况下,要求保证传输,打印机和扫描仪属于这种类型,这种类型的设备适合于传输非常慢和大量被延迟的传输,可以等到所有其它类型的数据的传输完成之后再传输和接收数据。
    在这里插入图片描述

    USB将其有效的带宽分成各个不同的帧(frame)(high speed 是micro frame),每帧通常是1ms时间长(micro frame 是125us),在full speed 每个设备每帧只能传输一个同步的传输包( maximum data payload size to1023byte),在high speed 每个设备每帧能传输几个同步的传输包( maximum data payload size to1024byte),因此在完成了系统的配置信息和连接之后,USB的host就会对不同的传输点和传输方式做一个统筹安排,用来适应整个的USB的带宽,通常情况下,同步方式和中断方式的传输会占据整个带宽的90%,剩下的就安排给控制方式传输数据。

    下图是USB数据传输的结构示意图:

    在这里插入图片描述

    展开全文
  • 单片机、usb和串口通信

    千次阅读 2021-01-15 14:25:28
    EA=0时从外部开始执行程序 32~39 P0.7~P0.0 端口P0 40 VCC 电源正 USB 1 USB简介 USB 就是指通用串行总线(Universal Serial Bus),是计算机外围设备通讯的总线标准。USB 能够实现从出现迅速发展到普遍应用,其主要...
  • 1、概述  自Android3.1(API Level 12)版本开始,Android系统直接支持USB主机模式和从机模式,同时为能够使更广泛...至于在之前的Android版本没有直接提供USB通信支持时,我们只能使用ADB的方式来实现Android设备与其
  • USB4是什么?与USB 3.2有什么差异?

    千次阅读 2020-08-16 01:24:41
    在了解USB4和USB 3.2之前,需要先梳理一下USB的发展历程。 USB的演变 USB的演变 USB是一种传输数据的协议规范,也是一种接口技术规范。1996年由美国的Intel、微软、康柏、DEC和IBM,日本的NEC,加拿大的北方...
  • 在嵌入式系统中USB技术主要有两种应用方式,一种是USB总线设备的USB设备方式,一种是USB主控制器的嵌入式USB主机。USB 设备已经得到了广泛的使用,但是USB 主机实现其复杂性却没有很多应用实例。文章主要研究了USB...
  • USB_HID通信

    2019-11-09 09:39:15
    文章目录一、USB_HID通信1.设备描述符2.配置描述符3.接口描述符4.端点描述符5.包标识符PID6.报告描述符二、USB电气特性三、USB设备的插入检测机制四、USB设备的枚举过程五、配置集合1.设备描述符2.配置描述符3.接口...
  • HID USB 通信

    千次阅读 2018-06-11 15:13:49
    接口通讯,并给出了通信程序的部分代码。 关键词: 通用串行总线人际接口设备  API VisualC ++ 1  引言 在 USB 出现之前,计算机的典型接口有并行口(打印口),串行口,鼠标口,键盘口,显示器口,游戏口及各种...
  • Ill=J=USB总线是主从式结构,通常采用主从式通信方式。这种方式的缺点在于从设备只能被动响应来自主设备的请求,不能主动发起请求,因而在交互性上受到了限制。但随着嵌入式系统技术的发展,对交互性操作要求越来越...
  • 使用USB HID方式遍历所有usb设备,并以扫描枪为例演示数据接收和发送。
  • 这款小尺寸低功耗的 ISP3582设备控制器不同于hub和dongle的无线USB连接方式,而是在板级上直接集成到最终系统,可以无缝替换目前系统中的有线 USB。  高科技市场营销公司 In-Stat 在最近发布的一篇名为《USB 2006...
  • 使用手机与各类设备通信的场景也越来越多,本篇文章将介绍如何使用安卓手机与USB设备进行通信。 2 USB简介 USB是英文Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与外部设备的...
  • USB2.0 通信协议

    千次阅读 2020-10-31 13:51:11
    USB通信协议深入理解 1.基本概念 一个【传输】(控制、批量、中断、等时):由多个【事务】组成; 一个【事务】(IN、OUT、SETUP):由一多个【Packet】组成。 USB数据在【主机软件】与【USB设备特定的端点】间被传输...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,358
精华内容 18,943
关键字:

usb是什么通信方式