原创 USB学习基础知识1

2007-12-28 12:25 3326 7 7 分类: MCU/ 嵌入式

一、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的逻辑结构


d4ca785b-097e-43e5-ab9c-3de6f9b715df.JPG


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)所需的速度:速度越高,开发工作越复杂
b92bd525-c54d-4765-ad4b-70ee6548f26c.JPG


(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)几部分的联合测试与协调
下图是基本的开发流程图
ed5ab4f3-e4b9-494d-a24a-e69e3b598b48.JPG


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


 



 


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条