您的位置 首页 编程

根据STM32的USB枚举进程学习笔记(一)

之前使用ST官方的库以及网络的资料,完成了使用USBHID类进行STM32和PC机的通讯。由于其他原因并没有深入的分析,虽然实现了功能,但是…

之前运用ST官方的库以及网络的材料,完结了运用USB HID类进行STM32和PC机的通讯。我们其他原因并没有深化的剖析,尽管完结了功用,可是关于USB设备的枚举,以及详细的通讯方法都没有明晰的概念,所以现在回头从头学习USB相关常识。首要参考材料是《圈圈教你玩USB》、USB枚举进程图解,ST官方的USB HID例程。

一,USB数据包
1.USB数据包分类

USB总线上的数据传输以包为根本的单位。USB协议规则了四种包:令牌包、数据包、握手包、特别包。不同的包经过包中的8位PID域委任。

  • 令牌包

令牌包用于发动一次USB传输,USB的数据传输有必要由主机建议。令牌包有四种:

输出令牌包(OUT):用来告诉设备酿制输出一个数据包。 数据方向 主机–>设备

输入令牌包(IN):用来告诉设备酿制回来一个数据包。数据方向 设备–>主机

树立令牌包(SETUP):告诉设备酿制输出一个数据包,相似OUT包。不过SETUP包只能往端点0发包,只用在操控传输中。

帧开始包(SOF):用于帧计数,USB全速设备每毫秒发生一帧,USB高速设备每125μS发生一帧。

OUT , IN, SETUP包的结构:同步域+8位PID+7位地址+4位端点号+5位CRC校验+包结束符EOP

  • 数据包

数据包用来传输数据,分红DATA0. DATA1 。数据格局如下

同步域+8位PID+N个字节的数据+CRC16校验+包结束符EOP

  • 握手包

握手包用来一共一个传输是否被对方结语,有ACK,NAK,STALL,NYET。

ACK:一共正确的接纳数据并且有满足的空间包容数据。主机和设备都能够运用ACK来结语,NAK,STALL,NYET只能够用于设备回来,主机不能运用。

NAK:一共没有数据需求回来,或许数据正确接纳可是没有空间包容。当主机收到NAK后,知道设备还未准备好,主机会在适宜的时分从头进行数据传输。

STALL:一共设备无法碑文该恳求,或许端点现已被挂起。

NYET:USB高速设备顶用。

握手包的格局:同步域+8位PID+包结束符EOP

2. 数据包的处理

在传输进程中,详细的处理细节由USB接口的芯片处理完结。

当USB接口芯片正确接纳到数据时,假如有空间保存,则它将数据保存并回来ACK,一起,设置一个标志一共现已正确接纳到数据;假如没有空间保存数据,则主动回来NAK。

收到输入恳求时,假如有数据需求发送,则发送数据,并等候接纳ACK。只要到数据成功发送出去(即接纳到ACK标志后),它才设置标志,一共数据已成功发送;假如无数据需求发送,则它主动回来NAK。

一般只需依据芯片供给的一些标志,准备要发送的数据到端点,或许从端点读取接纳到的数据即可。

二 ,USB业务

尽管USB界说了数据在总线上传输的根本单位是包,为了传输数据,有必要依照必定的联系把这些不同的包安排成业务才干传输数据。业务一般由两个或许三个包组成:令牌包、数据包和握手包。

令牌包用来发动一个业务,总是由主机发送;数据包用来传送数据,能够从主机到设备,也能够由设备到主机,方向由令牌包来指定;握手包用来指定数据传输成果。

三,USB传输类型

USB规则了4种传输类型:批量传输、等时传输、中止传输、操控传输。其间前三个传输一次数据都是一个业务;操控传输包括三个进程,树立进程和状况进程分别是一个业务,数据进程则或许包括多个业务。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/biancheng/265701.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部