问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

USB技术详解:从协议演变到STM32实现

创作时间:
作者:
@小白创作中心

USB技术详解:从协议演变到STM32实现

引用
CSDN
1.
https://blog.csdn.net/m0_61973119/article/details/141573143

USB(Universal Serial Bus)是一种串行总线标准,用于连接计算机系统与外部设备。从1996年第一个版本发布至今,USB已经发展了多个版本,每个版本都带来了传输速率和功能上的显著提升。本文将详细介绍USB的发展历程、技术原理以及在STM32微控制器上的具体实现方法。

一、USB发展历史

USB协议版本经历了多个阶段的发展,从最初的USB1.0到目前主流的USB3.0,传输速率有了显著提升。

  • USB1.0和USB1.1:只有低速模式(Low-Speed Mode)和全速模式(Full-Speed Mode),理论最大传输速率分别为1.5Mbps和12Mbps。
  • USB2.0:除了保留USB1.1的传输模式外,还增加了480Mbps的高速数据传输模式。虽然传输速度大幅提升,但其工作原理和模式与USB1.1保持一致,主要通过提高单位传输速率来实现性能提升。
  • USB3.0:最大传输速率理论值高达5Gbps,并引入了全双工数据传输机制。通过5根线路中2根发送数据、2根接收数据的设计,实现了同步全速的读写操作。


图1:USB3.0与USB2.0的物理接口对比

USB3.0与USB2.0的外观区别主要包括:

  • 颜色:USB3.0接口通常是蓝色,而USB2.0是黑色或白色(具体颜色可能因厂家而异)。
  • 插口引脚:USB3.0有9针脚,而USB2.0只有4针脚。
  • 标识:USB3.0插口旁边通常有“SS”标志,代表“SuperSpeed”。


图2:USB3.0与USB2.0接线对比

USB2.0接线包含4根用于数据传输的线,2根用于电源供应,剩下的3根则用于地线和屏蔽。

二、USB技术原理

2.1 USB概念

USB有多个版本,包括USB1.0/1.1/2.0/3.0。标准USB由4根线组成:VCC(电源)、GND(地线)、D+(数据正)、D-(数据负),其中D+和D-采用差分传输方式。在USB主机上,D-和D+都连接了15K的电阻到地,因此在没有设备接入时,D+、D-均是低电平。而在USB设备中,高速设备会在D+上接一个1.5K的电阻到VCC,低速设备则会在D-上接一个1.5K的电阻到VCC,主机通过检测这些电阻可以判断设备类型。

2.2 USB速度

USB2.0支持三种速度模式:

  • 低速(LS):支持1.5Mb/s的传输速率,主要用于交互式设备(如鼠标、键盘)。
  • 全速(FS):支持12Mb/s的传输速率,主要用于电话和音频设备(如麦克风、扬声器)。
  • 高速(HS):支持480Mb/s的传输速率,主要用于视频和存储设备(如打印机、相机)。

USB 2.0向后兼容以前的规范,因此高速设备还可以支持低速和全速信号。

2.3 USB模式

在单片机应用中,USB可以有多种应用场景:

  • OTG(On-The-Go):既可以作为USB主机,也可以作为USB设备。
  • USB Host:单片机作为主机,可以读取和传输USB中的数据。
  • USB Device:单片机作为从机,作为一个USB移动设备,通过USB连接到电脑上,类似于U盘。

USB设备还可以分为以下几类:

  • HID(Human Interface Device):人机接口设备,用于与人类交互,例如键盘、鼠标、游戏手柄等。
  • MSC(Mass Storage Class):大容量存储类,用于存储数据,例如闪存驱动器、移动硬盘等。
  • CDC(Communication Device Class):通信设备类,主要用于支持串行通信和数据传输。

2.4 设备状态

从完全分离到被USB Host完全识别并确保其功能,USB设备会经历连续的阶段:

  • Attached:设备物理连接到USB主机但尚未通电的阶段。
  • 已通电:设备连接到USB Host并刚刚通电的阶段。
  • Default:设备通电后由主机重置时进入的阶段,此时设备以默认地址(0)运行。
  • Addressed:设备从主机接收唯一地址后进入的阶段。
  • Configured:设备收到主机发送的配置编号不为零的便捷请求后进入的阶段。
  • Suspended:如果在取决于速度的已知时间段内没有流量数据,则设备必须进入此阶段。

三、USB引脚图

USB接口通常包含4个引脚,其中D+和D-用于差分信号传输,以提高抗噪能力和数据完整性。根据设备类型,USB设备可以分为两种:

  • 总线供电功能:完全依赖于来自上游集线器的总线电源。
  • 自供电功能:能够独立于总线提供自己的电源。


图3:USB引脚图(总线供电)


图4:USB引脚图(自供电)

四、STM32F407库函数配置USB

在STM32F407微控制器上配置USB需要进行以下步骤:

  1. 资料准备:准备SD卡带文件系统的基本工程和USB源码。
  2. 移植过程:将USB源码移植到STM32F407的工程中。
  3. 修改错误:解决编译过程中出现的错误,包括添加必要的头文件和宏定义,修改USB主机中断服务函数等。
  4. main.c函数:在主函数中初始化USB主机并循环调用USBH_Process函数以处理USB通信的核心状态机。

USB Host配置关键点

  • 时钟配置:USB时钟必须设置为48MHz。
  • 电源控制:USB主机需要提供5V电源,可以通过GPIO引脚控制或总线供电。
  • 中断处理:USB Host需要在主函数中循环调用USBH_Process函数以处理各种事务。

五、STM32CubeMX配置USB

使用STM32CubeMX配置USB为存储设备的步骤包括:

  1. 配置时钟:确保系统时钟正确配置。
  2. 配置USB模式:选择全速模式(没有PHY芯片的情况下)。
  3. 配置USB电源控制引脚:根据原理图配置电源控制引脚。
  4. 配置USB_HOST模式:选择USB主机模式。
  5. 配置FATFS文件系统:设置文件系统相关参数。
  6. 配置USB时钟:确保USB时钟为48MHz。
  7. 堆栈设置:适当增大堆栈大小以防止内存分配错误。

USB Host应用示例

在主函数中需要循环调用USBH_Process函数,用于处理USB主机通信的核心状态机。当检测到USB设备插入时,会自动跳转到用户自定义的应用函数,例如实现程序升级功能。

六、USB OTG原理简述

USB OTG(On-The-Go)技术允许设备在没有主机的情况下直接相互通信。USB OTG接口包含5条线:

  • 2条数据线(D+、D-)
  • 1条电源线(VBUS)
  • 1条接地线(GND)
  • 1条ID线,用于识别设备角色(主机或外设)

当OTG设备检测到接地的ID引脚时,表示默认的是主机,而检测到ID引脚浮空的设备则认为是外设。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号