USB一些解释说明

1、USB的重要关键字:

端点(Endpoint):

位于USB设备或主机上的一个数据缓冲区,是USB设备中可以进行数据收发的最小单元,支持单向或者双向的数据传输,用来存放和发送USB的各种数据,每一个端点都有惟一的确定地址,有不同的传输特性(如输入端点、输出端点、配置端点、批量传输端点)。设备支持端点的数量是有限制的,除默认端点外低速设备最多支持2组端点(2 个输入,2 个输出),高速和全速设备最多支持15组端点。

时间概念,在USB中,一帧就是1MS,它是一个独立的单元,包含了一系列总线动作,USB将1帧分为好几份,每一份是一个USB的传输动作。

上行:

设备到主机为上行

下行:

主机到设备为下行。


USB数据传输方法

数据在USB线里传送是由低位到高位发送的。
        USB采用不归零取反来传输数据,

当传输线上的差分数据输入0时就取反,输入1时就保持原值,

为了确保信号发送的准确性,当在USB总线上发送一个包时,传输设备就要进行位插入操作(即在数据流中每连续6个1后就插入一个0),从而强迫NRZI码发生变化。

这些是由专门硬件处理的。

域:

USB数据最小的单位

由若干位组成(多少位由具体的域决定),域可分为七个类型:

a)同步域(SYNC)

所有的USB包都由SYNC开始,高速包的SYNC宽度为32bit,全速/低速包的SYNC段度为8bit

实际接收到的SYNC长度由于USB HUB的关系,可能会小于该值。八位的值固定为0000 0001,用于本地时钟与输入同步。

b)标识域(PID)

        由四位标识符 + 四位标识符反码构成,表明包的类型和格式

USB的标识码有16种。USB2.0使用了十六种标识码,标识码的作用是用来说明包的属性的,标识码是和包联系在一起的,标识码分别有以下十六种:

 令牌包 :
        0x01:输出(OUT)启动一个方向为主机到设备的传输,并包含了设备地址和标号。
        0x09:输入(IN) 启动一个方向为设备到主机的传输,并包含了设备地址和标号。
        0x05:帧起始(SOF)表示一个帧的开始,并且包含了相应的帧号。
        0x0d:设置(SETUP)启动一个控制传输,用于主机对设备的初始化。

数据包 :
        0x03:偶数据包(DATA0)。
        0x0b:奇数据包(DATA1)。
 
0x07:在一个微帧内高速,高宽带同步传输

0x0F:高速分组、高宽带同步传输

握手包:
        0x02:确认接收到无误的数据包(ACK)。
        0x0a:无效,接收(发送)端正在忙而无法接收(发送)信息。
        0x0e:错误,端点被禁止或不支持控制管道请求。

0x06:无响应返回(No response yet from receive

特殊包

0x00:保留PID

0x0C:

0x0C:

0x08:

0x04:(Token)


0x0C前导,用于启动下行端口的低速设备的数据传输。  

c)地址域(ADDR):

七位地址,代表了设备在主机上的地址

地址000 0000被命名为零地址,是任何设备第一次连接到主机时,在被主机配置、枚举前的默认地址,由此可以知道为什么一个USB主机只能接127个设备的原因。

d)端点域(ENDP)

四位,由此可知一个USB设备端点数量最大为16个

e)帧号域(FRAM)

11位,每一个帧都有一个特定的帧号,帧号域最大容量0x800,对于同步传输有重要意义。

f)数据域(DATA):

长度为0~1023字节,不同的传输类型中,数据域的长度各不相同,但必须为整数个字节的长度


2、事物

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事务构成的传输)。

  



  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: GD32官方提供了一份详实的USB说明文档,帮助开发者了解和使用GD32系列微控制器的USB功能。该文档分为几个主要部分,包括USB设备架构、USB设备驱动、USB设备类库和示例代码。 首先,文档详细介绍了GD32 USB设备的架构,包括USB核心和USB引擎。它解释USB设备的工作原理和相关技术概念,帮助用户理解USB设备的工作流程。 其次,文档提供了GD32的USB设备驱动的详细信息,如USB设备寄存器的功能和设置方法。这些寄存器操作是开发USB应用程序的基础,开发者可以根据需求设置不同的寄存器来实现自己的USB设备功能。 另外,文档中还提供了GD32 USB设备的类库介绍,帮助开发者快速理解和使用这些类库。这些类库提供了各种功能,如CDC类、HID类和MSC类等。开发者可以根据自己的需求选择合适的类库,并根据类库中提供的接口和函数进行开发。 最后,文档附带了丰富的示例代码,用于帮助开发者更好地理解和使用GD32的USB库。这些示例代码涵盖了常见的应用场景,如虚拟串口通信、键鼠控制和USB存储等。开发者可以借鉴这些示例代码,快速完成自己的USB应用程序。 总之,GD32官方USB说明文档提供了全面的USB开发指南,帮助开发者充分利用GD32系列微控制器的USB功能。通过这份文档,开发者可以了解USB设备的工作原理和相关技术概念,掌握GD32 USB设备驱动的操作方法,使用类库和示例代码快速开发自己的USB应用程序。 ### 回答2: gd32官方USB说明文档是一份用于指导使用者在GD32微控制器上开发USB应用程序的重要文档。该文档详细介绍了如何使用官方提供的USB库进行USB功能的开发。以下是对该文档的回答: 首先,该文档首先介绍了GD32微控制器的USB功能的特点和优势。通过了解GD32微控制器的USB硬件架构和支持的USB设备类型,用户可以了解GD32微控制器如何实现各种USB应用。 其次,该文档详细介绍了如何配置和初始化GD32微控制器的USB模块。用户可以了解每个寄存器的功能和配置方法,以及如何使用官方提供的库函数进行初始化。 接下来,文档重点介绍了如何实现各种USB设备功能。例如,如何实现虚拟串口、HID设备、媒体设备等。对于每种设备类型,文档提供了示例代码和详细的说明,帮助用户理解和实现相应的功能。 另外,文档还介绍了USB中断和DMA传输的使用方法。用户可以了解如何配置和使用中断和DMA来提高USB数据传输的效率和可靠性。 最后,该文档提供了一些常见问题的解答,以及一些开发建议和注意事项。通过阅读这些内容,用户可以更好地解决问题,并提高USB应用程序的稳定性和性能。 总之,gd32官方USB说明文档是一个非常有用的参考资料,可以帮助用户理解和使用GD32微控制器的USB功能。无论是初学者还是经验丰富的开发者,都可以从中获益并加快自己的开发进度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值