首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

USB通信基础知识

1 USB系统组成 主机:提供USB接口和接口管理功能的硬件、软件、固件的复合体。...PID) 奇数据包(PID) 握手 (handshake) 确认(ack) 不确认(nack) 停止(stall) 0x4B 0x5A 0x1E 接收器无错的接收数据包 接收设备忙不能接收数据 设备出错通信不上...专用包 (special) 前同步(PRE) 0x2C 主机发送的前同步字。...isochronous transfers):周期性,持续性的传输,用于传输与时效相关的信息,并且在数据中保存时间戳的信息 中断传输(interrput transfers):周期性,低频率,允许有限延迟的通信...大容量数据传输(bulk transfers):非周期性,大容量突发数据的通信,数据可以占用任意带宽,并容忍延迟 6.6 USB枚举过程 当一个USB设备插入主机后,会有以下活动: 供电 复位

2K10
您找到你想要的搜索结果了吗?
是的
没有找到

linux c++进程间通信_c++多线程通信

按照POSIX 1003.1c 标准编写的程序与Linuxthread 库相链接即可支持Linux平台上的多线程,在程序中需包含头文件pthread. h,在编译链接时使用命令: gcc -D -REENTRANT...使用Linuxthread库需要2.0以上版本的Linux内核及相应版本的C库(libc 5.2.18、libc 5.4.12、libc 6)。 2....Linux下的C语言编程有多种线程同步机制,最典型的是条件变量(condition variable)。...4.实例   下面我们还是以名的生产者/消费者问题为例来阐述Linux线程的控制和通信。一组生产者线程与一组消费者线程通过缓冲区发生联系。生产者线程将生产的产品送入缓冲区,消费者线程则从中取出产品。...下多线程的控制及线程间通信编程方法,给出了一个生产者/消费者的实例,并将Linux的多线程与WIN32、VxWorks多线程进行了类比,总结了一般规律。

3.7K10

linux usb端点

主机与设备之间通信时最终会总用于设备上的各个端点,它是主机与设备间通信流的一个逻辑终端。...USB设备进行访问。...五、端点与管道 1、管道的概念 管道是主机软件(数据缓存区),和USB设备各各端点之间的数据传输连接,他是两者之间通信流的抽象(实际上数据传输是USB总线接口完成)。...管道与USB设备中的端点逐个对应,并且各个管道的数据传输是相互独立的。 2、管道的格式分类 管带的通信格式分为两种,一种为流,另一种为消息,这两种通信格式不同且互斥。...数据从流通道一端流进的顺序与它们从流通道另一端流出时的顺序是一样的(先进先出),并且流通道中的通信流总是单向的。 2)、“消息”指具有某种USB定义格式的数据流。

9.8K30

USB通信协议深入理解

USB数据在【主机软件】与【USB设备特定的端点】间被传输。【主机软件】与【USB设备特定的端点】间的关联叫做【pipes】。一个USB设备可以有多个管道(pipes)。 1....包(Packet) 包(Packet)是USB系统中信息传输的基本单元,所有数据都是经过打包后在总线上传输的。数据在 USB总线上的传输以包为单位,包只能在帧内传输。...高速USB 总线的帧周期为125us,全速以及低速 USB 总线的帧周期为 1ms。帧的起始由一个特定的包(SOF 包)表示,帧尾为 EOF。...注意:虽然高速USB总线和全速/低速USB总线的帧周期不一样,但是SOF包中帧编号的增加速度是一样的,因为在高速USB系统中,SOF包中帧编号实际上取得是计数器的高11位,最低三位作为微帧编号没有使用,...输出(OUT)事务处理 输出事务处理:表示USB主机把一个数据包输出到总线上的某个USB设备接收的过程。

89820

深入理解 USB 通信协议

USB数据在【主机软件】与【USB设备特定的端点】间被传输。【主机软件】与【USB设备特定的端点】间的关联叫做【pipes】。一个USB设备可以有多个管道(pipes)。 2....包(Packet) 包(Packet)是USB系统中信息传输的基本单元,所有数据都是经过打包后在总线上传输的。数据在 USB总线上的传输以包为单位,包只能在帧内传输。...高速USB 总线的帧周期为125us,全速以及低速 USB 总线的帧周期为 1ms。帧的起始由一个特定的包(SOF 包)表示,帧尾为 EOF。...注意:虽然高速USB总线和全速/低速USB总线的帧周期不一样,但是SOF包中帧编号的增加速度是一样的,因为在高速USB系统中,SOF包中帧编号实际上取得是计数器的高11位,最低三位作为微帧编号没有使用,...输出(OUT)事务处理 输出事务处理:表示USB主机把一个数据包输出到总线上的某个USB设备接收的过程。

1.1K20

FPGA和USB3.0通信-USB3.0 PHY介绍

可以和FPGA搭配使用的USB3.0 PHY芯片 通过之前的介绍,我们大致了解到USB3.0整个协议异常复杂,就连物理层都需要SerDes(FPGA实现的情况...USB3.0 PHY简介 首先我们需要了解PHY具体完成哪些工作以及我利用FPGA能 实现哪些工作才能实现USB通信。...LEVEL0 通信连接示意图 升级的UTMI+接口 ULPI(UTMI+ Low Pin Interface) 通信连接示意图 以上三种接口都是和USB2.0 PHY通信的接口(如果还不理解的话,这三种接口类似网口中媒体接口...举例如下:我用FPGA实现USB2.0通信,我使用逻辑实现cntroller+外挂USB PHY的方式,那么我的接口基本使用ULPI接口(降低pin的数量); USB3316 芯片逻辑框图 (来源:芯片数据手册...,这里在多说一句,目前市场上为了方便开发,USB3.0芯片内部会放置一个单片机,主要还是方便扩展接口,以方便芯片不单单只在USB3.0通信方面应用。

2.7K30

Android USB转串口通信开发基本流程

好久没有写文章了,年前公司新开了一个项目,是和usb转串口通信相关的,需求是用安卓平板通过usb转接后与好几个外设进行通信,一直忙到最近,才慢慢闲下来,趁着这个周末不忙,记录下usb转串口通信开发的基本流程...我们开发使用的是usb主机模式,即:安卓平板作为主机,usb外设作为从机进行数据通信。...2.打开设备 接下来,我们需要打开刚刚搜索到的usb设备,我们可以将平板与usb外设之间的连接想象成一个通道,只有把通道的门打开后,两边才能进行通信。...3.数据传输 到这里,我们已经可以与usb外设进行数据传输了,首先来看怎么向usb设备发送数据。...转串口通信的基本流程,有些地方写的不是很全面,比如接收usb外设数据的方法应该还有别的,不足之处欢迎指正。

3.3K40

USB2.0 to USB Type-C with STM32 devices

type-c接口比较方便,可插拔次数也比较多,很多MCU目前都只具有USB2.0接口,但是只需要一点改动就可以转成type-c接口。以STM32举例说明。...目前常用的usb3.0的type-c是向下兼用USB2.0的,新发布的usb4.0也是向下兼容的。因此下述的方法也是可以的。...目前的type-c接口如下图所示: 在USB2.0端口,USB根据数据传输的方向定义了HOST/Device/OTG三种角色,其中OTG即可作为HOST,也可作为Device,在Type-C中,也有类似的定义...电阻Rd=5.1k,电阻Rp为不确定的值,USB Type-C有几种供电模式,靠什么来甄别?就靠Rp的值,Rp的值不一样,CC检测到的电压就不一样。然后来控制DFP端执行哪种供电模式。...stm32 USB2.0 Device转成TYPE-C如下图所示: stm32 USB2.0 Host转成TYPE-C如下图所示: stm32 USB2.0 Otg转成TYPE-C如下图所示: 具体在其文档

1.6K40

USB Type C 接口定义及名词解释和 Typec CUSB A 2.0

USB接口定义 USB Type C接口定义 Type C接口母头(插座) Type C接口公头(插头) 引脚定义 配置通道(CC)详解 配置通道CC的用途如下: 检测USB设备是否接入;...; 名词解释 在USB2.0端口,USB根据数据传输的方向定义了HOST/Device/OTG三种角色,其中OTG即可作为HOST,也可作为Device,在Type-C中,也有类似的定义。...USB PORT的供电(或者受电)情况,USB Type-C将port划分为Source、Sink。 Source:通过VBUS或者VCONN供电。 Sink:通过VBUS或者VCONN接受供电。...再次接通USB供电(协商USB电力传输,选择供电模式,电池充电等)。 最后进行USB枚举。...Type C三种工作模式 USB3.1标准有三种工作模式: 1:DRP。

2.5K10

C# 获得设备usb信息

本文告诉大家如何获得设备的usb来进行判断是否有哪些usb和找不到usb可能是什么。...需要在项目右击引用,点击程序集,搜索 System.Management 然后安装他 然后使用下面的代码就可以获得设备的 usb 请看代码 static List<(string DeviceID...} collection.Dispose(); return devices; } 如果需要判断是否存在某个 usb...,就通过 pid vid 判断,判断的方法是拿PNPDeviceID字符串比较 参见:c# 获取移动硬盘信息、监听移动设备的弹出与插入事件 - Chris Cheung - 博客园 如果发现找不到 usb...,可能是在开机的时候进行找usb,一般需要开机之后很久才会把所有的设备添加,所以如果找不到,就看开机的时间,如果太短,那么可能是因为程序太快去查。

2K30

USB Type-C spec (2)

USB Type-C spec 本文是 Type-C spec 第二篇 1、Type-C Cables Emark Cables(带电子标签的线缆): 带 Emark IC 的 Cable,Emark...Active Cables (有源线缆): 包含数据总线信号调节电路的 Emark Cable (起到增强 USB 传输信号的作用),PD 通讯过程中可以以 SOP'/SOP'' 来和 cable 的两端通讯...最大电流 3A 支持超过 20V 电压 支持 USB3.2 & USB4 满足以上任意一个条件就必须要带 Emark IC 2、Vconn 与主机建立连接之后,重新设定未与 CC 连接的 CC Pin...Devices(VPDS):一个 USB 直连的设备,仅通过 Vconn/Vbus 供电 3: Charge-Through Vconn-Powered USB Device (CTVPD):一个设备可以实现供...@500mA VBUS 所需的额外 USB 电力传输可以进行协商,Battery Charge 1.2 (BC 1.2) 或 USB PD 都可以选择 使用结构化供应商定义报文 (SVDM) 需要 USB

37320

C# 获得设备usb信息

本文告诉大家如何获得设备的usb来进行判断是否有哪些usb和找不到usb可能是什么。...需要在项目右击引用,点击程序集,搜索 System.Management 然后安装他 然后使用下面的代码就可以获得设备的 usb 请看代码 static List<(string DeviceID...} collection.Dispose(); return devices; } 如果需要判断是否存在某个 usb...,就通过 pid vid 判断,判断的方法是拿PNPDeviceID字符串比较 参见:c# 获取移动硬盘信息、监听移动设备的弹出与插入事件 - Chris Cheung - 博客园 如果发现找不到 usb...,可能是在开机的时候进行找usb,一般需要开机之后很久才会把所有的设备添加,所以如果找不到,就看开机的时间,如果太短,那么可能是因为程序太快去查。

1.9K10

Linux USB 设备基础理论

通过扫描以下目录获取物理节点所有 USB 设备: /sys/bus/usb/devices/usb* /sys/bus/usb/devices/usb*/$busnum-* 从该文件系统收集某一个设备的主要信息如下..."level": 1, "manufacturer": "QEMU", "port": 0, "prodid": "0001", "product": "QEMU USB...: 产品 serial: USB 硬件设备序列号 ,例如 0000:00:01.2 定位方法# 定位某一个 USB 设备的方法有两种: busnum + devnum idVendor + idProduct...Type-C Bridge Class DCh 设备描述符、接口描述符 Diagnostic Device E0h 接口描述符 无线控制器 EFh 设备描述符、接口描述符 Miscellaneous...By USB 中文网 USB设备描述符中的idVendor、idProduct和bcdDevice By USB 中文网 USB 硬件设备的序列号 By IBM 注:本作品采用 知识共享署名-非商业性使用

27830
领券