集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 954|回复: 1

USB事务

[复制链接]
fpga_feixiang 发表于 2020-6-16 20:55:46 | 显示全部楼层 |阅读模式
分别有IN、OUT和SETUP三大事务,每一种事务都由令牌包、数据包、握手包三个阶段构成,这里用阶段的意思是因为这些包的发送是有一定的时间先后顺序的,事务的三个阶段如下:

        1、令牌包阶段:启动一个输入、输出或设置的事务。

        2、数据包阶段:按输入、输出发送相应的数据。

        3、握手包阶段:返回数据接收情况,在同步传输的IN和OUT事务中没有这个阶段,这是比较特殊的。

        事务的三种类型如下(以下按三个阶段来说明一个事务):

        1、 IN事务:

        令牌包阶段——主机发送一个PID为IN的输入包给设备,通知设备要往主机发送数据;

        数据包阶段——设备根据情况会作出三种反应(要注意:数据包阶段也不总是传送数据的,根据传输情况还会提前进入握手包阶段)。

        1) 设备端点正常:设备往主机里面发出数据包(DATA0与DATA1交替);

        2) 设备正在忙:无法往主机发出数据包就发送NAK无效包,IN事务提前结束,到了下一个IN事务才继续;

        3) 相应设备端点被禁止:发送错误包STALL包,事务也就提前结束了,总线进入空闲状态。

        握手包阶段——主机正确接收到数据之后就会向设备发送ACK包。

        2、 OUT事务:

        令牌包阶段——主机发送一个PID为OUT的输出包给设备,通知设备要接收数据;

        数据包阶段——比较简单,就是主机会往设备送数据,DATA0与DATA1交替

        握手包阶段——设备根据情况会作出三种反应

        1) 设备端点接收正确,设备给主机返回ACK,通知主机可以发送新的数据,如果数据包发生了CRC校验错误,将不返回任何握手信息;

        2) 设备正在忙,无法给主机返回ACK,就发送NAK无效包,通知主机再次发送数据;

        3) 相应设备端点被禁止,发送错误包STALL包,事务提前结束,总线直接进入空闲状态。

        3、SETUT事务:



        令牌包阶段——主机发送一个PID为SETUP的输出包给设备,通知设备要接收数据;



        数据包阶段——比较简单,就是主机往设备送数据,注意,这里只有一个固定为8个字节的DATA0包,这8个字节的内容就是标准的USB设备请求命令,详见2.4。

        握手包阶段——设备接收到主机的命令信息后,返回ACK,此后总线进入空闲状态,并准备下一个传输(在SETUP事务后通常是一个IN或OUT事务构成的传输)。
zxopenhl 发表于 2020-6-18 14:16:20 | 显示全部楼层
分别有IN、OUT和SETUP三大事务,每一种事务都由令牌包、数据包、握手包三个阶段构成,这里用阶段的意思是因为这些包的发送是有一定的时间先后顺序的,事务的三个阶段如下:

        1、令牌包阶段:启动一个输入、输出或设置的事务。

        2、数据包阶段:按输入、输出发送相应的数据。

        3、握手包阶段:返回数据接收情况,在同步传输的IN和OUT事务中没有这个阶段,这是比较特殊的。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-4-20 05:43 , Processed in 0.059234 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表