USB工作原理
所有 USB 数据传输均由 USB 主机发起。主机通过维护称帧的时间间隔来控制通信时间。主机在每帧开始时在 USB 数据线上发出帧开始 (SOF) 序列。
每帧的时间间隔由指定的USB 速度决定。USB 合规性认证的一项能力要求是主机准确发布 SOF。
USB主机与设备进在帧间期间使用事务通信。
传输数据的机制涉及主机读取和写入位于每个设备上的一组内存位置。这些内存位置称为端点。端点的大小(即端点中的数据量)在不同设备之间可能会有很大差异。
设备端点以编号对的形式出现。端点编号从 0 开始,最高可达 32。每个端点编号都有一个 IN 和一个 OUT 端点。OUT 端点携带来自主机的数据,而 IN 端点包含发送到主机的数据。例如,端点 1 是两个端点;端点 1 IN (EP1IN) 和端点 1 OUT (EP1OUT)。
USB主机发送数据到设备
当主机希望向设备发送消息时,通过使用 WRITE 事务将消息放置在设备上的 OUT 端点中。设备的应用程序代码监视 OUT 端点以确定是否已从主机接收到任何消息。在检测到来自 Host 的消息存在后,Device 将从 OUT 端点复制消息。
USB主机接收来自设备的数据
如果设备的程序希望与主机通信,则会在 IN 端点中放置一条消息。该消息将保留在 IN 端点中,直到主机发出 READ 事务。READ 事务导致将 IN 端点的内容发送到主机。
通讯参数
USB 与端点通信的数据速率取决于三个项:
- 帧的信号速率,由指定的 USB 速度决定。
- 端点的大小(每个事务移动的数据量)。
- 主机向端点发出事务的频率。这可以从每帧几个事务到端点事务之间的多个帧不等。
有关所有端点参数和通信要求的信息由设备定义,并在设备插入主机并成功枚举时提供给主机。枚举过程通知主机在与设备端点通信时使用哪种传输类型。
控制和配置
每个 USB 设备都将端点 0 保留为称为控制端点的唯一端点。端点0 IN 包含主机在枚举期间读取的 USB 设备的描述。端点0 OUT 使主机能够向设备发送配置命令。