USB协议-USB的包结构及包的分类】的更多相关文章

USB是串行总线,所以数据是一位一位地在数据线上传送的.既然是一位一位地传送,就存在着一个数据位先后的问题.USB使用的是LSB在前的方式,即先出来的是最低位数据,接下来是次低位,最后是最高位(MSB).一个包,又被分成了很多个域(field),而LSB.MSB就是以域为单位来划分的. USB总线上传输数据是以包为基本单位的.一个包被分成不同的域.根据不同类型的包,所包含的域是不一样的.但是不同的包有个共同的特点,就是都要以同步域开始,紧跟着一个包标识符PID(Packet Identified…
USB的传输总是低位在前,高位在后. USB的传输方向:从设备到主机的数据为输入:从主机到设备的数据叫做输出. 1. 包结构 以同步域开始,紧跟着一个包标识符PID(Packet Identifier),最终以包结束符EOP(End of Packet)结束这个包. 同步域 作用:① 通知USB串行接口引擎数据要开始传输:② 同步主机和设备之间的时钟. 格式:① 全速/低速设备的同步域为00000001:② 高速设备的同步域为31个0,后面跟1个1:注意:这是对发送端的要求,接收端在解码时,0的…
USB主机在检测到USB设备插入后,就要对设备进行枚举了.为什么要枚举?枚举就是从设备读取各种描述符信息,这样主机就可以根据这些信息来加载合适的驱动程序,从而知道设备是什么样的设备,如何进行通信等. 枚举的过程: 1.  USB主机检测到USB设备插入之后,就会先对设备复位.USB设备在总线复位后其地址为0,这样主机就可以通过地址0和那些刚刚插入的设备通信.USB主机往地址为0的设备的端点0发送获取设备描述符的标准请求(这是一个控制传输的建立过程).设备收到该请求后,会按照主机请求的参数,在数据…
USB只是一个总线,只提供一个数据通路而已.USB总线驱动程序并不知道一个设备具体如何操作,有哪些行为.具体的一个设备实现什么功能,要由设备自己来决定.那么,USB主机是如何知道一个设备的功能以及行为呢?这就要通过描述符来实现了.描述符中记录了设备的类型.厂商ID和产品ID(通常依靠它们来加载对应的驱动程序).端点情况.版本号等众多信息. USB1.1协议定义的标准描述符有设备描述符(Device Descriptor).配置描述符(Configuration Descriptor).接口描述符…
一直想把这个流程整理一下. 包结构: 包 对(datacrc+protoID+dataSize)组成的byte[] 进行crc计算而得到 对(数据内容)进行crc计算而得到 协议号 数据内容的字节长度 数据内容 字段 headcrc datacrc protoID dataSize data 类型 uint uint ushort ushort byte[] 字节数 4 4 2 2 dataSize crc校验 问:TCP协议中,底层做了校验,那通信时我们还有必要再进行有CRC或者其他校验吗?…
作者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell 一 JAR包结构分析 JAR(Java Archive FIle)Java归档文件,是Java标准的文档格式,是一个或多个Java字节码文件的打包压缩文件.採用常见的ZIP压缩算法,和ZIP文件十分相似,能够直接解压. JAR文件主要用来压缩和公布字节码文件,并且还用于部署和封装库.组件和插件程序.并…
用vue-cli创建的项目带有自动配置好的包结构,包结构都是固定的. 关于详细的解释,网上多得是,只说下最重要的内容 1.vue项目包结构和端口号配置 这里笔者下了个HBuilderX来写代码. 2.vue开发写什么? vue中编写的主要是.vue文件,如App.vue文件.大概结构如下图说明: 该vue文件的加载写在了main.js文件中,简要解析如下图: 仔细看来和当前访问的localhost:8080的页面的内容对不上,那么继续看下路由文件写了什么: 这里,路由文件指明了根路径下要加载一个…
今日内容概要 celery介绍,架构 celery 快速使用 celery包结构 celery执行异步任务 celery执行延迟任务 celery执行定时任务 django中使用celery 定时更新轮播图接口 内容详细 1.celery介绍,架构 # celery: 分布式(放在多台机器)的 异步任务 框架 Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统 Celery is a project with minimal funding, so we don't support…
USB包类型和传输过程  USB是一种串行总线,因此数据都是一位一位传输的,如同串口那样,但是USB在真实物理电路上却不是TTL电平,而是一种差分信号采用NRZI编码,就是用变化表示0,不变表示1,同时在USB中数据时低字节先发送的即LSB.USB中的数据交互最小单位是包一个包由许多域组成,但是统一的是每个包都有同步域开始,然后紧接着PID,这里的PID不是指PID,而是指类似包命令码这么一个意思.PID只用到了低四位,高四位是低四位的取反用于校验PID字段,常见的PID由USB标准中查到如下,…
/* usb协议分析仅供大家参考---设备描述符配置包,设备描述符, 地址设置, 配置描述符, 字符串描述符 */ /* -1- usb设备描述符配置包 */ typedef struct _USB_SETUP_PACKET { REQUEST_TYPE bmRequestType; BYTE bRequest; WORD_BYTE wValue; WORD_BYTE wIndex; WORD wLength; } USB_SETUP_PACKET; .bmRequestType 是包含有下面几…