USB系列之第三章:USB协议

USB协议

与RS-232和类似的串行接口不同,USB没有定义发送数据的格式,而是由几层协议组成。虽然这听起来很复杂,但现在不要放弃。一旦你明白了是怎么回事,你真的只需要担心更高层的问题。事实上,大多数USB控制器I.C.s将负责较低层,从而使最终设计者几乎看不见它。

每个USB事务由一个

正如我们已经讨论过的,USB是一种以主机为中心的总线。主机启动所有事务。第一个包,也称为令牌,由主机生成,用于描述要遵循的内容、数据事务是读还是写以及设备的地址和指定的端点是什么。下一个包通常是承载有效载荷的数据包,后面是握手包,报告数据或令牌是否成功接收,或者端点是否暂停或无法接受数据。

通用USB数据包字段

USBus上的数据首先传输LSBit。USB数据包由以下字段组成:,

USB数据包类型

USB有四种不同的数据包类型。令牌包指示要遵循的事务类型,数据包包含有效载荷,握手包用于确认数据或报告错误,帧开始包指示新帧的开始。

USB功能

当我们想到USB设备时,我们想到的是USB外围设备,但USB设备可能是指在主机或外围设备上使用的USB收发器设备、USBHub或主机控制器IC设备或USB外围设备。因此,本标准引用了USB功能,这些功能可以被视为提供诸如打印机、Zip驱动器、扫描仪、调制解调器或其他外围设备等功能的USB设备。

所以现在我们应该知道什么东西组成了一个USB包。不?你忘了一个PID字段已经有多少位了?好吧,别惊慌失措。幸运的是,大多数USB功能都处理silicon中的低层USB协议,直到事务层(我们将在下一章讨论)。我们之所以要覆盖这些信息,是因为大多数USB功能控制器都会报告诸如PID编码错误之类的错误。一个没有编码的PID能简单地问什么?如果你认为PID的最后四位与前四位的倒数不匹配,那么你是对的。

USB系列之第三章:USB协议

大多数函数都有一系列缓冲区,通常为8字节长。每个缓冲区都属于一个端点-ep0in,EP0 OUT等等。例如,主机发送一个设备描述符请求。功能硬件将读取设置数据包并从地址字段确定该数据包是否为其自身,如果是,则将把以下数据包的有效负载复制到由设置令牌的端点字段中的值指定的适当的端点缓冲区。然后,它将发送一个握手包来确认字节的接收,并在半导体/微控制器内为适当的端点生成一个内部中断,表示它已经接收到包。这通常都是在硬件上完成的。

软件现在得到一个中断,应该读取端点缓冲区的内容并解析设备描述符请求。

端点

端点可以描述为数据的源或汇。由于总线以主机为中心,端点出现在USB功能的通信通道的末端。例如,在软件层,您的设备驱动程序可以向您的设备EP1发送数据包。当数据从主机流出时,它将最终进入ep1out缓冲区。你的固件将在空闲时读取这些数据。如果要返回数据,函数不能简单地写入总线,因为总线由主机控制。因此,它将数据写入位于缓冲区中的EP1,直到主机向请求数据的端点发送IN包为止。Endpointscan也可以看作是功能设备的硬件和在功能设备上运行的固件之间的接口。

所有设备都必须支持终结点零。这是一个端点,当设备在总线上运行时,它在枚举期间和整个持续时间内接收所有设备的控制和状态请求。

当设备在一系列端点上发送和接收数据时,客户端软件通过管道传输数据。管道是主机和端点之间的逻辑连接。管道还将有一组与之相关的参数,如分配给它的带宽、它使用的传输类型(控制、批量、Iso或中断)、数据流的方向和最大包/缓冲区大小。例如,默认管道是由端点zeroin和端点zero out组成的双向管道,具有控制传输类型。

USB定义了两种类型的管道

展开阅读全文

页面更新:2024-05-15

标签:载荷   令牌   缓冲区   字段   总线   字节   管道   协议   主机   事务   类型   地址   功能   数据   设备   科技   公司

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top