日志档案

发表于 2007-12-28 12:25:34

0

标签: USB  

USB学习基础知识1

一、USB电源信号线规定

VCC:电源    GND:地线   D+和D-:差分输入线

------------- Vcc
------------- D+
------------- D-
------------- GND

二、响应方式

对于主机请求,设备的响应方式分为:

ACK:响应正常
NAK:设备忙,请稍候再发
STALL:非法请求,请求失败,终端失败
不响应:表示数据出现错误

三、USB最多在主机上级联127个设备,单条线缆长不超过5m,加5个集线器后可到30m

四、USB理论最高速率480Mbit/s,实际可用带宽为200Mbit/s-300Mbit/s,而传输640*480*24(bit)*30(Fram/s)的信号时,需要的带宽约为220Mbit/s,已经几乎是USB2.0可用带宽的全部了

五、USB开发的困难

USB在对用户增加了易用性的同时,却大大增加了开发者的难度。

1.USB协议复杂

2.测试工作困难

3.USB控制芯片自身有缺陷:协议不断完善,硬件也随着完善

六、USB的逻辑结构

1.所有设备都共享一条数据通道(在连入同一集线器的情况下),可以把这些数据通道理解为一条粗的管道。在高速模式下,这条管道带宽480Mbit/s,而在这条管道中,最多可容纳127条小管道,每条管道的终点便是一个USB设备。

2.每条小管道中流动的数据都带有一个称为令牌(Token)的信息包,它给出了数据的流向。如果令牌信息为IN,则数据流向为由设备到主机;如果为OUT,则从主机到设备。

3.每个令牌中有7位数据用来寻址设备,最多寻址128个设备。但00H默认分配给刚刚连入的设备暂时使用。实际工作中的寻址设备为127个。

4.令牌中还包含了4位的端点(End Point)地址,因此,在每一条小管道内又可分为16条微管道,也就是可以16个输入/输出的端点,该端点就是数据中最基本的信息单元,每个端点可携带不同的信息,如:数据,音频,视频及控制信号等。

七、USB所需的支持

1.主机控制器的支持(主机主要指PC机)

    主机控制器负责数据总线路上的数据交换(Transaction),根集线器(Root Hub)负责为设备提供端口

在USB开发者论坛中,提供了检测PC是否支持USB的测试工具http://www.acwsoft.de/acw-usb2.html

USB主机控制器按驱动程序接口不同可分为:

    开放式主机控制器(Open Host Controller,OHC):Microsot,Compaq和National Semiconductor等厂商联合制定

   通用式主机控制器(Universal Host Controller,UHC):Intel自己研发

对用户来讲,功能上没有区别

2.操作系统的支持:如Windows XP,Windows 2000等

八、开发过程应用应考虑的问题

1.选择合适的USB控制器芯片
(1)所需的速度:速度越高,开发工作越复杂

(2)是否有集成于内部的CPU:内置的CPU可简化一定的数据处理工作
(3)连接端口的数量:确定所选芯片的信息端口能否能满足工作的需要
(4)合适的数据存储器:确定所选芯片的RAM大小能否满足需要,通常为128-1024Byte之间
(5)程序存储器
要使USB设备正常工作,还需要特定的用于初始化的设备和主机进行通信的程序,这样的程序在USB中称为“固件”。根据应用确定所需程序存储器的大小。
(6)其他:驱动示例的支持,模拟环境的提供等都作为芯片选择应考虑的因素。

2.确定创建固件所需的语言环境:根据编写固件的要求,采用汇编或C

3.硬件电路设计时的考虑
除了USB控制器本身的外围电路外,还要考虑用户要用USB连接的外设。
(1)USB控制器内建电压5V。因此,首先考虑相关外设的电压匹配与驱动能力的问题。
(2)USB控制器向下接入外设时的数据信号,控制信号的连接。(USB向上游连接入主机的接口及相关电路已成为标准化的规定,不用考虑)
(3)完成硬件电路的设计与绘制。以小巧和简便易用为目标。

4.主机中设备驱动的编写
       要使开发的产品能在计算机上顺利工作,计算机要“识别”用户的产品,并将其引导入系统中,对其进行协调和控制,这个“识别”过程由设备驱动程序完成。
       对于标准设备(如键盘,鼠标)已内建支持的驱动程序,对用户自己开发的产品,则需要自己编写该设备的驱动。
       设备驱动的编写:用Win DDK方式开发或利用其他的开发软件,编译平台可以是标准C或Visual C++等

5.应用程序的实现

         顺利将设备连入主机后,USB开发才真正地迈出了第一步。应用程序是设备满足用户需求的基础,这部分程序根据产品的不同而不同,主要是在计算机上实现对所开发产品的应用和控制。

6.相关的辅助软硬件设备
           就产品硬件来说,需要考虑必要的辅助电路(如数据的读写与存储,产品外形的设计等);|
           就USB接口的开发过程来说,除了开发板,模拟运行平台等,还可能需要用到必要的监控程序,协议分析器等设备

九、开发工作流程
          (1)硬件的设计:主要考虑控制器与主机的连接,与外设的匹配,以及它们之间的协调工作。
          (2)USB控制芯片固件的实现:注意到具体的应用环境,控制器芯片中各种寄存器、控制器的不同的应用与实现。
           (3)Windows驱动的编写:包括检测设备时的系统要用到的引导文件、设备信息文件等。
           (4)应用程序的实现
           (5)几部分的联合测试与协调
下图是基本的开发流程图

总的来讲,USB的开发包括软硬件两方面的开发:硬件考虑芯片、外围电路以及相应的接口电路;软件考虑设备的驱动和固件的编写

 


 

 

系统分类: 单片机   |   用户分类: 无分类   |   来源: 原创   |   【推荐给朋友】

    阅读(1677)    回复(0)  

投一票您将和博主都有获奖机会!