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

USB通信基础知识

1 USB系统组成 主机:提供USB接口和接口管理功能硬件、软件、固件复合体。...接收设备忙不能接收数据 设备出错通信不上 专用包 (special) 前同步(PRE) 0x2C 主机发送前同步字。...用于传输与时效相关信息,并且在数据中保存时间戳信息 中断传输(interrput transfers):周期性,低频率,允许有限延迟通信 大容量数据传输(bulk transfers):非周期性...,大容量突发数据通信,数据可以占用任意带宽,并容忍延迟 6.6 USB枚举过程 当一个USB设备插入主机后,会有以下活动: 供电 复位 获取device descriptor 复位(可选) 分配地址...、厂商信息、USB协议类型、端点包数据最大长度等,每个USB设备只有一个设备描述符。

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

MSP430学习(3)

MSP430单片机具有基本定时器(Basic Timer1),经常用于低功耗当中,他工作目的就是支持软件和各种外围模块工作于低频率 低功耗条件下。...他可作为两个独立8位定时器或一个16位定时器。      一:Basic Timer1寄存器      同过控制仅存器设置可以对计数单元BTCNT1 BTCNT2进行软件控制。...1:BTCTL控制寄存器:其信息决定了Timer1运行状况。SSEL用来选择ACLK或MCLK,DIV决定是否对选定时钟信号分频。...FRFQ1  FRFQ0选择4个BTCNT1 输出之一作为LCD信号。IP0 IP1 IP2决定中断标志BTIFG置位间隔时间,也就是基本定时器BTCNT2定时间隔。    ...LCD驱动桢频率从计数器高4位输出中选择。最高位可以作为BTCNT2时钟输入。

61530

USB通信协议深入理解

USB数据在【主机软件】与【USB设备特定端点】间被传输。【主机软件】与【USB设备特定端点】间关联叫做【pipes】。一个USB设备可以有多个管道(pipes)。 1....高速USB 总线帧周期为125us,全速以及低速 USB 总线帧周期为 1ms。帧起始由一个特定包(SOF 包)表示,帧尾为 EOF。...注意:虽然高速USB总线和全速/低速USB总线帧周期不一样,但是SOF包中帧编号增加速度是一样,因为在高速USB系统中,SOF包中帧编号实际上取得是计数器高11位,最低三位作为微帧编号没有使用,...因此其帧编号增加周期也为 1mS USB总线上情形是怎样?...USB主机从总线上某个USB设备接收一个数据包过程。

90720

深入理解 USB 通信协议

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

1.1K20

基于USB攻击向量总结

本文,我将主要通过上图分类方式来探讨针对USB攻击向量问题。最上层涉及到更多关于人类应用、业务基本交互场景。传输层包括设备固件、协议栈等。物理层则主要描述USB总线上通信问题。...0xB2 数据过滤 由于USB设备通常不会对主机上正在通信应用程序进行身份验证,因此应用程序可能会对USB设备写入或者读取数据。...在某些情况下,这些漏洞可能在主机设备枚举期间被利用。也可能作为一个中间人设备进行数据嗅探。 四、物理层 物理层攻击包括对USB总线通信机密性和完整性攻击。...尽管基于时序指纹显着提高了规避漏洞门槛,但是经验丰富木马设计者可以修改其时序特征来逃避检测。...Oswald等人展示了如何基于功耗和电磁辐射从Yubikey 2中提取AES 128位密钥。

1.1K20

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

可以和FPGA搭配使用USB3.0 PHY芯片 通过之前介绍,我们大致了解到USB3.0整个协议异常复杂,就连物理层都需要SerDes(FPGA实现情况...大致通信方式如下图所示: PHY部分负责最底层信号转换,作用类似于网口PHY,这里如果大家需要了解具体工作可以查看usb specification,因为和本文关系不大,所以不过多介绍了。...在上图中还看到UTMI和PIPE,这是PHY和controller通信接口,USB2.0PHY主要使用ULPI和UTMI,USB3.0主要使用PIPE,对于ULPI和UTMI区别如下: UTMI...LEVEL0 通信连接示意图 升级UTMI+接口 ULPI(UTMI+ Low Pin Interface) 通信连接示意图 以上三种接口都是和USB2.0 PHY通信接口(如果还不理解的话,这三种接口类似网口中媒体接口...举例如下:我用FPGA实现USB2.0通信,我使用逻辑实现cntroller+外挂USB PHY方式,那么我接口基本使用ULPI接口(降低pin数量); USB3316 芯片逻辑框图 (来源:芯片数据手册

2.8K30

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

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

3.3K40

源码系列:基于 FPGA USB2.0 设计

今天给大侠带来基于FPGAUSB2.0设计,附源码,获取源码,请在“FPGA技术江湖”公众号内回复“ USB2.0设计源码”,可获取源码文件。话不多说,上货。...比较遗憾是,USB4发布时间暂未公布。值得注意是,此次发布USB4是规范,而并非USB4.0。...以上就是关于USB标准以及命名讯息,而今天我们要做设计USB2.0,USB2.0设备是按照2.0电源标准设计,设备所需电流小于500mA,而USB3.0接口可以提供更大电流,所以用在USB3.0...端点和FIFO接口应用使外部逻辑和USB总线可高速连接。 ? 基于FX2LPUSB开发,包括三部分:固件程序、驱动、上位机软件。...以上就是我们基于FPGAusb2.0设计了,希望能给各位大侠起到参考学习作用,此次设计到此结束,有缘再见,告辞。

1.2K20

FPGA和USB3.0通信-硬件测试

FPGA和USB3.0通信-硬件测试 本次演示用USB3.0芯片-CYPRESS CYUSB3014(下称 FX3),该芯片是标准USB3.0 PHY,可以大大简化使用USB通信时FPGA设计...设备管理器VID/PID 2、基于内部DMAloopback传输测试 何为LoopBack,通俗点就是FX3接收到什么数据就发送什么数据(类似串口回环)。...此时在工程目录下会生成一个Debug文件夹,文件夹下面就生成了我们需要固件,如下: 接下来,根据自己硬件选择从USB引导。 插上USB,就可以在设备管理器上看到FX3设备。...选择在上一节基础上生成固件(Debug文件夹下): 在上面操作没问题情况 下:工作窗口中原先Cypress USB BootLoader就编程了我们下载固件名字(Cypress USB BulkLoopExample...FPGA和USB3.0通信-USB3.0协议介绍 FPGA和USB3.0通信-USB3.0 PHY介绍 FPGA和USB3.0通信-FX3硬件设计简谈 FPGA和USB3.0通信-SDK安装

2.1K20

Linux驱动开发: 使用usbmon抓取usb 总线上通信数据

一、环境介绍 操作系统: ubuntu18.04 64位 二、usbmon使用方法 2.1 功能介绍 usbmon 即 usb monitor,是 linux 内置 usb 抓包工具。...当前使用是ubuntu18.04,驱动模块位置:/lib/modules/5.3.0-40-generic/kernel/drivers/usb/mon/usbmon.ko 如果不确定当前内核版本...2.4 查看usbmon可以识别到USB总线编号 root@wbyq:/mnt/hgfs/linux-share-dir/linux_c/usb_dev_ubuntu# ls /sys/kernel.../debug/usb/usbmon/ 0s 0u 1s 1t 1u 2s 2t 2u 3s 3t 3u 4s 4t 4u 2.5 找到当前要监控设备使用总线编号 输入lsusb...我使用设备就是148f:5370。 使用总线是3号总线。 2.6 监控指定总线上通信数据 为了只看这个想要设备数据,可以过滤一下。 后面的 "1:010" ,1表示总线编号。

7.2K20

基于STM32CubeMXUSB鼠标例程

这次给大家演示一下如何用STM32CUBE配置,自动生成一个USB鼠标的过程。这里多说一句,USB是一套比较复杂协议,单靠一两个例程是不可能完全理解。...USB主机(也就是电脑)如何知道USB设备支持全速模式?只要在USB设备D+数据线上接一个1.5K上拉电阻即可。而我这里这个上拉电阻电源端是接到了STM32PA15上面。如图: ?...这里简单说下USB设备上电过程: 1、设备插入后,USB主机自动对设备进行复位,使设备地址为零。 2、USB主机对地址为零设备提问:你是个什么东西?...3、USB设备说:我PID是XX,VID是XX,USB协议是2.0等等。 4、USB主机再次对设备进行复位,然后给复位后设备分配一个地址。 5、USB主机向新地址提问:你是个什么东西?...USB设备回答:… 6、两次回答一样,说明USB设备地址分配成功。USB主机继续提问,获取其它描述符。 7、USB设备,在向主机回复配置集合时候,表明自己身份:你好,我是个鼠标!

1.4K20

基于TCP协议Socket通信

上节中我们给大家接触了Socket一些基本概念以及使用方法,相信大家对Socket已经有了初步掌握。本节我们学习使用Socket来实现大文件断点续传!...在这里我们以他人案例进行讲解,这是别人写好一个Socket上传大文件例子,不要求我们自己可以写出来,需要时候会用就好!...1.运行效果图 1.先把我们编写好Socket服务端运行起来 2.将一个音频文件放到SD卡根目录下 3.运行我们客户端 4.上传成功后可以看到我们服务端项目下生成一个file文件夹,我们可以在这里找到上传文件...:.log那个是我们日志文件 2.实现流程图 3.代码示例: 先编写一个服务端和客户端都会用到流解析类: StreamTool.java: public class StreamTool {...file = new File(log.getPath());//从上传记录中得到文件路径 if(

22020

基于MATLAB GUI串口通信

大家好,又见面了,我是你们朋友全栈君。...之前学过单片机 对于串口通信比较了解 最近在学习MATLAB 发现它还可以控制串口 于是通过MATLAB GUI创建了一个串口通信小软件 效果如下 如果没有单片机或者其他硬件的话 我们可以直接用软件模拟串口...这对串口现在已经连接在了一起 我是COM1和COM2 现在如果往 COM1发信息 那么COM2就会接收到 之后我通过MATLAB uicontrol 函数搭建了 UI界面...并逐步实现了 串口通信 布局代码如下 打开串口以及接收数据 以及动态显示代码如下 function openserial(h1,h2,h3,h4,h5,h6,h7) global s...如果在串口中一直发送数据 同时在MATLAB中点击使能绘图 在Axes框中就会出现 每一时刻接收 数据图 具体效果如下 代码下载地址: https://download.csdn.net

1.1K21

浅谈总线通信机制----USB学习指南与总结

(3)缺省态 USB在被配置之前,通过地址0与主机进行通信。例如: ?...(4)地址态 经过了配置,USB设备复位后,就可以按主机分配给它唯一地址来与主机通信,这种状态就是地址态;例如: ?...USB包(宏观上来说)有四种:令牌包、数据包、握手包、特殊包。包是USB传输数据基本单位。每种类型包都会有不同域来构成。...来看一张我画图,再怎么觉得难东西,也许你看完这张图以后,也就知道自己该怎么去学习了,这张图是我使用USB逻辑分析勾出来图,然后加上自己学习总结,这就是一个USB中传输过程,相信你已经明白了USB...枚举将是整个USB学习重中之重,枚举就是主机从设备读取各种描述符信息,这样主机就可以根据这些信息加载合适驱动程序,从而知道是什么类型设备,如何进行通信等等。

1.1K20

基于内存通信gRPC调用

最近看到 containerd 代码,发现它也有类似的需求,那么就考察了下gRPC有没有类似的,基于内存通信方式。发现pipe非常好用,所以记录了下。...什么是pipe 在操作系统层面,pipe表示一个数据管道,而这个管道两端都在本程序中,可以很好满足我们要求:基于内存网络通信。...Golang也基于pipe提供了net.Pipe()函数创建了一个双向基于内存通信管道,在能力上,能够很好满足gRPC对底层通信要求。...有了上面的包装,我们就可以基于此创建一个gRPC服务器端和客户端,来进行基于内存RPC通信了。...本文介绍基于Pipe通信方式,除了网络层走了内存传递之外,其他都和正常RPC通信行为一致,比如同样经历了序列化、经历了HTTP/2流控制等。

1.2K21

16位MCU最后倔强没了

使用也相对简单,8 位微控制器大多基于累加器,尽管一些较新架构具有寄存器组,编程模型简单且有限:累加器或带单个状态寄存器小寄存器组、堆栈指针,以及一个或多个变址寄存器。...尽管 8 位架构 MCU 广受青睐,可一旦涉及网络和通信就遇到了瓶颈,几乎所有通信堆栈和网络协议都采用 16 位或 32 位。在物联网时代今天,8 位 MCU 逐渐失去了市场话语权。...对于以太网、CAN、USB 和 Zigbee 等协议栈,只要应用程序代码性能足以支持堆栈,那么使用 16 位微控制器运行速度不亚于 32 位微控制器。...32 位微控制器具有 32 位地址总线,可以访问高达 4GB 存储器。基于寄存器架构可轻松支持网络和通信;通常使用 32 位寻址,支持浮点运算和高等代数运算,并且时钟速率可达千兆赫级。...可以确定是,TI 并非退出 MCU 业务,而是基于公司模拟战略所做一个商业决策;但如果未来继续减少 MCU 投入的话,16 位 MCU 最后倔强也会被消磨殆尽。

79040
领券