stm32f4 USB项目开发详解
Posted shenlong1356
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stm32f4 USB项目开发详解相关的知识,希望对你有一定的参考价值。
一、USB简介
1.1、usb通信过程总体概况
usb通信步骤总体概况:
- 设备插到主机上
- 主机开始检测设备类型(高速/全速/低速)
- 复位设备
- 主机开始对设备枚举(根据枚举得到的各种信息加载合适的驱动程序,比如根据信息知道是一个鼠标设备,则加载鼠标的驱动程序对接下来的数据进行处理)
- 枚举完成后主机要查询有效端点是否有数据,有数据时设备自然会返还给主机
枚举过程总体概况
- 主机获取设备描述符(部分)
- 主机对从机设置设备地址(非零,相当于我们的学号id)
- 主机再次获取从机设备描述符(全部)
- 主机获取配置描述符(了解从机配置,接口,端点)情况
- 如果有字符串描述符还有获取字符串描述符
- 设置配置请求,就是激活配置,如果没有这一步对应的配置就不可用
- 针对不同的类,获取它们独特的类描述符(比如HID报告描述符)
注意:
上面的枚举1-4,6步骤是必须的
1.2、区分高速全速 低速设备的方法
d+上面接电阻:全速/高速设备 d- 上接电阻:低速设备
1.3、USB设备插拔检测机制
1.3.1、没有插上usb设备主机情况
D+和D-数据线上的下拉电阻起作用,使得二者都在低电平;主机端看来就是个SE0状态;同样地,当数据线上的SE0状态持续一段时间了,就被主机认为是断开状态
1.3.2、 插上usb设备时
当主机检测到某一个数据线电平拉高并保持了一段时间,就认为有设备连上来了
主机必需在驱动SE0状态以复位设备之前, 立刻采样总线状态来判断设备的速度
二、 USB端点 的四种传输类型
usb 四种传输类型是针对端点而言的,并不是usb整个传输过程为一种传输类型
1、控制传输(Control Transfers):
(一般用于枚举过程端点0,主机给从机发命令或回应状态时,这个过程是随机突发的的,也就是主机随时发命令,从机只能是待命)
2、大容量数据传输(Bulk Transfers):
大容量传输一般用于非零端点,并且针对大数据传输(如U盘),数据可以占用任意带宽,并容忍延迟 ,并且这个过程也是随机突发的,因为控制权在主机,用户随时要读取设备(u盘)数据,所以这个过程是非周期的
3、同步传输(Isochronous Transfers):
周期性的,持续性的传输,用于传输与时效相关的信息,并且在数据中保存时间戳的信息 比如(摄像头图像传输)
4、中断传输(Interrupt Transfers):
周期性,低频率,比如hid鼠标键盘,(主机是周期性查询端点有没有数据的,只要鼠标有动作,就可以往端点缓存送数据,等到主机查询的时候,数据就会被主机读走)所以在设备初始化的时候要初始化主机查询时间间隔
三、USB枚举过程
以上是关于stm32f4 USB项目开发详解的主要内容,如果未能解决你的问题,请参考以下文章