分享

USB规范

 昵称28625772 2015-11-12
首先是《Universal Host Controller Interface Design Guide》,也就是USB2.0的规范。
这篇文献从USB2.0的背景开始,对USB2.0技术的各个方面进行详细的描述和定义。我主要阅读了第4章及其以后的部分。
真要总结起来,恐怕不是这一篇日志就能总结得了的,我也不准备那样,毕竟周立功已经把中文版的书都出版了,且不管翻译的怎么样。下面我就把零碎记录的一些东西录下来吧,顺便想到什么也写下来,当然谈不上系统了。
USB系统在物理连接上是分层的星型拓扑结构,而在逻辑上,所有的USB设备都直接连接到HOST Controller。不管中间接了几个HUB。USB最多支持7层,127个设备。也就是说在一个USB系统中,最多可以有5个HUB级联。
在USB规范中,对传输线和HUB的延迟都有比较严格的定义。
USB总线上数据内容的含义是由USB体系解析的,USB的硬件不负责内容的解析。
USB总线上共有两种数据,一种是流数据(Stream),一种是信息数据(Message)
USB体系可分为三层:
             HOST端------------------------Device端
客户软件(USB应用软件)     功能接口(Interface)
         USB系统软件                   端点(默认端点和其他端点集)
       USB主机控制器                 USB总线接口
端点(Endpoint)是USB通讯模型的终端
多个端点组成接口(interface)
0端点是一个特别的端点,任何USB设备均有0端点,也称为默认端点,主要用于USB设备的配置、命令等。
USB应用软件通过接口访问USB设备,接口又由端点组成,USB通讯在USB主机控制器的控制下按照USB规范定义的格式和方式进行。
USB总线上的数据逐帧传送,高速USB总线上的帧称为微帧(microFrame),周期为125uS,全速以及低速USB总线上的帧周期为1mS。不论高速、全速还是低速总线,帧序号以1mS为单位递增,即连续8个微帧的帧号是一样的。
每个帧(微帧)可以包含多个数据传输,例如可以由若干和同步传输、若干个中断传输以及批量传输构成。
控制传输在端点0进行,主要完成设备的配置、命令发送等。
控制传输由三个步骤组成:令牌+数据+握手,也可能没有数据,而只包括令牌和握手两个阶段。
不论有没有数据,最后均由一个方向和前一阶段相反的握手传输结束,如。
token out (set up) + Data0(out) + IN handshake;
token in(set up) + IN handshake;
token in(set up) + Data1(in) + out handshake(data length = 0);
同步传输是一种实时性极强的传输,没有重传机制,所以是不可靠的。在每一(微)帧的传输任务排定时,同步传输具有最高的优先级。
中断传输是一种延迟有限的传输,具备重传机制,是一种可靠的传输。传输任务排定时优先级低于同步传输,但高于其他两种传输。高速-高带宽端点可以在每个(微)帧中最多进行3次中断传输。
批量传输是一种延迟不确定的传输,这种传输尽量利用带宽进行传输,可以实现较高的速率,比较适合传送大的数据。也是一种可靠的传输。
USB分层结构中,客户软件通过设备驱动程序访问USB设备,设备驱动程序则通过HCD(主机控制器驱动)访问USB总线,完成数据的传输。
USB总线上,数据的传输按照little endian进行,即一个字节中最低有效位在前,最高有效位在后。
Packet是USB总线上数据传输的最小单位。
每个Packet均由sync同步域开始。(KJKJKK for L/F speed (15个KJ)KJKJKJ...KJKK for high-speed)
Packet的格式由USB规范定义,格式如下:
USB响应
USB的响应共包括ACK、NAK、NYET、STALL几种。
ACK表示肯定的应答,数据已经被接收,并准备好接收下一个数据包。
NAK表示否定的应答,当前数据包未被接收,希望重传。
NYET表示当前的数据已经被接收,但尚未准备好接收下一个数据包,期待PING测试。
STALL则表示错误或端点被设置STALL。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多