1 / 28

USB 规范讲解及简单设计实例

USB 规范讲解及简单设计实例. 要进行 USB 的硬件软件设计就先要了解 USB 规范,今天简要介绍以下内容 1.usb 规范的版本发展 2. 使用 USB 设备的优缺点 3.USB 设计所要使用的软硬件资源和具体流程, 4.usb 规范内容 5. 最后通过一个简单实例介绍一下 usb 设备设计的概况. 1.Usb 规范版本. Usb 规范的前身是 access.bus 规范 ,access.bus 规范是由 philips 和数字设备公司所制定而公开的标准, Access.bus 是由 I2C synchronics serial bus 发展来的

chipo
Download Presentation

USB 规范讲解及简单设计实例

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. USB规范讲解及简单设计实例

  2. 要进行USB的硬件软件设计就先要了解USB规范,今天简要介绍以下内容要进行USB的硬件软件设计就先要了解USB规范,今天简要介绍以下内容 1.usb规范的版本发展 2.使用USB设备的优缺点 3.USB设计所要使用的软硬件资源和具体流程, 4.usb规范内容 5.最后通过一个简单实例介绍一下usb设备设计的概况

  3. 1.Usb规范版本 • Usb规范的前身是access.bus规范,access.bus规范是由philips和数字设备公司所制定而公开的标准,Access.bus是由I2C synchronics serial bus发展来的 USB规范版本 发表日期 1.0 1996.1.15 1.1 1998.9.23 2.0 2000.4.27

  4. 2.1USB的优点 • 容易使用:系统自动检测,不需重开机,容易连接,不需外加电源 • 传输速度快:usb支持三种信道速度:低速 1.5Mb/s(鼠标,键盘,游戏机),全速 12Mb/s(电话,音频,麦克风),高速 480Mb/s(影像,储存设备) • 价位低 • 低能耗 • 稳定性 • 操作系统支持 • 外围设备支持 • 有弹性 • usb实施者论坛支持 usb implementers forum,inc.,USB-IF www.usb.org

  5. 2.2USB的缺点 • 缺乏对旧硬件的支持 • 点对点的通信 • 速度的限制 usb高速模式480Mb/s可与ieee-1394 400Mb/s匹敌.但ieee-1394b速度达到3.2Gb/s • 距离的限制 电缆长度最长5M远 如果要延伸必须通过集线器 最长可以达到30M 需要6条5M长电缆 需要5个集线器 • 硬件的错误和故障 • 协议的复杂性 • 版权费

  6. 3.USB开发准备 • 所需组件 支持usb的主机 主机上的设备驱动程序 设备上的软硬件 主机应用程序软件 • 开发工具 一个汇编或C语言编译器(keil c51) 一个监视程序,协议分析器 帮助开发固件 一个烧录设备和烧录程序(top851) 一个主机上的程序语言和开发环境,来编写调试主机软件(VC++)

  7. 4.Usb协议概述 4.1一些概念 包标识符PID:USB包的同步字段后都紧跟着包标识符(PID)。如图8-1所示,包标识符由4位的包类型字段和其后的4位的校验字段构成。包标识符指出了包的类型,并由此隐含地指出了包的格式和包上所用错误检测的类型。

  8. 标记包: • 图8-5显示了标记包的字段格式。标记由PID,ADDR和ENDP构成,其中PID指定了包是输入,输出还是建立类型。对于输出和建立事务,地址和端口字段唯一地确定了接下来将收到数据包的端口。对于输入事务的,这些字段唯一地确定了哪个端口应该传送数据包。只有主机能发出标记包。输入PID定义了从功能部件到主机的数据事务。输出和建立PID定义了从主机到功能部件的数据事务。 标记包包括了覆盖地址和端口字段的5位CRC。CRC并不覆盖PID,因为它有自己的校验字段。

  9. 传输:制造与携带一个通信要求的过程 每一个传输包含一笔或多笔事物,而每一笔事物包含一个,两个或是三个信息包,每个信息包包含一个信息包标识符,CRC校验位,以及额外的信息.每一笔事物包含一个令牌信息包,并且可能包含一个数据信息包或联络信息包.

  10. 帧开始(SOF,Start-of-Frame)包 • 主机以每1.00 ms ±0.0005 ms一次的额定速率发出帧开始(SOF)包。如图8-6中所示,SOF包是由指示包类型的PID和其后的11位的帧号字段构成。 SOF标记组成了仅有标记的(token-only)事务,它以相对于每帧的开始精确计算的时间间隔发送SOF记号(Marker)和伴随的帧数。包括集线器的所有全速功能部件都可收到SOF包。SOF标记不会使得接收功能部件产生返回包;因此,不能保证向任何给定的功能部件发送的SOF都能被收到。

  11. 数据包: 数据包由PID,包括至少0个字节数据的数据区和CRC构成。有2种类型的数据包,根据不同的PID:DATA0和DATA1来识别。2种数据包PID是为了支持数据切换同步(Data Toggle Synchronization)而定义的。 数据必须以整数的字节数发出。数据CRC仅通过对包中的数据字段计算而得到,而不包括PID,它有自己的校验字段。

  12. 4.2 控制传输: Usb包括四种传输类型:控制传输,中断传输,批量传输,实时传输,主机使用控制传输与设备交换配置的设置信息,同时设备也使用控制传输来传输任何类型的信息.每一个控制传输都有一定的格式包括一个设置阶段,一个数据阶段,一个状态阶段 4.2.1设置阶段: 令牌信息包 PID:setup 数据信息包 PID:data0 联络信息包 PID:ack

  13. 4.2.2. 数据阶段: 令牌信息包 PID:out in 数据信息包 PID:data1/data0 联络信息包 ACK,NAK,STALL 4.2.3. 状态阶段:

  14. 4.3描述符: 4.3.1设备描 述符号

  15. 4.3.2.配置描 述符

  16. 4.3.3.接口描述符 bNUMEndpoints除端点零外支持的端点数目 bInterfaceclass 与bdeviceclass类似 4.3.4.端点描述符 bendpointaddress 1byte端点数目与方向 Bmattributes 1byte支持的传输类型 控制 实时 批量 中断 Wmaxpacketsize 2byte 端点能够传输的最大信息包大小 Binterval 1byte 轮询中断端点的最大延迟或是轮询实时端点的时距或是高速批量输出或控制端点的最大NAK速率. 4.3.5.字符串描述符 Wlangid或bstring 1byte 语言ID或产品名

  17. 5.控制传输实例: 功能:主机要求返回一个指定的描述符 数据来源:设备 wValue:高字节是描述符类型,低字节是描述符数值 wIndex:如果是字符串描述符表示语言的ID,其他描述符为0. 数据阶段的数据信息:要求的描述符.

  18. 5.USB硬件软件设计实例 本实例通过使用philips公司的usb1.1 controller pdiusbd12,下位机mcu使用89C738,驱动程序系统支持,上位机使用VC++编程. 5.1usb开发需要知识和工具 5.1.1具体开发需要准备的工具和掌握的知识 1.下位机程序设计C51 2.VC++程序设计 3.驱动程序一般了解 4.收集资料的能力 5.选择控制芯片的能力

  19. 5.1.2.必备资源 1.首先要搜集软件工具,上位机 下位机编译器 2.编程器 3.能够买到要使用的芯片 4.协议分析软件或硬件工具 5.示例代码 5.2.PDIUSBD12芯片引脚图 5.3.usb定义的类别码 bdeviceclass binterfaceclass 例如 HID 0x00 0x03 HUB 0x09 0x09 Mass storage 0x00 0x08 5.4.下位机电路图 5.5.下位机程序function block diagram

  20. 以下是PDIUSBD12发送数据或命令的子程序 Void outportb(unsigned int Addr,unsigned char Data) {*((unsigned char xdata*)Addr)=Data;} Addr是PDIUSBD12的地址,Data是输出的数据或和命令.当Addr为奇数时表示输出的是命令,Addr为偶数时表示输出的是数据 下面的程序为从PDIUSBD12器件读取数据,addr为偶数 Unsigned char inportb (unsigned int Addr) {return *((unsigned char xdata*)addr);} #define D12_DATA 0xff02 //定义数据地址(偶数地址) #define D12_COMMAND 0xff03 //定义数据地址(偶数地址)

  21. 5.6.上位机程序设计:

  22. 应用程序要和某个设备通信前要获得这个设备的独特识别码GUID(128bit)码,通过API函数调用获得接口信息,获取设备路径名然后就是打开这个设备,获取设备句柄打开设备获取句柄通过API函数CreateFile实现应用程序要和某个设备通信前要获得这个设备的独特识别码GUID(128bit)码,通过API函数调用获得接口信息,获取设备路径名然后就是打开这个设备,获取设备句柄打开设备获取句柄通过API函数CreateFile实现 读写设备由ReadFile WriteFile函数完成 关闭设备CloseHandle函数完成 THE END

More Related